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

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

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

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