Questão nº 31
Questão de Tecnologia da Informação · FCC TRT20 2024 (nº 31)
Uma equipe deseja adotar abordagem DevOps para automatizar o processo de integração e entrega contínua (CI/CD). Para isso, é necessário integrar diversas ferramentas para otimizar a automação dos testes e a entrega do produto. Dentre essas ferramentas, encontra-se o
- ASelenium, que é utilizado para automação de builds, testes de integração e execução de pipelines de CI/CD, que integra-se ao CircleCI, que faz a gestão de repositórios Git. O CircleCI é compatível apenas com as linguagens Go, Java e Ruby, apresentando incompatibilidade com Python, Ruby, Scala, Node.js, PHP e Haskell.
- BGit. Esta ferramenta precisa ser integrada ao GitHub, uma vez que são interdependentes. Usadas em conjunto, conseguem realizar o controle de versão e proporcionar a integração contínua.
- CGitHub Actions, que permite a criação de workflows de CI/CD diretamente no GitHub. Os workflows são definidos no diretório `.github/workflows` de um repositório, que pode ter vários workflows, cada um dos quais podendo executar um conjunto diferente de tarefas, como criar e testar pull requests. (alternativa correta)
- DJenkins, que é uma ferramenta escrita em PHP, exclusiva para automação de testes, que integra-se ao Git para armazenar o histórico dos testes automatizados executados.
- EMaven, que é uma ferramenta proprietária para automação de builds, que também possui capacidades nativas de controle de versões e pipelines de CI/CD, similar ao GitLab CI/CD. Um projeto Maven fica atrelado a um arquivo principal: o pom.java.
Resposta comentada
Gabarito Alternativa C
CI/CD (Integração Contínua/Entrega Contínua) é uma prática DevOps que automatiza as etapas de desenvolvimento de software, desde a escrita do código até a entrega em produção, garantindo que o software esteja sempre pronto para ser lançado. Ferramentas de CI/CD são essenciais para orquestrar e executar essas automações.
(A) Incorreta: Selenium é uma ferramenta para automação de testes de interface de usuário (UI) e testes de ponta a ponta, não para automação de builds ou execução de pipelines de CI/CD diretamente. O CircleCI é uma plataforma de CI/CD que suporta diversas linguagens, incluindo Python, Ruby, Scala, Node.js, PHP e Haskell, e não apenas as listadas como compatíveis, nem é apenas para gestão de repositórios Git.
(B) Incorreta: Git é um sistema de controle de versão distribuído, e GitHub é uma plataforma de hospedagem de repositórios Git e serviços adicionais. Eles não são "interdependentes" no sentido de que Git não funciona sem GitHub; Git pode ser usado localmente ou com outros hosts. Git é a base para o controle de versão, mas não realiza a integração contínua por si só; ele é uma ferramenta fundamental usada em pipelines de CI/CD. A armadilha aqui é confundir a ferramenta (Git) com a plataforma (GitHub) e atribuir capacidades de CI diretamente ao Git.
(C) Correta: GitHub Actions é uma plataforma de CI/CD integrada diretamente ao GitHub. Ela permite criar fluxos de trabalho (workflows) para automatizar tarefas de desenvolvimento, como build, teste e deploy, usando arquivos YAML definidos no diretório `.github/workflows` do repositório. Esses workflows são acionados por eventos (como pull requests) e podem executar diversas ações, otimizando a automação de testes e a entrega do produto, exatamente como a questão descreve.
(D) Incorreta: Jenkins é um servidor de automação de código aberto para CI/CD, capaz de automatizar builds, testes e deployments, não sendo exclusivo para automação de testes. Ele é escrito em Java, não em PHP. Embora se integre ao Git para buscar o código-fonte, sua função principal não é "armazenar o histórico dos testes automatizados executados", mas sim orquestrar a execução desses testes e de outras etapas do pipeline.
(E) Incorreta: Maven é uma ferramenta de automação de build e gerenciamento de projetos, principalmente para projetos Java. É de código aberto (não proprietária). Não possui capacidades nativas de controle de versões (integra-se com VCS como Git) nem de pipelines de CI/CD completas como GitLab CI/CD; ele é um componente que pode ser usado dentro de um pipeline de CI/CD. O arquivo principal de configuração de um projeto Maven é o `pom.xml`, não `pom.java`.
Fonte: FCC TRT20 2024 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 003). Reproduzida para fins de estudo.