A analista Ana configurou o pipeline MainPipe no GitLab CI/CD da PGM de Niterói. O MainPipe possui um único job, o BuildJob, que automatiza o processo de build da aplicação PGMApp. O build de PGMApp é realizado em um container Docker e demanda a execução de um banco de dados em outro container Docker. A fim de aproveitar os recursos de integração do GitLab CI/CD com o Docker, Ana especificou as imagens Docker necessárias ao build diretamente no arquivo .gitlab-ci.yml do MainPipe, no trecho associado ao BuildJob. Logo, Ana especificou a imagem Docker para o build e a imagem Docker para o banco de dados, respectivamente, nas subseções do .gitlab-ci.yml:
- A)image e services;
Correta: image define a imagem principal do job e services define containers auxiliares, como o banco de dados.
- B)image e artifacts;
Errada: artifacts serve para armazenar arquivos gerados, nao para indicar imagem de execucao ou banco.
- C)workflow e services;
Errada: workflow controla a criacao do pipeline, e services ate aparece com banco, mas nao substitui image para o build.
- D)workflow e artifacts;
Errada: workflow nao define imagem de build, e artifacts nao representa container de banco de dados.
- E)artifacts e workflow.
Errada: artifacts nao indica imagem Docker e workflow nao tem relacao com o container do banco no job.
Gabarito: A
No GitLab CI/CD, o arquivo .gitlab-ci.yml funciona como o mapa da execução do pipeline. Se voce quer dizer qual imagem Docker vai rodar o job, o lugar certo e a chave image. Ela define o ambiente principal em que o job sera executado, como se fosse o “quarto” onde a tarefa acontece. Ja quando o job precisa de outro container para prestar apoio, como um banco de dados, entra a chave services. Ela sobe containers auxiliares junto com o job, muito usada para bancos, filas e outros servicos de teste ou build. Na pratica, o job principal usa image e os containers de suporte ficam em services. As chaves artifacts e workflow nao servem para isso. Artifacts guardam saidas do job, como arquivos gerados, logs ou binarios, enquanto workflow controla se o pipeline como um todo deve ou nao ser criado. Ou seja: uma coisa e executar com a imagem certa, outra e guardar resultado ou decidir se o pipeline nasce. Por isso o gabarito A esta correto: a imagem Docker do build fica em image, e a imagem Docker do banco de dados fica em services. Essa e a combinacao padrao no GitLab CI/CD e aparece justamente para permitir que um job rode em um container principal com um ou mais containers de apoio.