Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Share artifacts between workflows / Github Actions

Tags:

I know that you can share artifacts between jobs of the same workflow...

But how can I share artifacts across different workflows?

like image 809
Hitmands Avatar asked Feb 22 '20 19:02

Hitmands


People also ask

How do I trigger a workflow from another workflow in GitHub Actions?

If you do want to trigger a workflow from within a workflow run, you can use a personal access token instead of GITHUB_TOKEN to trigger events that require a token. You'll need to create a personal access token and store it as a secret.

How do I download artifacts from GitHub Actions?

Under your repository name, click Actions. In the left sidebar, click the workflow you want to see. From the list of workflow runs, click the name of the run to see the workflow run summary. Under Artifacts, click the artifact you want to download.

Can you CD in GitHub Actions?

GitHub Actions makes it easy to automate all your software workflows, now with world-class CI/CD. Build, test, and deploy your code right from GitHub.


2 Answers

GitHub has now added a REST API for downloading artifacts. Basically you do

GET repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format} 

And then you'll have to look for Location: in the response, and then access that url to download the artifact. The url is valid for 1 minute.

There's a GitHub Action that uses the API above that you can easily add to your workflow. I use it like this

- name: Download artifact   uses: dawidd6/action-download-artifact@v2   with:     workflow: ${{ github.event.workflow_run.workflow_id }}     workflow_conclusion: success 

Read more about it here: https://github.com/dawidd6/action-download-artifact

like image 174
Tobbe Avatar answered Sep 19 '22 10:09

Tobbe


Probably not yet doable:

After a workflow ends, you can download an archive of the uploaded artifacts on GitHub by finding the workflow run in the Actions tab. GitHub does not currently offer a REST API to retrieve uploaded artifacts.

If you need to access artifacts from a previously run workflow, you'll need to store the artifacts somewhere. For example, you could run a script at the end of your workflow to store build artifacts on Amazon S3 or Artifactory, and then use the storage service's API to retrieve those artifacts in a future workflow.

https://help.github.com/en/actions/configuring-and-managing-workflows/persisting-workflow-data-using-artifacts#sharing-data-between-workflow-runs

like image 22
Hitmands Avatar answered Sep 20 '22 10:09

Hitmands