Deployer un projet avec les Github Actions🔗
Pour fonctionner le projet doit utiliser Manala avec la recipe elao.app.docker
.
En prenant exemple sur la section Deliveries du fichier .manala/README.md
, déclarer les différentes cibles.
Puis pour chaque cible vous devez définir la clé github_ssh_key_secret
en indiquant comme valeur le nom d'un secret
défini sur Github. (généralement on part sur SSH_DEPLOY_KEY_PRODUCTION
et SSH_DEPLOY_KEY_STAGING
)
1 |
|
Création des Github Actions🔗
Créer les fichiers pour Github en recopiant l'exemple fourni dans .manala/github/deliveries/README.md
Vous devriez avoir 2 fichiers :
.github/workflows/release.yaml
.github/workflows/deploy.yaml
Générer une clé secrète par cible🔗
Avec 1Password🔗
Depuis 1Password 8, il est possible de générer directement des clés SSH et de les enregistrer dans le coffre partagé.
Warning
Lorsque vous souhaiterez exploiter la clé privée, notamment lors de la configuration de celle-ci
en tant que secret sur Github, il vous faudra la télécharger depuis le client lourd 1Password,
et non simplement la copier (la copie propose la clé dans un format inadéquat).
Manuellement🔗
1 |
|
N'oubliez pas de sauvegarder ces clés dans 1Password (par convention, on crée une note sécurisée qui va contenir l'ensemble des clés).
Configuration des secrets sur Github🔗
Dans Settings / Secrets / Actions
, rajouter un secret par cible
(dans mon cas SSH_DEPLOY_KEY_PRODUCTION
& SSH_DEPLOY_KEY_STAGING
).
Le secret doit contenir la clé privée générée précédemment.
Configuration du dépôt de release🔗
Selon que vous utilisiez Github ou Gitlab en tant que repository hébergeant les releases, référez-vous à la section correspondante ci-dessous.
Github🔗
Au niveau de votre dépôt de release, sous Settings / Deploy Keys
vous devez rajouter les clés publiques pour chacune
des cibles.
Gitlab🔗
Au niveau de votre dépôt de release, sous Settings / Repositories / Deploy Keys
vous devez rajouter les clés publiques
pour chacune des cibles.
Connexion au serveur distant🔗
Vous devez transmettre toutes les clés publiques générées précédemment à l'équipe qui gère le serveur.
Utilisation🔗
Après avoir tout configuré, un appel à manala up
va créer tous les fichiers nécessaires ;
vous avez maintenant accès à plusieurs cibles make:
trigger-release@*
: Pour créer une nouvelle releasetrigger-deploy@*
: Pour deployer la dernière releasetrigger-release+deploy@*
: Pour créer et deployer une release
Note
Ces cibles requièrent l'installation sur votre poste de l'exécutable github cli, ou bien d'être appelé depuis le conteneur Manala, lequel contient déjà celui-ci.
Il vous faudra a minima vous authentifier une première fois en utilisant :
1 |
|