Redmine gitolite doxygen

From 흡혈양파의 인터넷工房
Revision as of 01:15, 8 April 2014 by Onionmixer (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Redmine과 gitolite를 이용하는경우 doxygen 을 자동화하는 방법


관련자료


개요

redmine과 gitolite를 사용해서 git를 연동하는 방법은 여기 에 이미 설명되어 있다. 이 문서에서는 이렇게 연동된 gitolite 의 저장소에 file이 commit 될때마다 gitolite 에서 제공하는 hook 기능을 이용해서 자동으로 doxygen 으로 문서를 만들고 확인하는 과정까지를 설명한다.


작동순서

기본적으로 작동되는 순서를 설명하고 각 순서대로 필요한 과정들을 순서대로 알아보도록 한다.

  1. redmine에서 관리되는 repository 에 파일이 존재하는 경우를 가정한다
  2. 특정한 계정을 시스템에 만들고 해당되는 계정에 virtual hosting을 건다
  3. 해당되는 계정에서 git checkout , doxygen문서만들기, 뒷처리 를 하는 shell script를 만든다
  4. redmine의 계정에서 post-action 을 원하는 repository 에 event 에서 작동하는 스크립트 작업을 한다
  5. 작업이 다 되고나면 작동을 테스트해서 doxygen 으로 생성된 문서가 web으로 제대로 보이는지 확인한다


사전주의사항

  1. 이 문서는 서버가 gentoo 라는것을 전제로 한다
  2. 이 문서에서 언급되는 web daemon 은 nginx 이다
  3. system 에 sudo 가 설치되어 있어야 한다
  4. doxygen에 대한 부분은 여기 를 참고해서 서버상에서 미리 작동되게 만들어놓아야 한다
  5. redmine 등은 portage 로 설치를 했다는것을 가정한다
  6. doxygen 작업을 진행할 계정은 미리 추가해놓도록 한다
  7. gitolite 는 gitolite v2 를 사용하는 것으로 기준한다.


작업내용

Level1::repository확인

시스템상 아래의 디렉토리로 가서 작업대상이 될 repository 를 미리 확인하도록 한다

$ ls -al /var/lib/redmine/repositories/
or 
$ ls -al ~/repositories/

원하는 repository 가 존재한다면 다음 작업을 진행해도 된다.


Level2::virtual hosting

작업을 진행하기 위해 미리 준비한 계정에 nginx virtual hosting 을 설정하도록 한다.

server {
                server_name web에서접근할도메인이름;
                root /home/doxygen을사용할계정이름/public_html/;

                if ($host ~ "^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$") {
                        return 444;
                }

                location ~* \.(jpg|jpeg|gif|png|js)$ {
                        access_log      off;
                        error_log      off;
                        expires         30d;
                }
}


해당되는 계정에서 public_html 이라는 디렉토리를 만들면 virtual hosting 을 할 준비는 끝나게 된다.

때에 따라서 index.html 을 넣어서 제대로 동작하는지 확인하면 좋다.


Level3::doxygen 을 위한 준비작업

준비된 계정에서 다음과같은 doxygen 설정파일은 미리 준비해놓고 script를 다음과같은 내용을 작성한다. 물론 내용은 사용자의 용도에 맞게 편집하면 된다.

#!/bin/sh
cd ~/
rm -rf ~/repository이름
rm -rf ~/public_html/*
git clone ssh://repository주소/repository이름.git
cd repository이름
git checkout branch이름
cd application
cp ~/doxygen설정파일 ./
doxygen doxygen설정파일
mv html/* ~/public_html/
rm -rf html
rm -rf doxygen설정파일
cd ~/


script 를 작동시켜서 doxygen 을 이용해서 문서를 만들어 그게 제대로 public_html 로 들어가는지를 확인하면 된다.

script 는 ~/ 에 위치시키도록 한다.


Level4::Redmine 계정에서 repository 에 post-action 설정을 위한 사전준비

visudo 라는 명령을 치면 sudo 에 대한 권한을 지정할수 있는 상태가 된다. 파일에서 제일 아랫줄에 다음과같은 내용을 추가한다.

redmine계정 ALL=(준비된계정) NOPASSWD: /home/준비된계정/doxygen_shellscript_name


위와 같은 내용을 추가한 후 저장하면 sudo 를 이용해서 명령어를 실행하게 할 준비는 끝난다.


Level5::Redmine 계정에서 repository 에 post-action 설정하기

redmine을 운영하는 계정으로 login 한다음 관리하는 repository 를 하나 대상으로 잡고 다음의 folder 로 이동한다

cd ~/repositories/projectname.git/hooks/


위의 디렉토리에서 post-update.sample 이라는 파일을 post-update 로 바꾸고 다음과 같은 내용으로 편집해서 저장한다.

#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".

sudo -u 준비된계정 /home/준비된계정/doxygen_shellscript_name

편집이 종료된 post-update 스크립트를 실행해서 스크립트로 인한 결과가 doxygen 결과를 처리하는 계정에서 제대로 처리되는지를 확인한다.


Level6::결과테스트

최종테스트를 진행하는것은 결코 복잡하지 않다.

평상시 git 를 이용해서 프로그래밍을 진행하는 작업계정으로 git commit 및 git push 를 진행하면 서버에서 해당되는 작업이 진행되어 doxygen 으로 인한 document 가 생성되면 된다.

생성된 결과물을 web browser로 확인해서 작업이 자동으로 진행되는것을 확인한다.


주의사항

  • 이 문서는 gitolite v2를 대상으로 한 문서이다. 왜냐하면 redmine과 연동되는 gitolite plugin이 gitolite v2를 요구하기 때문이다. gitolite v3를 쓰게되면 redmine 버전을 2.0 이상으로 올려야한다.
  • gitolite v3 는 아래쪽 참고자료에 있는 Link를 참고하도록 한다.
  • doxygen 용으로 사용하기는 했지만 다른용도로 사용해도 상관은 없다. 관련된 script만 잘 짜주면 된다.


참고자료