Sobes.tech
Middle

Como usar o GitLab CI para manter dados entre várias fases de construção?

sobes.tech IA

Resposta da IA

Para guardar dados entre as etapas de build no GitLab CI, são utilizados artefactos. Estes são ficheiros ou diretórios criados numa etapa e disponíveis nas seguintes.

A configuração no .gitlab-ci.yml é assim:

stages:
  - build
  - test
  - deploy

build_job:
  stage: build
  script:
    - echo "Resultado da build" > build_output.txt # Criar ficheiro
  artifacts:
    paths: # Especificar quais ficheiros/diretórios guardar
      - build_output.txt
    expire_in: 1 week # Tempo de retenção dos artefactos

test_job:
  stage: test
  script:
    - cat build_output.txt # Acesso ao ficheiro da etapa anterior
    - npm test
  needs: # Especificar dependência da etapa anterior
    - build_job

deploy_job:
  stage: deploy
  script:
    - deploy_script.sh
  needs:
    - test_job

Elementos-chave:

  • artifacts: Define quais ficheiros ou diretórios devem ser guardados após a execução da etapa.
  • paths: Lista de caminhos para ficheiros ou diretórios que se tornarão artefactos.
  • expire_in: Define por quanto tempo os artefactos estarão disponíveis.
  • needs: Indica explicitamente a dependência da etapa atual em relação à anterior. O GitLab CI irá automaticamente descarregar os artefactos das etapas indicadas antes de executar a atual.

Sem needs, o GitLab CI irá descarregar artefactos de todas as etapas anteriores na mesma ou em etapas anteriores, o que pode ser ineficiente. A declaração explícita com needs controla mais precisamente quais os artefactos que são descarregados.

Também é possível usar cache para guardar dependências, como pacotes instalados, mas este é destinado a acelerar reconstruções repetidas, não a transferir resultados de uma etapa para outra. Os artefactos são o mecanismo principal para transferir dados de saída entre etapas.