1
resposta

[Dúvida] Não entendi a resposta certa da pergunta do link: https://cursos.alura.com.br/course/integracao-continua-pipelines-testes-automatizados-github-actions/task/166277

Não entendi a resposta certa da pergunta do link: https://cursos.alura.com.br/course/integracao-continua-pipelines-testes-automatizados-github-actions/task/166277. Em nenhum momento do curso fala e nem se quer no exemplo explica sobre o download do codigo fonte, muito menos na questão. Apenas faz questão sobre upload de arquivo.

1 resposta

Olá, Eduardo. Como vai?

É muito comum ter essa dúvida, especialmente quando o foco da aula e da atividade estava centrado na ação de upload do artefato em si. Vou te explicar o motivo do download do código fonte ser uma etapa obrigatória e por que ele aparece na resposta.

Quando executamos uma pipeline no GitHub Actions, o ambiente de execução (o runner) é provisionado como uma máquina virtual completamente vazia. Ele não contém os arquivos do seu repositório por padrão.

Para que você consiga gerar um artefato (seja compilando um projeto, rodando testes para gerar um relatório ou empacotando arquivos), o código do seu projeto precisa existir fisicamente dentro dessa máquina virtual. É exatamente aí que entra a etapa de download do código fonte, que no ecossistema do GitHub Actions é feita através da action actions/checkout.

  • O checkout faz o clone do seu repositório para dentro do runner.
  • Sem essa etapa, qualquer comando de build ou geração de artefato vai falhar porque não encontrará os arquivos.
  • Consequentemente, a action de upload (actions/upload-artifact) não teria absolutamente nada para capturar e enviar, pois o diretório estaria vazio.

Mesmo que o título da aula seja sobre o upload, exercícios de CI/CD costumam cobrar o entendimento do fluxo de dependência entre os passos. O upload é impossível sem o download prévio do código fonte.

Veja um exemplo prático de como essas etapas são dependentes no script:

steps:
  - name: Faz o download do codigo fonte para a maquina virtual
    uses: actions/checkout@v3

  - name: Gera o artefato (Exemplo de build)
    run: npm run build

  - name: Faz o upload do artefato gerado no passo anterior
    uses: actions/upload-artifact@v3
    with:
      name: pacote-build
      path: ./build

Note que a action de upload exige um path (caminho), e esse caminho só passa a existir com os arquivos corretos se o actions/checkout tiver sido executado lá no início da pipeline.

Espero que possa ter lhe ajudado!