En essayant d'utiliser les actions bêta de Github, j'ai deux tâches, l'une qui construit le code et l'autre qui déploiera le code. Cependant, je n'arrive pas à obtenir l'artefact de génération dans le travail de déploiement.
Ma dernière tentative est de définir manuellement une image de conteneur avec les mêmes volumes pour chaque travail, selon les documents, cela devrait être une solution: https://help.github.com/en/articles/workflow-syntax-for- github-actions # jobsjob_idcontainervolumes
Définit un tableau de volumes à utiliser par le conteneur. Vous pouvez utiliser des volumes pour partager des données entre des services ou d'autres étapes d'un travail. Vous pouvez spécifier des volumes Docker nommés, des volumes Docker anonymes ou des montages de liaison sur l'hôte.
Workflow
name: CI
on:
Push:
branches:
- master
paths:
- .github/workflows/server.yml
- server/*
jobs:
build:
runs-on: ubuntu-latest
container:
image: docker://node:10
volumes:
- /workspace:/github/workspace
steps:
- uses: actions/checkout@master
- run: yarn install
working-directory: server
- run: yarn build
working-directory: server
- run: yarn test
working-directory: server
- run: ls
working-directory: server
deploy:
needs: build
runs-on: ubuntu-latest
container:
image: docker://google/cloud-sdk:latest
volumes:
- /workspace:/github/workspace
steps:
- uses: actions/checkout@master
- run: ls
working-directory: server
- run: gcloud --version
Le premier travail (build) a un répertoire de construction, mais lorsque le deuxième travail (deploy) s'exécute, il n'en contient pas et ne contient que le code source.
Ce projet est un repo mono avec du code que j'essaie de déployer étant sous le chemin server
d'où tous les working-directory
drapeaux.
Vous pouvez utiliser le téléchargement-artefact et le téléchargement-artefact des actions Github pour partager des données entre les travaux.
Dans job1:
steps:
- uses: actions/checkout@v1
- run: mkdir -p path/to/artifact
- run: echo hello > path/to/artifact/world.txt
- uses: actions/upload-artifact@master
with:
name: my-artifact
path: path/to/artifact
Et job2:
steps:
- uses: actions/checkout@master
- uses: actions/download-artifact@master
with:
name: my-artifact
path: path/to/artifact
- run: cat path/to/artifact
https://github.com/actions/upload-artifact
https://github.com/actions/download-artifact
Si vous utilisez les actions GitHub de téléchargement/téléchargement, méfiez-vous de la structure de l'artefact.
À partir de janvier 2020, voir " Actions GitHub: modifications de l'expérience de téléchargement d'artefacts ":
Nous avons modifié l'expérience de téléchargement d'artefact dans les actions GitHub afin de ne plus ajouter de répertoire racine supplémentaire à l'archive téléchargée .
Auparavant, si vous téléchargiez les fichiers et dossiers suivants en tant qu'artefact nommé
foo
, l'archive téléchargée contiendrait la structure suivante:foo/ |-- file1.txt |-- dir1/ | |-- dir1-file1.txt
Maintenant, vous obtiendrez une archive qui ne contient que les fichiers et dossiers que vous avez téléchargés:
file1.txt dir1/ |-- dir1-file1.txt