1. ホーム
  2. github

[解決済み] Githubアクションでジョブ間のワークスペース/アーティファクトを共有する?

2022-11-13 05:45:33

質問

Github のベータ版アクションを使おうとして、コードをビルドするジョブと、コードをデプロイするジョブの 2 つを持っています。しかし、私はデプロイジョブでビルドアーチファクトを取得することができないようです。

私の最新の試みは、ドキュメントによると、各ジョブに対して同じボリュームを持つコンテナ イメージを手動で設定することです。 https://help.github.com/en/articles/workflow-syntax-for-github-actions#jobsjob_idcontainervolumes

コンテナが使用するボリュームのアレイを設定します。ボリュームを使用して、ジョブ内のサービスまたは他のステップ間でデータを共有することができます。名前付きDockerボリューム、匿名Dockerボリューム、またはホスト上のバインドマウントを指定することができます。

ワークフロー

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

最初のジョブ(build)にはビルドディレクトリがありますが、2番目のジョブ(deploy)が実行されるとビルドディレクトリはなく、ソースコードのみが格納されます。

このプロジェクトは Mono リポジトリであり、デプロイしようとしているコードはパス server であるため、すべての working-directory のフラグが立ちます。

どのように解決するのですか?

Github Actions の upload-artifact と download-artifact を使って、ジョブ間でデータを共有することができます。

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

そしてjob2。

steps:
- uses: actions/checkout@master

- uses: actions/download-artifact@master
  with:
    name: my-artifact
    path: path/to/artifact
    
- run: cat path/to/artifact/world.txt

https://github.com/actions/upload-artifact

https://github.com/actions/download-artifact