Quiz
Clique em "Resposta" para revelar a resposta correta e a explicação.
DevOps / CI-CD com Jenkins
Q1. O que a Integração Contínua (CI) resolve especificamente em um fluxo de desenvolvimento?
- A. Ela faz o deploy automático de cada commit diretamente em produção
- B. Ela gerencia o provisionamento de infraestrutura usando arquivos de configuração declarativos
- C. Ela detecta bugs de integração cedo, fazendo build e testes automáticos a cada commit, antes de as mudanças serem integradas à branch principal
- D. Ela impõe regras de estilo e formatação de código, fazendo o build falhar quando há violações
Resposta
C — Detecta bugs de integração cedo.
Sem CI, os desenvolvedores integram suas mudanças com pouca frequência. Quando o fazem, descobrem conflitos e bugs acumulados ao longo de dias ou semanas — quanto maior a demora, mais difícil o merge. A CI força integrações pequenas e frequentes e executa testes automatizados em cada uma, detectando os problemas enquanto ainda são baratos de corrigir.
Q2. No pipeline do Jenkins, por que o Maven é chamado com a flag -B (mvn -B clean install)?
- A. Ela habilita a compilação em lote, compilando todos os módulos simultaneamente
- B. Ela habilita o batch mode — suprimindo prompts interativos que travariam um job de CI sem supervisão
- C. Ela habilita a saída binária, gerando executáveis nativos em vez de JARs
- D. Ela habilita a execução em segundo plano, permitindo que o build rode como daemon
Resposta
B — O batch mode desabilita prompts interativos.
Pipelines de CI rodam sem supervisão e sem terminal. A saída padrão do Maven inclui indicadores de progresso e, em certas situações, pode pedir entradas do usuário. O -B (batch mode) desabilita esses recursos, produzindo uma saída amigável para máquinas e evitando que o build fique travado esperando uma entrada que nunca virá.
Q3. O que docker buildx build --platform linux/amd64,linux/arm64 faz no pipeline do Jenkins?
- A. Constrói duas imagens separadas e as publica com tags diferentes
- B. Cria um manifesto multiplataforma — uma única tag de imagem que resolve para o binário da arquitetura correta em qualquer host
- C. Constrói a imagem duas vezes por redundância
- D. Habilita a compilação cruzada no Docker, executando o build nas duas plataformas simultaneamente
Resposta
B — Manifesto multiplataforma sob uma única tag.
Os desenvolvedores frequentemente usam Macs com Apple Silicon (arm64), enquanto a produção roda em servidores x86 (amd64). Um build multiplataforma cria os dois binários e os publica sob uma única tag (por exemplo, myapp:latest). Ao fazer o pull, o Docker seleciona automaticamente o binário correto para a arquitetura do host.
Q4. Por que as credenciais do Docker Hub são armazenadas no Jenkins Credential Store, e não diretamente no Jenkinsfile?
- A. O Jenkins não consegue ler variáveis de ambiente em um
Jenkinsfile - B. Armazenar as credenciais no credential store significa que elas nunca são gravadas em disco nem aparecem nos logs — e o Jenkinsfile (que é versionado no repositório) nunca contém segredos
- C. O Docker Hub exige tokens de autenticação específicos do Jenkins
- D. O formato do Jenkinsfile não suporta interpolação de strings para credenciais
Resposta
B — Os segredos nunca são gravados em disco nem aparecem nos logs.
O Jenkins injeta as credenciais em tempo de execução via withCredentials([usernamePassword(...)]). O token real é mascarado na saída do console (****), nunca é armazenado no workspace e nunca aparece no Jenkinsfile. Colocar as credenciais fixas no Jenkinsfile faria com que elas fossem commitadas no repositório — uma vulnerabilidade de segurança crítica.
Q5. O pipeline do Jenkins tem uma etapa Deploy que executa kubectl apply. O que precisa estar configurado no Jenkins para isso funcionar?
- A. O Jenkins master precisa rodar dentro do cluster Kubernetes de destino
- B. Um arquivo kubeconfig (com as credenciais do cluster e a URL do API server) precisa estar disponível para o pipeline — normalmente montado ou armazenado como um segredo do Jenkins
- C. O
kubectljá vem embutido no Jenkins e não exige nenhuma configuração adicional - D. O cluster Kubernetes precisa ter o Jenkins instalado como plugin
Resposta
B — kubeconfig com as credenciais do cluster.
O kubectl usa um arquivo kubeconfig para se autenticar no API server. No Jenkins, ele normalmente é armazenado como uma credencial do tipo Secret file e injetado no pipeline com withCredentials. O arquivo contém o certificado da CA do cluster, a URL do API server e um token de service account com permissões RBAC suficientes para o deploy.