web-dev-qa-db-ja.com

Githubアクションはジョブ間でワークスペース/アーティファクトを共有しますか?

Githubのベータアクションを使用しようとすると、2つのジョブがあります。1つはコードをビルドし、もう1つはコードをデプロイします。ただし、デプロイジョブでビルドアーティファクトを取得できないようです。

私の最新の試みは、各ジョブに対して同じボリュームでコンテナイメージを手動で設定することです。ドキュメントによれば、これは解決策であるはずです 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

最初のジョブ(ビルド)にはビルドディレクトリがありますが、2番目のジョブ(デプロイ)を実行すると、ビルドされず、ソースコードのみが含まれます。

このプロジェクトは、パスserverの下に配置しようとしているコードを含むモノリポジトリです。したがって、すべてのworking-directoryフラグ。

36
Labithiotis

Githubアクションのupload-artifactおよびdownload-artifactを使用して、ジョブ間でデータを共有できます。

ジョブ1の場合:

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

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

17
Tyler Carberry

アップロード/ダウンロードのGitHubアクションを使用している場合は、アーティファクトの構造に注意してください。

2020年1月以降、「 GitHubアクション:アーティファクトダウンロードエクスペリエンスの変更 」を参照してください。

GitHubアクションのアーティファクトダウンロードエクスペリエンスを変更したため、ダウンロードしたアーカイブに余分なルートディレクトリが追加されなくなりました

以前は、以下のファイルとフォルダーをfooという名前のアーティファクトとしてアップロードした場合、ダウンロードしたアーカイブには次の構造が含まれていました。

foo/
 |-- file1.txt
 |-- dir1/
 |    |-- dir1-file1.txt

これで、アップロードしたファイルとフォルダーのみを含むアーカイブが取得されます。

file1.txt
dir1/
|-- dir1-file1.txt
3
VonC