Je suis relativement nouveau dans GitHub Actions et j'ai 2 jobs - un qui exécute mes tests et un qui déploie mon projet sur un serveur.
Évidemment, je veux que les tests s'exécutent sur chaque branche, mais le déploiement ne devrait avoir lieu que lorsque quelque chose est poussé vers le maître.
J'ai du mal à trouver un moyen d'exécuter un travail sur une branche spécifique. Je sais qu'il est possible d'exécuter uniquement des workflows entiers sur une branche spécifique, mais cela signifierait que j'aurais un workflow "test" et un workflow "deploy" .
Cela ressemble à une solution, mais ils fonctionneraient en parallèle. Dans un monde idéal, les tests s'exécuteraient en premier et seulement s'ils réussissaient, le travail de déploiement commencerait. Ce n'est pas le cas lors de l'utilisation de 2 workflows distincts.
Comment pourrais-je y parvenir? Est-il possible d'exécuter jobs sur une branche spécifique?
Bien que vous ne puissiez pas avoir de conditions au niveau du travail en ce moment, vous pouvez avoir des conditions à l'étape niveau - voir Contextes et syntaxe d'expression pour les actions GitHub .
Pour obtenir un nom de branche, la solution actuelle consiste à vérifier GITHUB_REF
variable d'environnement - voir Variables d'environnement par défaut et cette question pour plus de détails.
Tout mettre ensemble - si vous décidez d'aller avec la réponse acceptée dans le dernier lien, votre flux de travail pourrait ressembler à ceci:
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Run tests
run: ./my-tests.sh
deploy:
runs-on: ubuntu-latest
needs: test
steps:
- name: Extract branch name
Shell: bash
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF##*/})"
id: extract_branch
- name: Deploy
run: ./deploy.sh
if: steps.extract_branch.outputs.branch == 'master'
Si vous préférez tout conserver dans un fichier de workflow au lieu d'un script séparé, vous pouvez toujours ajouter if
à chaque étape du travail donné.
J'espère que ce n'est qu'une solution/solution temporaire, et que les conditions de travail seront ajoutées avant la fin de la version bêta.