336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. Redmine과 Subversion 자동 반영


Redmine에서 Subversion 아래와 같이 저장소 설정을 통해 커밋 후 자동 반영 할 수 있다.(1.1.x 버젼)

 
하지만 안되는 경우가 있다. 정확한 이유는 모르겠다 ;; 그냥 내가 안된다는 거 외엔 ㅋㅋ
여튼 Subversion 커밋 후 Redmine 반영을 수동으로 처리 해 줘야 하는데, 저장소 폴더/hook/post-commit.bat 파일을 작성하면 처리 할 수 있다.

2.  post-commit.bat 내용



 @echo off
::
:: 프로젝트에 이슈 업데이트
::
@echo off

setlocal

set PATH=%PATH%;C:\Program Files\BitNami Redmine Stack\ruby\bin
ruby "c:\Program Files\BitNami Redmine Stack\apps\redmine\script\runner" "Repository.fetch_changesets" -e production

3. 설명



전에 작성한 Comment 강제 처리(http://nyjin.tistory.com/19)에서도 언급 했듯이 Subversion 커밋 시 PATH 환경 변수는 보안 상의 이유로 초기화 되므로 PATH를 재설정 하는 것이다.
다음으로 runner라는 스크립트 중 "Repository.fetch_changesets 구문 셋을 실행한다.
이 구문 셋은 저장소 변경 후 작업 처리를 말하며 일반적으로 이 메일 발송 등의 일을 한다.

4. 후작업 백 그라운드 처리


위와 같은 방식으로 post-commit.bat 파일을 작성해도 실행상 문제는 없다.
하.지.만. 이 작업은 시간이 상당히 오래 걸리는 작업이다. 

왜냐하면 설정된 smtp 서버 경로를 찾아서 smtp 서버에 아이디랑 패스워드로 접속하여 이메일 내용을 만들어서 발송하고 redmine 데이터 베이스를 업데이트 하는 등의 작업이 실행되므로 체감상 3~5초 정도는 시간이 걸리는 듯 하다.
결국 커밋 한번 할 때마다 3~5초 이상은 기다려야 되기 때문에 답답하기 그지 없다.

그럼 어떻게 이 작업을 짧게 할 수 있을까? 방법은 간단하다. 오래 걸리는 이 작업을 백그라운드로 비동기 처리 하여 반영은 좀 느릴지 몰라도 커밋 작업을 짧게 실행하는 것이다.
리눅스는 프롬프트에서 백그라운드 실행을 & 명령어로 간단히 실행 할 수 있지만, Windows 프롬프트는 기본적으로 백그라운드 실행이 지원되지 않는다. 하지만 vbscript를 이용하면 사용 할 수 있다.

5. VBScript를 이용하여 post-commit 처리


4번과 같은 이슈로 각 작업의 파일을 3개로 나누며 하는 역할은 아래와 같다.
- post-commit.bat : 커밋 후 이벤트 처리로 에서 백그라운드 실행할 vbscript를 호출
- update_issue.vbs : Redmine에 수동 반영하는 bat 파일을 호출
- update_issue.bat : Redmine에 수동 반영하는 스크립트 처리
그리고 각 파일의 내용은 다음과 같다.

5.1 post-commit.bat

call "c:\Program Files\BitNami Redmine Stack\update_issue.vbs"

5.2 update_issue.vbs


Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "c:\Program Files\BitNami Redmine Stack\update_issue.bat" & Chr(34), 0
Set WshShell = Nothing

5.3 update_issue.bat


위 2번 post-commit.bat와 동일

이러한 절차로 처리 하면 Commit 작업은 짧게 끝나며 후 작업은 백그라운드로 처리 된다.
마지막으로 커밋 작업 후 화면 갱신까지의 시간이 생길 수 있으므로 주의 하도록 하자.

+ Recent posts