Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] Artefato funcionando sem download?

Fiquei um pouco confuso nesse caso. Assim que completei os passos da aula anterior, inserindo no Arquivo go.yml a parte de criar o artefato após a build, e fiz o push para o repositório não houve nenhum problema. O esperado era que falhasse por não estar fazendo o download do artefato, certo? Porém correu tudo bem, o fluxo foi executado com sucesso e o upload da imagem foi feito no Docker Hub. Tentei ler os logs da ação para ver se isso foi algum tipo de atualização do Actions, mas não encontrei nada.

Alguém saberia me explicar por que o fluxo foi executado com sucesso sem realizar o Download do Artefato criado?

Print do Docker.ymlPrint go.yml 1Print go.yml 2

3 respostas

O fluxo funcionou porque o artefato criado no job "Build" já estava disponível dentro do ambiente de execução do job 'docker', sendo assim ele não precisava baixar o artefato novamente e garantindo a persistência de dados. Basicamente, o actions roda dentro de runners ou se preferir (VM), se o job build foi executado sem erros e gerou o artefato, o actions permite que os próximos jobs usem o mesmo artefato sem ter que recorrer novamente os ciclos.

solução!

Olá, Raphael!

Pelo que você descreveu, parece que o fluxo de trabalho no GitHub Actions foi executado com sucesso sem a necessidade de fazer o download do artefato. Vamos analisar o que pode estar acontecendo.

  1. Verificação do Artefato:

    • Primeiramente, verifique se o artefato está sendo realmente criado e armazenado. No seu arquivo go.yml, você tem a etapa de upload do artefato:
      - name: Upload a Build Artifact
        uses: actions/upload-artifact@v4.3.6
        with:
          name: golang_CI
          path: main
      
    • Certifique-se de que o artefato está sendo salvo corretamente com o nome golang_CI.
  2. Download do Artefato:

    • No arquivo Docker.yml, você mencionou que deveria ter uma etapa para baixar o artefato antes de construir e enviar a imagem Docker. No entanto, pela imagem fornecida, não vejo essa etapa no seu Docker.yml. O código deveria incluir algo como:
      - name: Download a Build Artifact
        uses: actions/download-artifact@v3.0.0
        with:
          name: golang_CI
      
    • Essa etapa deve ser adicionada antes da etapa de Build and push Docker images.
  3. Execução sem Download:

    • Se o fluxo foi executado com sucesso sem o download do artefato, pode ser que o código necessário para a construção da imagem Docker já esteja presente no repositório ou em algum cache, e não dependa diretamente do artefato que você criou.
  4. Logs e Debugging:

    • Verifique os logs detalhados das execuções do GitHub Actions. Eles podem fornecer pistas sobre o que está acontecendo. Procure por mensagens que indiquem se o artefato foi necessário ou não durante a construção da imagem Docker.
  5. Atualizações no GitHub Actions:

    • É possível que tenha havido alguma atualização nas ações do GitHub que alterou o comportamento esperado. No entanto, sem evidências nos logs, é difícil confirmar isso.

Recomendo adicionar a etapa de download do artefato no seu Docker.yml e verificar se isso altera o comportamento. Caso contrário, os logs detalhados serão a melhor fonte de informações para entender o que está acontecendo.

Espero ter ajudado e bons estudos!

Eu fiz a adição do código que faz o download do artefato e continuou funcionando normalmente, mas notei nos logs que dois artefatos estavam sendo criados: Um com o nome golang_CI e um com um nome que eu não atribuí. Pode ser que seja realmente alguma atualização do GitHub Actions, apesar de ter verificado a documentação de algumas das ações utilizadas e não ter encontrado nenhuma menção disso. De qualquer forma, agradeço a atenção!!