Действия Github разделяют рабочее пространство/артефакты между заданиями?
Пытаясь использовать бета-действия Github, у меня есть две работы, одна для создания кода, а другая для развертывания кода. Однако я не могу получить артефакт сборки в задании на развертывание.
Моя последняя попытка - вручную установить изображение контейнера с одинаковыми объемами для каждого задания, в соответствии с документацией это должно быть решением: https://help.github.com/en/articles/workflow-syntax-for-github-actions#jobsjob_idcontainervolumes
Устанавливает массив томов для контейнера. Вы можете использовать тома для обмена данными между службами или другими этапами работы. Вы можете указать именованные тома Docker, анонимные тома Docker или привязать монтирования на хосте.
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/[email protected]
- 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/[email protected]
- run: ls
working-directory: server
- run: gcloud --version
Первое задание (сборка) имеет каталог сборки, но при запуске второго задания (развертывание) оно не содержит и содержит только исходный код.
Этот проект представляет собой моно репо с кодом, который я пытаюсь развернуть, находясь по пути server
, отсюда и все флаги working-directory
.
Ответы
Ответ 1
Вы можете использовать артефакт загрузки Github Actions и артефакт загрузки для обмена данными между заданиями.
В job1:
steps:
- uses: actions/[email protected]
- run: mkdir -p path/to/artifact
- run: echo hello > path/to/artifact/world.txt
- uses: actions/[email protected]
with:
name: my-artifact
path: path/to/artifact
И job2:
steps:
- uses: actions/[email protected]
- uses: actions/[email protected]
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