Este teste avalia a capacidade do candidato em projetar, implementar e apresentar um pipeline de integração e entrega contínua (CI/CD) completo para uma aplicação .NET Core, utilizando Jenkins, Ansible e Docker. O pipeline automatiza o processo de build, teste e deploy da aplicação em um ambiente de desenvolvimento virtualizado.
Desafio adicional: Adicionei o SonarQube para validação do deploy antes de executá-lo na máquina de destino.
-
Clone o repositório:
git clone https://github.com/leandroSalesCotrim/teste-tecnico-intelitrader.git
-
Entre na pasta raíz do projeto:
cd teste-tecnico-intelitrader
-
Construa as imagens necessárias:
docker-compose build
-
Inicie os containers:
docker-compose up -d
Isso iniciará 2 containers: um para Jenkins com Ansible e outro para SonarQube.
-
Configure o Jenkins:
-
Instale os plugins recomendados e o plugin "SonarQube Scanner".
-
Caso não seja suficiente, instale manualmente os plugins necessários.
-
-
Crie um job para obter scripts atualizados:
-
Crie uma tarefa do tipo "Pipeline" chamada
get-updated-scripts
: -
Adicione o seguinte pipeline script:
pipeline { agent any stages { stage('Checkout') { steps { git branch:'main', url:'https://github.com/leandroSalesCotrim/teste-tecnico-intelitrader.git' } } stage('Atualizar scripts') { steps { script { sh 'sudo mv /var/jenkins_home/workspace/get-updated-scripts/ansible/* /var/ansible/' } } } } post { always { echo 'Pipeline finished' } } }
-
-
Crie o job principal para build e deploy:
-
Crie um novo job do tipo "Pipeline" chamado
build-dotnet-image
: -
Configure a verificação do SCM e o hook do GitHub.
-
Na seção "Pipeline", selecione "Pipeline script from SCM" e configure:
- URL do repositório:
https://github.com/leandroSalesCotrim/docker-dotnet-core
- Branch Specifier:
"**/*"
- Script path:
JenkinsFile
- URL do repositório:
-
-
Configure o inventário do Ansible para conexão com a máquina virtual:
-
Acesse o container Jenkins/Ansible e edite o inventário:
docker exec -it ee9 bash sudo vim /var/ansible/inventory
Exemplo de configuração:
[all] 123.45.678.910 ansible_user=ansible ansible_ssh_private_key_file=/var/jenkins_home/.ssh/id_rsa ansible_ssh_common_args='-o StrictHostKeyChecking=no'
⚠️ Atenção:- O inventário será atualizado toda vez que o job
get-updated-scripts
for executado, assim, retornando ao ip template do repositório. - O usuário precisa ter permissões adequadas para criar pastas, copiar arquivos e executar comandos Docker.
-
-
Configure o token do SonarQube no Jenkins:
- Acesse o SonarQube e gere um token de acesso.
- No Jenkins, adicione o token na aba "Credentials".