Github actions share workspace/artifacts between jobs?
Solution 1:
You can use the Github Actions upload-artifact and download-artifact to share data between jobs.
In 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
And 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
Solution 2:
If you are using the upload/download GitHub Actions, beware of the structure of the artifact.
Starting January 2020, see "GitHub Actions: Changes to artifact download experience":
We have changed the artifact download experience in GitHub Actions so it no longer adds an extra root directory to the downloaded archive.
Previously, if you uploaded the following files and folders as an artifact named
foo
, the downloaded archive would contain the following structure:foo/ |-- file1.txt |-- dir1/ | |-- dir1-file1.txt
Now, you will get an archive that only contains the files and folders you uploaded:
file1.txt dir1/ |-- dir1-file1.txt