Quiz
Clique em "Resposta" para ver a resposta correta e a explicação.
DevOps / CI-CD com Jenkins
Q1. Que problema a Integração Contínua (CI) resolve, especificamente, em um fluxo de desenvolvimento?
- A. Ela faz o deploy automático de cada commit direto em produção
- B. Ela gerencia o provisionamento de infraestrutura com arquivos de configuração declarativos
- C. Ela detecta cedo os bugs de integração, fazendo build e testes automáticos a cada commit, antes que as mudanças sejam 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 cedo os bugs de integração.
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, pegando os problemas quando 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 ativa a compilação em lote, compilando todos os módulos ao mesmo tempo
- B. Ela ativa o batch mode — suprimindo perguntas interativas que travariam um job de CI sem supervisão
- C. Ela ativa a saída binária, gerando executáveis nativos em vez de JARs
- D. Ela ativa a execução em segundo plano, permitindo que o build rode como daemon
Resposta
B — O batch mode desativa as perguntas interativas.
Os 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 uma entrada. O -B (batch mode) desativa isso, produzindo uma saída amigável para máquinas e evitando que o build fique travado esperando uma entrada que nunca vai chegar.
Q3. O que docker buildx build --platform linux/amd64,linux/arm64 faz no pipeline do Jenkins?
- A. Constrói duas imagens separadas e as envia com tags diferentes
- B. Cria um manifesto multiplataforma — uma única tag de imagem que resolve para o binário da arquitetura correta em qualquer hospedeiro
- C. Constrói a imagem duas vezes, por redundância
- D. Ativa a compilação cruzada no Docker, executando o build nas duas plataformas ao mesmo tempo
Resposta
B — Manifesto multiplataforma sob uma única tag.
Os desenvolvedores costumam usar Macs com Apple Silicon (arm64), enquanto a produção roda em servidores x86 (amd64). Um build multiplataforma gera os dois binários e os publica sob uma única tag (por exemplo, myapp:latest). Ao fazer o pull, o Docker escolhe automaticamente o binário certo para a arquitetura do hospedeiro.
Q4. Por que as credenciais do Docker Hub ficam 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. Guardar as credenciais no credential store faz com que elas nunca sejam gravadas em disco nem apareçam 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 é guardado no workspace e nunca aparece no Jenkinsfile. Colocar as credenciais fixas no Jenkinsfile as levaria para o 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 guardado como segredo no 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 — Um kubeconfig com as credenciais do cluster.
O kubectl usa um arquivo kubeconfig para se autenticar no API server. No Jenkins, ele normalmente é guardado 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.