Você está na página 1de 7

Integração de Controle de versão com Redmine.

A integração do controle de versão pode permitir uma interatividade bem interessante


entre os tickets e projetos do redmine com o controle de versão segue alguns exemplos:
fechamento automático dos tickets ao finalizar uma tarefa, adicionar referências ao progresso
de tarefa e adicionar horas de trabalho, entre outros.

Segue uma configuração e exemplos de uso sobre essa integração com svn de duas
formas diferentes e também pode ser facilmente adaptado para outros controles de versão.

Habilitando suporte a web-service para atualização.

O primeiro passo é habilitar acesso externo através de web service a configuração é


bem simples e não exige maiores explicações.

1. Administração -> Configurações


2. Aba Repositórios
3. O redmine trabalha com os seguintes controles de versão (Subversion, Darcs,
Mercurial, Cvs, Bazaar, Git e Filesystem). No campo versão você pode verificar a versão
do software instalado.

4. Habilite o Subversion.
5. Na parte abaixo dos SCM você tem algumas configurações, essas configurações são
importantes para habilitarmos o web-service.
6. Obter commits automaticamente deve ser desabilitado, isso deve ser feito por que
será usado o web-service para atualização, mas nada impede que você tenha os 2
habilitados.

7. Ativa WS para gerenciamento do repositório deve ser habilitado para que possamos
acessa-lo.
8. Chave de API gere uma chave é com essa chave que usaremos para autenticar no
momento da atualização. (Mais abaixo será explicado como)
9. Número máximo de revisões exibidas no arquivo de log, essa informação fica a seu
critério.
10. O quadro abaixo desse (Referenciando tarefas nas mensagens de commit) será
comentado depois, por enquanto deixe como está.
11. Clique em salvar.
12. Para testar basta acessar a seguinte url e não deve retornar nenhum erro:
http://{Caminho da Sua Instalação do Redmine}/sys/fetch_changesets?key={Chave de
API}.
13. Existem formas melhores de testar, mas por enquanto essa vai ser a mais fácil.

Adicionando um repositório ao projeto do redmine

Depois de habilitado controle de repositório no SVN é preciso adicionar o caminho do


repositório svn ao seu projeto, para tanto entre no projeto acesse as configurações do mesmo.

1. Entre na aba de módulos e habilite repositório.

2. Depois clique em salvar.


3. Clique na aba de repositórios
4. Clique em New Repositoy.
5. Deve ser apresentado a seguinte página.

6. Controle de Versão- Selecione na lista Subversion.


7. Main Repositroy- Marque caso esse repositório seja o central.
8. URL – É o caminho do repositório incluindo o projeto.
9. Usuário e Senha – Coloque um usuário e senha do repositório svn que tenha
acesso de leitura.
10. Depois de realizado a configuração clique em criar.
11. Você será redirecionado para a lista de repositórios, nessa lista deve encontrar um
link para usuários, nesse link o redmine automáticamente vincula os usuários do
svn com o redmine. Clique nesse link e será apresentada a seguinte página:

12. Na imagem acima o quadro vermelho marcado com “1” é a lista de usuários do svn
e no lado direito estão os usuário do remine, como dito o redmine tenta fazer o
vinculo automaticamente e no quadro “2” ele encontrou um usuário e no quadro 3
ele não encontrou.
13. Para alterar basta seleciona no combo o usuário que satisfaça a sua escolha.
14. Clique em atualizar.

Até aqui realizamos as configurações necessárias dentro do redmine.

Agora vamos realizar a configuração dentro do svn para que a atualização ocorra de maneira
automática, ou seja, sem precisa ficar clicando no link repositório do projeto. Existem 2 formas
são elas :

1 - Usando hooks do svn para automatizar a atualização do RedMine.

Os hook’s são eventos disparados quando ocorre alguma ação dentro do repositório
do svn. O que vamos fazer é muito simples, basta que sempre que um evento de post-commit
acontecer dentro do repositório, execute o comando informado na primeira parte desse
tutorial.

1. Entre na pasta onde está o repositório SVN no servidor. (Para cada repositório
você deve fazer o mesmo)
2. Dentro da pasta do seu repositório svn você vai encontrar um pasta chamada
hooks entre nessa pasta. (Dentro dessa pasta tem vários exemplos de arquivos
para ser usado como base)
3. Caso não exista crie um arquivo chamado post-commit.
4. Dentro desse arquivo você coloca o seguinte comando:
curl http://{Caminho da Sua Instalação}/sys/fetch_changesets?key={Chave de API}.
5. Não se esqueça de dar privilégio de permissão de execução a este arquivo.
6. Pronto, basta realizar um commit e você vai verificar as atualizações na Aba
Repositório.

Segue a lista de comando que eu executei.

$ cd /home/svn/repositories/Test
$ cd /hooks/
$ vi post-commit
curl http://{Caminho da Sua Instalação}/sys/fetch_changesets?key={Chave de API}
[shift + :]
wq!
chown -R www-data:www-data *
chmod -R 770 *

1 - Usando o cron no Linux.

Usar o cron torna o gerenciamento melhor, porém com um atraso dependendo do tempo que
você colocar para atualizar, eu acredito ser melhor por causa da facilidade de manutenção não
há a necessidade de cada criação de repositório você entrar no mesmo e configurar os hooks
para atualizar.

1. Crie um script com o seguinte conteúdo:


#!/bin/bash
curl http://{Caminho da Sua Instalação}/sys/fetch_changesets?key={Chave de API}

2. Salve em um local qualquer, no meu caso salvei no home com o nome: update-
redmine.sh
3. Adicione permissão de execução: chmod +x
4. Edite o crontab usando o comando crontab –e
5. O mesmo vai abrir o vim ou qualquer outro editor padrão então você adicone a
seguinte linha, no meu caso a atualização executa de 10 em 10 minutos.
*/10 * * * * /home/update_redmine.sh 1>/home/log_make.log 2>/home/error.log

Configuração de Referência e Tempo de Trabalho.

O Redmine é um poderoso gerenciador de projeto de software e com poucas configurações


você consegue elevar o seu poder, vou mostrar agora como você faz as referencias aos tickets
e gerenciamento do tempo de trabalho do desenvolvedor.

Vamos voltar ao redmine e na seção de administração e dentro de configurações.

1. Acesse: Administração -> Configurações -> Aba Repositórios.


2. No quadro Referenciando tarefas nas mensagens de commit.
3. Palavras de referência: Essa palavra (ou algumas palavras separadas por vírgulas) serve
para o desenvolvedor fazer uma referência do que ele está fazendo ou “comitando” ao
redmine, ao realizar commit ele pode fazer da seguinte maneira: (vou excluir os
comandos deixando somente a mensagem que deve ser adicionada o).

“Desenvolvimento parcial da bomba nuclear (refs #4321) ” ou


“Desenvolvimento parcial da bomba nuclear (issue #4321) ” ou
“Desenvolvimento parcial da bomba nuclear (references #4321) ”

Caso o mesmo commit faça referência a mais de um ticket você pode adicioná-lo ao
commit através da vírgula (Isso não é recomendado devido à dificuldade de
gerenciamento, mas vou explicar e fica o seu critério usar ou não)

“Desenvolvimento parcial da bomba nuclear e do dispositivo de explosão (refs #4321,


#5432) ”

Os parênteses são por minha conta, você pode somente adicionar o texto dentro dos
parênteses.

Depois de atualizado no redmine com base nessa referência seu ticket deve ficar
assim:

No quadro 1, pode-se ver o que e por quem foi realizado o commit e no quadro 2 de
onde foi realizada a atualização. Aqui no meu exemplo é em git e no svn segue o
mesmo principio.
4. Palavra de fechamento, caso o desenvolvedor queira fechar o ticket somente através
do commit, ele pode adicionar ao commit a palavra incluído aqui. Na sua essência não
muda nada em relação à palavra de referência, a diferença principal é que você pode
aplicar um status e esse status pode ou não fechar a tarefa, pode também aplicar
também um % de conclusão, aqui fica a seu critério como você deve ser o processo de
desenvolvimento. No meu caso usei a palavra closes e fixes e portanto o
desenvolvedor pode usa-las da seguinte forma:

“Concluído a bomba, enviar para testes (closes #4321) ” ou


“Concluído a bomba, enviar para testes (fixes #4321) ”

O resultado será o mesmo da imagem acima com exceção da atualização do status que
somente é realizada no fechamento.

5. Habilitar registro de horas. Esse é uma das funcionalidades mais legais dessa
integração, eu comecei a usar em pouco tempo e achei muito legal. É possível
adicionar um tempo de trabalho depois da referencia do ticket e o redmine irá
atualizar o tempo de trabalho daquela tarefa usando o tempo colocado na linha do
commit com o tipo configurado em Atividades para registro de horas da seguinte
maneira :

“Desenvolvimento parcial da bomba nuclear (refs #4321 @1h) ” ou


“Concluído a bomba enviar para suporte e clientes (closes #4321 @1h30min)”

Observe o texto em negrito, quando o redmine atualizar você vai ter as horas gastas
informado na linha do commit. Veja o resultado no redmine.

No ticket :

No relatório :
Pessoal ! Espero ter ajudado e qualquer dúvida pode entrar em contato pela lista de
discussão.

Era isso!!

Fábio Nascimento
fabio.o.nascimento@gmail.com

Referências

http://svnbook.red-bean.com/en/1.0/svn-book.html#svn-ch-5-sect-2.1
http://www.redmine.org/projects/redmine/wiki/HowToInstallRedmineOnUbuntuServ
er
http://www.redmine.org/projects/redmine/wiki

Você também pode gostar