← Questões de Engenharia de Software

Engenharia de Software · FGV · 2023

Questão comentada de Engenharia de Software

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:

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.

Continue treinando

Questões relacionadas