DEV Community

Thiago (Zozô) Ozores
Thiago (Zozô) Ozores

Posted on • Edited on

3 3

[PT-BR] Github Actions: Compartilhando artefatos entre jobs

Esta vai ser uma dica rápida.

Outro dia configurando um pipeline no Github Actions, eu tive a necessidade de usar um arquivo gerado em um job em um outro job, que estavam usando diferentes sistemas operacionais.

É bem simples fazer isso, tudo que você precisa é destas duas actions: upload-artifact e download-artifact

Aqui está um exemplo:

job1:

  runs-on: ubuntu-latest
  steps:
  - uses: actions/checkout@v1

  - run: mkdir -p dist

  - run: echo hello > dist/world.txt

  - uses: actions/upload-artifact@master
    with:
      name: hello-world-artifact
      path: dist/world.txt

job2:
  runs-on: macos-latest

  steps:
  - run: mkdir -p dist

  - uses: actions/download-artifact@master
    with:
      name: hello-world-artifact
      path: dist/world.txt

  - run: cat dist/world.txt
Enter fullscreen mode Exit fullscreen mode

Código-fonte e documentação das actions:

DICA BÔNUS
Eu também tive a necessidade de fazer o download de um arquivo do Releases do Github, para isso eu usei esta action dsaltares/fetch-gh-release-asset@master de terceiros, mas a desvantagem é que esta action apenas roda em Linux (por isso que eu precisei copiar um artefato de um job em outro ;-) )

Aqui está um exemplo:

uses: dsaltares/fetch-gh-release-asset@master
with:
  repo: "your-user/your-repo"
  version: "latest"
  file: "package.zip"
  target: "dist/package.zip"
  token: ${{ secrets.YOUR_TOKEN }} # Se o seu repo é privado, você precisa do access token
Enter fullscreen mode Exit fullscreen mode

Código-fonte e documentação da action dsaltares/fetch-gh-release-asset

Isso é tudo, pessoal! Obrigado e fique sintonia para mais dicas.

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay