Projeto apresentado no FISL 17 no Workshop de Software Livre 2016
BugInf 1.0.0-snapshot
BugInf é uma API de código aberto (GNU LGPL) que auxilia na integração das informações de repositórios de sistemas de bugtracking.
Requisitos
Instalação
- Executar o Elasticsearch e depois o Kibana .
- Baixar os módulos do buginf para o diretório de sua preferência.
- Abrir o console de comandos do windows/linux.
- Navegar até o diretório onde foi baixado o projeto.
- Navegar até o módulo bug-inf-parent.
- Digitar o comando mvn clean compile assembly:single, este comando irá gerar o empacotamento dos módulos projeto no formato JAR, onde irá ser gerado um JAR para cada módulo do projeto.
- Copie o JAR "buginf-api-1.0-SNAPSHOT-jar-with-dependencies" que foi gerado no diretório buginf-parent\buginf-api\target para uma nova pasta.
- Para a mesma pasta que você copiou o JAR, copie o arquivo buginf-api.properties , este arquivo contem parâmetros de configuração da API que podem ser alterados.
- Navegue para essa nova pasta onde estão o arquivo .JAR e o arquivo buginf-api.properties.
- Altere o arquivo buginf-api.properties para mudar o repositório onde será feito a integração. Ex: bugtracking.name=REDMINE no momento só está implementado para repositórios do REDMINE(não alterar), bugtracking.url = http://www.redmine.org (Pode ser módificado para outro repositório redmine, porém alguns repositórios precisam da chave de acesso da API do repositório para retornar os dados, mas no momento o BugInf não contempla este cenário).
- Digitar o comando java -jar buginf-api-1.0-SNAPSHOT-jar-with-dependencies.jar buginf-api.properties, este comando irá executar a integração das informações do repositório informado.
- Após a execução da API ele irá criar um índice no elasticsearch chamado bug_inf_dashboard onde estão armazenadas as informações dos defeitos do repositório que foi escolhido.
- A criação do dashboard no kibana pode ser criada a partir da documentação seguindo as métricas que constam na figura 4.
Quick Start
Neste tutorial será demonstrado como seria a extensão utilizando o sistema de bug tracking Bugzilla.
Passo 1º
Criar uma constante na Enum BugTrackingType que represente o sistema de bug tracking.
public enum BugTrackingType {
BUGZILLA; // representa o sistema de bug tracking
}
Passo 2º
Criar uma classe que implemente a interface BugTrackingService e implementar a lógica para recuperar as informações do bug tracking.
public class BugzillaServiceImpl implements BugTrackingService {
// O - tipo generico que deve ser conforme foi implementado
private BugzillaDefeitoMapper<O, Defeito> bugzillaMapper;
BugzillaServiceImpl(BugTrackingMapper<O, Defeito> bugzillaMapper) {
this.bugzillaMapper = bugzillaMapper;
}
@Override
public List<Projeto> recuperarTodosProjetos() {
// implementar lógica
}
@Override
public List<Defeito> recuperarTodosDefeitosProjeto(final Projeto projeto) {
// implementar lógica
}
}
Passo 3º
Adicionar na classe BugTrackingServiceFactory uma condicional que verifique qual o sistema de bug tracking e instancie o service do mesmo.
public class BugTrackingServiceFactory {
public static BugTrackingService getBugTrackingService(final BugTrackingType bugTrackingType) {
switch (bugTrackingType) {
case BUGZILLA:
return new BugzillaServiceImpl(new BugzillaDefeitoMapper());
}
return null;
}
}
Passo 4º
Criar uma enum onde ira conter informações da api do Bugzilla, como podemos ver no exemplo abaixo:
public enum BugzillaConfig {
URL("http://url.repositorio.com"); // URL do repositório que irá utilizar.
}
Passo 5º
Classe utilizada para converter o Objeto da API do bugzilla para o POJO da aplicação O - deve se utilizar o tipo de objeto utilizado para representar o modelo de defeito na API do bugzilla Defeito - POJO utilizado pela API para representar o defeito
public class BugzillaDefeitoMapper implements BugTrackingMapper<O, Defeito> {
/**
* Responsavel por converter os objetos das API's do
* sistema de bugtracking para o POJO da API BugInf
* @param origem
* @return destino
*/
@Override
public Defeito convert(O defeito) {
// implementar conversão para o objeto defeito da API
}
}
Passo 6º
E por último adicionar na classe BugInfClient o tipo do sistema de bug tracking que se quer integrar. Como pode ser visto no exemplo abaixo:
public class BugInfClient {
public static void main(String[] args) {
BugInfFacade bugInfFacade = new BugInfFacadeImpl(BugTrackingType.BUGZILLA);
bugInfFacade.executarIntegracaoDefeitos();
}
}