Déploiement natif
Sur cette page
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ôteDEPLOY_USER
: utilisateur autorisé à déployerDEPLOY_KEY
: clé de l’utilisateurDEPLOY_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.
.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.