Teste Técnico para Intelitrader

Tecnologias Utilizadas

Jenkins Docker SonarQube Ansible

Objetivo

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.

Como Rodar Localmente 👨‍💻

⚠️ Pré-requisitos: Docker e uma máquina virtual (pode ser seu WSL ou Ubuntu).

⚠️ Nota: Este guia não se aprofunda em como configurar Jenkins, Docker e outras ferramentas. Presume-se que você já saiba configurar itens básicos, como uma chave SSH.

Passos:

  1. Clone o repositório:

    git clone https://github.com/leandroSalesCotrim/teste-tecnico-intelitrader.git
  2. Entre na pasta raíz do projeto:

    cd teste-tecnico-intelitrader
  3. Construa as imagens necessárias:

    docker-compose build
  4. Inicie os containers:

    docker-compose up -d

    Isso iniciará 2 containers: um para Jenkins com Ansible e outro para SonarQube.

  5. Configure o Jenkins:

    • Instale os plugins recomendados e o plugin "SonarQube Scanner".

    • Caso não seja suficiente, instale manualmente os plugins necessários.

  6. Crie um job para obter scripts atualizados:

    1. Crie uma tarefa do tipo "Pipeline" chamada get-updated-scripts: image

    2. Configure a verificação periódica do SCM: image

    3. 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'
            }
          }
      }
  7. Crie o job principal para build e deploy:

    1. Crie um novo job do tipo "Pipeline" chamado build-dotnet-image: image

    2. Configure a verificação do SCM e o hook do GitHub.

    3. 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
  8. Configure o inventário do Ansible para conexão com a máquina virtual:

    1. 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.
  9. Configure o token do SonarQube no Jenkins:

    1. Acesse o SonarQube e gere um token de acesso.
    2. No Jenkins, adicione o token na aba "Credentials".

    image image

Telas do projeto:

image image image image