Pular para o conteúdo principal

Questão de Engenharia de Software — Geral — CESPE / CEBRASPE 2025

Engenharia de SoftwareGeral
Código
ce417849
Banca
CESPE / CEBRASPE
Órgão
STM
Ano
2025
Cargo
AJ ( )

A respeito de CI/CD (continuous integration/continuous delivery), julgue o próximo item.

 

No trecho de arquivo .gitlab-ci.yml, utilizado no GitLab CI/CD para definir regras de execução de pipelines, só será criada a pipeline se as três regras de ativação do workflow.rules forem verdadeiras.

 

workflow:
  rules:
    -     if:     $  CI_PIPELINE_SOURCE    ==
'merge_request_event'
    - if: $ CI_COMMIT_TAG
    -      if:      $ CI_COMMIT_BRANCH     ==
$ CI_DEFAULT_BRANCH

  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

GitLab CI/CD: regras de ativação do workflow

Gabarito: Errado (E). No GitLab CI/CD, as regras definidas em workflow.rules são avaliadas de forma independente e a pipeline é criada se qualquer uma delas for verdadeira (lógica OR), e não se todas forem verdadeiras (lógica AND). O trecho apresentado contém três regras que, na verdade, são alternativas entre si: se o pipeline for originado de um merge request, OU se houver uma tag, OU se o branch for o default, a pipeline será criada.

O workflow.rules é um recurso do GitLab CI/CD que permite controlar quando uma pipeline deve ser criada, avaliando condições baseadas em variáveis predefinidas, como CI_PIPELINE_SOURCE, CI_COMMIT_TAG e CI_COMMIT_BRANCH. A semântica é a mesma das regras de rules em jobs: cada regra é avaliada em ordem, e a primeira que corresponder determina o comportamento. Se nenhuma regra corresponder, a pipeline não é criada (a menos que haja uma regra when: never ou when: always).

Na prática, o trecho do enunciado significa que a pipeline será criada se:

  • a origem do pipeline for um merge request (CI_PIPELINE_SOURCE == 'merge_request_event'), OU

  • houver uma tag (CI_COMMIT_TAG definida), OU

  • o branch atual for o branch padrão (CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH).

Portanto, a pipeline é criada se pelo menos uma das condições for verdadeira, e não se todas forem. A afirmação do item está incorreta ao dizer que "só será criada a pipeline se as três regras forem verdadeiras".

NÃO CAIA NESSA!

A banca inverte a lógica de avaliação das regras: no GitLab CI/CD, as regras de workflow.rules (e também de rules em jobs) são avaliadas com OU (OR) — basta uma condição ser verdadeira para a pipeline ser criada. O candidato desatento pode pensar que é necessário que todas as condições sejam satisfeitas (lógica AND), mas isso está errado. Lembre-se: regras são alternativas, não requisitos cumulativos.

1Avaliação das regras
Independentes entre si
Lógica OR (qualquer uma)
Lógica AND (todas) — errado
2Condições alternativas
Merge request (CI_PIPELINE_SOURCE)
Tag (CI_COMMIT_TAG)
Branch padrão (CI_COMMIT_BRANCH)
3Efeito
Pipeline criada se 1+ regra verdadeira
Pipeline não criada se nenhuma regra
workflow.rules (GitLab CI/CD)
LEVELsoulevel.com.br
workflow.rules (GitLab CI/CD): Avaliação das regras (Independentes entre si, Lógica OR (qualquer uma), Lógica AND (todas) — errado); Condições alternativas (Merge request (CI_PIPELINE_SOURCE), Tag (CI_COMMIT_TAG), Branch padrão (CI_COMMIT_BRANCH)); Efeito (Pipeline criada se 1+ regra verdadeira, Pipeline não criada se nenhuma regra)

Item — ❌ Errado

A afirmação diz que "só será criada a pipeline se as três regras de ativação do workflow.rules forem verdadeiras". Isso está errado porque as regras são avaliadas de forma independente e a pipeline é criada se qualquer uma delas for verdadeira. No GitLab CI/CD, a lógica é de OR (ou), não de AND (e). Portanto, se apenas uma das condições for atendida (por exemplo, se o pipeline for originado de um merge request), a pipeline será criada, mesmo que as outras duas condições sejam falsas.

Gabarito: Errado (E).

Link permanente: /questoes/ce417849