cassiom
(usa Ubuntu)
Enviado em 29/06/2012 - 09:46h
Bom dia, sou novo no linux e acabei pegando um projeto na empresa que preciso do seguinte: possuo dois servidores, um Linux contendo o subversion e outro Windows contendo o Mantis.OK...
Preciso que quando um usuário dê um commit este commit atualize automaticamente o mantis, mudando o status de sua Issue e adicionando o comentário a ela.
Tenho praticamente tudo pronto, uso o mobassh na maquina windows, e já consigo acessa-la pela maquina linux pelo ssh client, e tenho criada na maquina Linux uma partição da maquina windows onde posso acessar/criar arquivos. Bem, o processo seria o seguinte:
1-usuário adiciona/modifica um arquivo
2-usuário da o commit
3-commit é feito
4-subversion chama o script em sua pasta hooks post-commit
5-post-commit pega os dados do commit e cria um arquivo txt na partição compartilhada com o windows com os dados do commit.
6-post-commit executa outro script batizado de Loginssh
7-Loginssh se conecta automaticamente com a maquina windows através do ssh, caminha até um diretório e executa um script.bat
8-Script.bat que contem caminho do php do windows + caminho do .php a ser executado para alterar o mantis + caminho do arquivo criado pelo post-commit no passo 5
Bem, isso na minha cabeça funciona lindamente, acontece que, realmente funciona, só que separadamente, o post-commit cria o arquivo txt, e o Loginssh conecta e a alteração do mantis é feita, mas isso só acontece se eu executo diretamente o Loginssh, se ele é executado pelo post-commit, nada acontece, nem erros, commit é dado, arquivo é criado e ponto, nada mais.
segue os dois scripts:
POST-COMMIT:
#!/bin/bash
# Variaveis deste script
REPOS="$1"
REV="$2"
# Montando a mensagem de anotacao do mantis
log=$(/usr/bin/svnlook log -r $REV $REPOS)
autor=$(/usr/bin/svnlook author -r $REV $REPOS)
arqsChanged=$(/usr/bin/svnlook changed -r $REV $REPOS)
n=$'\n'
cd /var/pasta_windows/Apache2.2
cat | echo "Log: $log ---- Autor: $autor ---- Branch: $REPOS ##*/ ---- Revisao: $REV ---- Arquivos modificados: $arqsChanged" > file.txt
#executando o Loginssh
cd /var/svn
./Loginssh.sh
--------------------------------------
LOGINSSH:
#!/usr/bin/expect
set timeout 2
spawn ssh -l usuario ip
expect "%"
send "password\r"
expect "%"
send "cd C:/Arquivos\\ de\\ programas/Apache\\ Software\\ Foundation/Apache2.2/\r"
expect "%"
send "./script.bat\r"
expect eof
----------------------------------------
Por favor, ajudem! como sou novato em TUDO que estou fazendo aqui, provavelmente terão erros risórios ou a falta de coisas simples(assim espero).
Grato!