web-dev-qa-db-fra.com

Les actions Github partagent l'espace de travail / artefacts entre les travaux?

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.

36
Labithiotis

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

17
Tyler Carberry

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
3
VonC