Действия Github разделяют рабочее пространство/артефакты между заданиями? - программирование
Подтвердить что ты не робот

Действия 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.

4b9b3361

Ответ 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