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
フラグ。
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
アップロード/ダウンロードのGitHubアクションを使用している場合は、アーティファクトの構造に注意してください。
2020年1月以降、「 GitHubアクション:アーティファクトダウンロードエクスペリエンスの変更 」を参照してください。
GitHubアクションのアーティファクトダウンロードエクスペリエンスを変更したため、ダウンロードしたアーカイブに余分なルートディレクトリが追加されなくなりました。
以前は、以下のファイルとフォルダーを
foo
という名前のアーティファクトとしてアップロードした場合、ダウンロードしたアーカイブには次の構造が含まれていました。foo/ |-- file1.txt |-- dir1/ | |-- dir1-file1.txt
これで、アップロードしたファイルとフォルダーのみを含むアーカイブが取得されます。
file1.txt dir1/ |-- dir1-file1.txt