Gitlab

Déploiement natif

Cette méthode de déploiement automatisé réalise les étapes d’installation / mise à jour / configuration à destination de projets qui ne nécessitent pas de conteneurisation (projets LAMP ou à base de frameworks de génération de pages statiques).

Elle peut s’intégrer dans une pipeline de la CI de Gitlab, et son principe repose simplement sur Git, en indiquant la branche à partir de laquelle on souhaite déployer le code dans le fichier .gitlab-ci.yml.

Sources

Le projet est hébergé dans un Gitlab, dans un répertoire nommé “web”. Les étapes de l’intégration continue sont décrites dans le fichier .gitlab-ci.yml. Ces fichiers doivent se trouver à la racine du projet.

web/
.gitlab-ci.yml

Variables

  • Le script de deploiement s’appelle via la commande deploy que vous pouvez préfixer ainsi pour le déploiement en production: PROD=true deploy

  • Variables d’environnement de la pipeline (elles sont définies dans les settings CI/CD du projet ou dans le fichier .gitlab-ci.yml):

    • DOMAIN: Pour le déploiement en production, cette variable doit être spécifiée pour la création de la configuration Apache (contrairement à la préproduction où l’URL est automatiquement définie par nom-du-projet.preprod.bearstech.com).

    • BASIC_AUTH: vous servira à protéger le site par mot de passe via la variable contenant le mot de passe. Le user de l’auth correspond au nom du projet (voir le mini projet de démo, ci-dessous)

    • TARGET: identifie le serveur vers lequel le déploiement doit avoir lieu. Facultatif quand une seule machine est utilisée.

    • LETSENCRYPT: La gestion des certificats peut être forcée ou non selon le serveur cible (LETSENCRYPT est forcé à true sur le serveur de preprod). Si vous avez un certificat déjà existant pour un environnement de production, il faudra nous le transmettre.

    Variables uilisées par la CI dans Gitlab

.gitlab-ci.yml

A la racine du projet, placer le fichier .gitlab-ci.yml avec le contenu ci-dessous:

stages:
  - deploy-preprod
  - deploy-prod

staging:
  stage: deploy-preprod
  environment:
    name: preprod
  script:
    - deploy

production:
  stage: deploy-prod
  environment:
    name: prod
  script:
    - PROD=true deploy
  only:
    refs:
      - main
  when: manual

De cette manière, le déploiement se fait automatiquement sur la préproduction à chaque commit. Pour la production, le déploiement se déclenche uniquement pour les commits sur la branche ‘main’ et via une action manuelle de votre part.

NB: Cette méthode ne déploie en production que sur la branche “main” du projet et via une demande explicite de votre part. Tous les commits sur les branches de développement seront déployés sur la préproduction.

Top