Questão de Engenharia de Software — DevOps, IaC, Integração Contínua e Entrega Contínua — CESPE / CEBRASPE 2025
Engenharia de Software›DevOps, IaC, Integração Contínua e Entrega Contínua
Código
ce417850
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 do arquivo .gitlab-ci.yml, utilizado no GitLab CI/CD para definir regras de execução de pipelines com base em variáveis de ambiente, na execução do bloco job2, o valor da variável ALL_JOBS_VAR será “Different value than default”, pois variáveis definidas no nível do job têm precedência sobre as globais com o mesmo nome.
variables: ALL_JOBS_VAR: "A default variable"
job1: variables: JOB1_VAR: "Job 1 variable" script: - echo "Variables are '$ ALL_JOBS_VAR' and '$ JOB1_VAR'"
job2: variables: ALL_JOBS_VAR: "Different value than default" JOB2_VAR: "Job 2 variable" script: - echo "Variables are '$ ALL_JOBS_VAR', '$ JOB2_VAR', and '$ JOB1_VAR'"
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoC — Certo
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: precedência de variáveis
Gabarito: Certo (C). No GitLab CI/CD, variáveis definidas no nível do job têm precedência sobre variáveis globais com o mesmo nome. Portanto, no bloco job2, a variável ALL_JOBS_VAR será "Different value than default", pois a definição local ao job sobrescreve a global. Essa é uma regra fundamental de escopo de variáveis em pipelines do GitLab.
O GitLab CI/CD é uma ferramenta de integração contínua e entrega contínua que permite definir pipelines como código, geralmente em um arquivo .gitlab-ci.yml. Nesse arquivo, é possível declarar variáveis em diferentes níveis de escopo: global (no topo do arquivo), por job, por pipeline, ou até mesmo como variáveis de ambiente configuradas no projeto ou no grupo. A precedência dessas variáveis segue uma hierarquia bem definida, e a regra central é que quanto mais específico o escopo, maior a precedência. Assim, uma variável definida diretamente em um job tem prioridade sobre uma variável global com o mesmo nome.
Essa hierarquia existe para dar flexibilidade e controle fino sobre o comportamento de cada job. Imagine um cenário em que a maioria dos jobs deve usar uma configuração padrão, mas um job específico precisa de um valor diferente. Em vez de duplicar o pipeline ou criar condições complexas, basta redefinir a variável no nível do job. Isso é exatamente o que o trecho de código da questão demonstra: a variável ALL_JOBS_VAR é definida globalmente como "A default variable", mas o job2 a redefine como "Different value than default". Quando o job2 é executado, o valor da variável será o local, pois ele tem precedência.
É importante não confundir essa precedência com a ordem de definição ou com o conceito de variáveis em linguagens de programação tradicionais. No GitLab CI/CD, a precedência é determinada pelo escopo, não pela ordem em que as variáveis aparecem no arquivo. A hierarquia completa, da maior para a menor precedência, inclui: variáveis de pipeline (definidas na interface do GitLab), variáveis de projeto, variáveis de grupo, variáveis de instância, e, dentro do arquivo .gitlab-ci.yml, variáveis de job, variáveis de pipeline (bloco variables no topo), e variáveis definidas em outros lugares. A regra prática é: o escopo mais específico vence.
A pegadinha que a banca explora aqui é justamente a inversão dessa lógica. O candidato pode ser tentado a acreditar que a variável global, por ser definida "primeiro" ou por estar "acima" no arquivo, teria precedência. No entanto, a precedência é por escopo, não por posição. A variável do job é mais específica e, portanto, tem prioridade. Guarde essa distinção: global vs. local, e a local vence.
Precedência de variáveis no GitLab CI/CD
1Regra central
Quanto mais específico o escopo, maior a precedência
Escopo vence, não a ordem no arquivo
2Hierarquia (maior → menor)
Variáveis de pipeline (interface)
Variáveis de projeto
Variáveis de grupo
Variáveis de instância
Variáveis de job
Variáveis globais (topo do .gitlab-ci.yml)
3Exemplo prático
ALL_JOBS_VAR global: "A default variable"
job2 redefine ALL_JOBS_VAR
"Different value than default"
job2 usa o valor local (mais específico)
LEVEL · soulevel.com.br
Item — ✅ CERTO
A afirmativa está correta. No GitLab CI/CD, a precedência de variáveis é definida pelo escopo, e variáveis definidas no nível do job têm precedência sobre variáveis globais com o mesmo nome. No trecho apresentado, ALL_JOBS_VAR é definida globalmente como "A default variable" e, dentro do job2, é redefinida como "Different value than default". Portanto, na execução do job2, o valor da variável será o local, confirmando a afirmação.
GitLab CI/CD (documentação oficial):
A precedência de variáveis no GitLab CI/CD é determinada pela hierarquia de escopos. Variáveis definidas em um nível mais específico (como um job) sobrescrevem variáveis definidas em níveis mais gerais (como o global).
A regra é consistente com o princípio de que cada job pode ter seu próprio ambiente de execução, permitindo personalização sem afetar outros jobs. O job1, por exemplo, não redefine ALL_JOBS_VAR, então usará o valor global "A default variable". Já o job2, ao redefinir a variável, garante que seu script utilize o valor específico "Different value than default".