Skip to content

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
manala up

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). Téléchargez la clé privé plutôt que de le copier

Manuellement🔗

1
ssh-keygen -t ed25519 -C "app-target"

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 release
  • trigger-deploy@* : Pour deployer la dernière release
  • trigger-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
gh auth login

Last update: December 20, 2024