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” (par exemple). Les étapes de l’intégration continue sont décrites dans le fichier .gitlab-ci.yml.

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

  • Les variables obligatoires pour le déploiement sont définies par Bearstech:

    • DEPLOY_HOST : nom de la machine hôte
    • DEPLOY_USER : utilisateur autorisé à déployer
    • DEPLOY_KEY : clé de l’utilisateur
    • DEPLOY_HOST_KEY : permet d’authentifier l’hôte
  • Les variables spécifiques à la pipeline 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)

    • 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:

default:
  image: bearstech/deploy

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