Questão nº 31
Questão de Análise de Sistemas · FGV TJDFT 2022 (nº 31)
O analista Mateus configurou um pipeline CI/CD para o projeto TJApp no GitLab. O repositório de TJApp denomina-se TJAppRepo. Mateus precisou controlar o comportamento do pipeline de TJApp condicionando o início de sua execução aos eventos de push de tags para o TJAppRepo.
Para aplicar essa condição ao pipeline de TJApp, Mateus precisou modificar o arquivo `.gitlab-ci.yml` na raiz de TJAppRepo, adicionando uma regra na seção:
- Adefault;
- Binclude;
- Cstages;
- Dvariables;
- Eworkflow. (alternativa correta)
Resposta comentada
Gabarito Alternativa E
O workflow é a seção do .gitlab-ci.yml que controla regras globais do pipeline, como quando ele deve ser criado ou não. É lá que você define condições de execução que valem para o pipeline inteiro, por exemplo, "só rodar quando houver push de tag".
- (A) Incorreta:
defaultdefine valores padrão para jobs (comoimageoubefore_script), não controla quando o pipeline inicia. - (B) Incorreta:
includeserve para importar arquivos YAML externos (dividir a configuração), não para condicionar a execução do pipeline. - (C) Incorreta:
stagesdefine a ordem das etapas (build, test, deploy), mas não tem relação com eventos de push ou tags. - (D) Incorreta:
variablesdefine variáveis de ambiente globais ou por job, não é usada para regras de disparo do pipeline. - (E) Correta: a chave
workflowpermite usar a palavra-chaverulespara controlar quando o pipeline é criado, comoif: $CI_COMMIT_TAG, que atende exatamente à necessidade de condicionar a execução a push de tags.
Armadilha do distrator mais tentador (C): a banca coloca stages para você pensar que "etapas" controlam o fluxo do pipeline. Mas stages só organiza a ordem de execução dos jobs já existentes; quem decide se o pipeline vai rodar é o workflow.
Fonte: FGV TJDFT 2022 Analista Judiciário - Análise de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.