Ao longo das últimas semanas tenho vindo a mostrar como instalar e configurar um servidor de integração contínua. Tudo começou com o artigo Ferramentas para servidor de integração continua (CI).

Muito mais havia a dizer sobre integração contínua em projetos PHP, nomeadamente com automatização de tarefas de front-end ou a apresentação dos vários tipos de testes automáticos. Mas a série de artigos já vai extensa e julgo que tenham suficientes para que possas ter construido ou melhorado o teu processo de integração contínua.

Sem mais, vamos pôr as “mãos na massa” e mostrar como integrar as várias ferramentas.

  1. Adicionar análise SonarQube à configuração do TeamCity
  2. Integrar o SonarQube com o Redmine

1. Adicionar análise SonarQube à configuração do TeamCity

No artigo Instalação do TeamCity 9 em Linux, instalámos e configurámos o servidor de integração continua. Na altura, foram adicionadas duas tarefas à Configuração: uma para executar a tarefa Gulp e outra para executar o Composer. Vamos agora concluir a Configuração do TeamCity com a adição dos passos necessários à execução dos testes automáticos e da análise do SonarQube.

Como requisitos, deves ter o TeamCity e o SonarQube instalados. Caso não tenhas as aplicações instaladas podes ver como o fazer nos nossos artigos:

Para integrares a análise do SonarQube com o TeamCity, segue os passos abaixo indicados.

  1. Acede à página de Projetos no TeamCity e carrega na seta do lado direito do projeto, para expandir o menu. De seguida clica em Edit Settings.

    Integrar SonarQube com TeamCity e Redmine images/15-integrate-sonarqube-with-teamcity-and-redmine/263-teamcity-edit-project-settings.png
  2. Acede à opção Build Steps e carrega em Add build step. Terás de adicionar duas etapas (ou apenas uma, com os dois comandos) em que o Runner Type é Command Line, e Run é Custom Script. Quanto aos comandos, são

    phpunit
    /opt/sonar-runner-2.4/bin/sonar-runner -e -X
    

    Integrar SonarQube com TeamCity e Redmine images/15-integrate-sonarqube-with-teamcity-and-redmine/261-teamcity-add-phpunit-step.png
    Integrar SonarQube com TeamCity e Redmine images/15-integrate-sonarqube-with-teamcity-and-redmine/262-teamcity-add-sonarqube-runner-step.png

    Com isto, sempre que enviares alterações no teu projeto para o repositório Git, serão executados os testes automáticos e será executada a análise do SonarQube. Ou seja, consegues ter um histórico da qualidade do teu projeto à medida que o vais desenvolvendo.

2. Integrar o SonarQube com o Redmine

No terceiro artigo da série “Como criar um servidor de integração contínua instalámos e configurámos o Redmine, para a gestão de tarefas do projeto. Algumas dessas tarefas poderão ser tarefas técnicas para melhorar o código da aplicação com base na análise do SonarQube.

Com este objetivo, vou mostrar como podes integrar o SonarQube com o Redmine, para que as tarefas do Redmine sejam criadas de forma simples a partir do SonarQube.

  1. No SonarQube, acede a Settings » Redmine e preenche o campo Redmine URL corretamente.

    Integrar SonarQube com TeamCity e Redmine images/15-integrate-sonarqube-with-teamcity-and-redmine/258-sonarqube-global-redmine-settings.png
    Se não vires o menu Redmine deves instalar o plugin através da página Update Center. Para isso, com login feito, acede ao menu Settings » System » Update Center. No separador Available plugins encontras o Redmine, que pertence ao grupo Integration.
  2. Acede, agora no Redmine, a Administration » Settings e ativa a opção Enable REST web service.

    Integrar SonarQube com TeamCity e Redmine images/15-integrate-sonarqube-with-teamcity-and-redmine/256-redmine-enable-rest-api.png
  3. Ainda no Redmine, navega para My Account. Na barra lateral direita deverás ver uma nova secção chamada API access key. Aí deves carregar no show para que seja apresentada a chave e deves copiar a mesma.

    Integrar SonarQube com TeamCity e Redmine images/15-integrate-sonarqube-with-teamcity-and-redmine/255-redmine-api-acccess-key.png
  4. De volta ao SonarQube, acede ao Dashboard e clica no teu projeto. Estando na página do projeto, acede a Settings » Redmine e introduz a chave que copiaste no passo anterior. Deves também preencher o identificador do projeto no Redmine, para que seja possível identificar qual o projeto associado à criação das tarefas.

    Depois de preencheres os valores, clica em Connect para garantir que as definições estão corretas. Considerando que as definições estão corretas deves preencher os campos Priority e Tracker e carregar no botão Save Settings.

    Integrar SonarQube com TeamCity e Redmine images/15-integrate-sonarqube-with-teamcity-and-redmine/260-sonarqube-redmine-project-settings.png
  5. Agora, se navegares até qualquer Issue, tens a opção de criar a tarefa no Redmine através do menu More » Redmine.

    Integrar SonarQube com TeamCity e Redmine images/15-integrate-sonarqube-with-teamcity-and-redmine/259-sonarqube-link-to-redmine.png
  6. Se acederes às tarefas no Redmine, irás ver a tarefa criada, com o link para o SonarQube:

    Integrar SonarQube com TeamCity e Redmine images/15-integrate-sonarqube-with-teamcity-and-redmine/257-redmine-view-task-created-sonarqube.png

Com isto fica concluída esta série de artigos, que espero ter sido do teu agrado. Como habitual, se tiveres algum problema, coloca-o nos comentários.

Este artigo faz parte da série Como criar um servidor de integração contínua

  1. Ferramentas para servidor de integração continua (CI)
  2. Instalar SSH e Git em Linux e configuração da máquina de desenvolvimento Windows
  3. Instalação do Git e integração com o Redmine
  4. Instalação do TeamCity 9 em Linux
  5. Instalar e configurar TeamCity Agent em servidor Linux Mint
  6. Instalar SonarQube e SonarQube Runner em Linux Mint
  7. Analisar projeto Laravel 5 (PHP) com o SonarQube
  8. Integrar SonarQube com TeamCity e Redmine - Estás a ler este artigo