<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://workspace.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=Redmine_gitolite_doxygen</id>
	<title>Redmine gitolite doxygen - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://workspace.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=Redmine_gitolite_doxygen"/>
	<link rel="alternate" type="text/html" href="https://workspace.onionmixer.net/wiki/index.php?title=Redmine_gitolite_doxygen&amp;action=history"/>
	<updated>2026-04-04T09:27:07Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://workspace.onionmixer.net/wiki/index.php?title=Redmine_gitolite_doxygen&amp;diff=410&amp;oldid=prev</id>
		<title>Onionmixer at 01:15, 8 April 2014</title>
		<link rel="alternate" type="text/html" href="https://workspace.onionmixer.net/wiki/index.php?title=Redmine_gitolite_doxygen&amp;diff=410&amp;oldid=prev"/>
		<updated>2014-04-08T01:15:42Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;;Redmine과 gitolite를 이용하는경우 doxygen 을 자동화하는 방법&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==관련자료==&lt;br /&gt;
&lt;br /&gt;
* redmine :: http://www.redmine.org&lt;br /&gt;
* gitolite :: http://github.com/sitaramc/gitolite&lt;br /&gt;
* doxygen :: http://www.doxygen.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==개요==&lt;br /&gt;
&lt;br /&gt;
redmine과 gitolite를 사용해서 git를 연동하는 방법은 [[gentoo_redmine_nginix_git|여기]] 에 이미 설명되어 있다. 이 문서에서는 이렇게 연동된 gitolite 의 저장소에 file이 commit 될때마다 gitolite 에서 제공하는 hook 기능을 이용해서 자동으로 doxygen 으로 문서를 만들고 확인하는 과정까지를 설명한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==작동순서==&lt;br /&gt;
&lt;br /&gt;
기본적으로 작동되는 순서를 설명하고 각 순서대로 필요한 과정들을 순서대로 알아보도록 한다.&lt;br /&gt;
&lt;br /&gt;
# redmine에서 관리되는 repository 에 파일이 존재하는 경우를 가정한다&lt;br /&gt;
# 특정한 계정을 시스템에 만들고 해당되는 계정에 virtual hosting을 건다&lt;br /&gt;
# 해당되는 계정에서 &amp;#039;&amp;#039;&amp;#039;git checkout &amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;doxygen문서만들기&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;뒷처리&amp;#039;&amp;#039;&amp;#039; 를 하는 shell script를 만든다&lt;br /&gt;
# redmine의 계정에서 post-action 을 원하는 repository 에 event 에서 작동하는 스크립트 작업을 한다&lt;br /&gt;
# 작업이 다 되고나면 작동을 테스트해서 doxygen 으로 생성된 문서가 web으로 제대로 보이는지 확인한다&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==사전주의사항==&lt;br /&gt;
&lt;br /&gt;
# 이 문서는 서버가 gentoo 라는것을 전제로 한다&lt;br /&gt;
# 이 문서에서 언급되는 web daemon 은 nginx 이다&lt;br /&gt;
# system 에 sudo 가 설치되어 있어야 한다&lt;br /&gt;
# doxygen에 대한 부분은 [[Doxygen_with_PHP|여기]] 를 참고해서 서버상에서 미리 작동되게 만들어놓아야 한다&lt;br /&gt;
# redmine 등은 portage 로 설치를 했다는것을 가정한다&lt;br /&gt;
# doxygen 작업을 진행할 계정은 미리 추가해놓도록 한다&lt;br /&gt;
# gitolite 는 gitolite v2 를 사용하는 것으로 기준한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==작업내용==&lt;br /&gt;
&lt;br /&gt;
===Level1::repository확인===&lt;br /&gt;
&lt;br /&gt;
시스템상 아래의 디렉토리로 가서 작업대상이 될 repository 를 미리 확인하도록 한다&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls -al /var/lib/redmine/repositories/&lt;br /&gt;
or &lt;br /&gt;
$ ls -al ~/repositories/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
원하는 repository 가 존재한다면 다음 작업을 진행해도 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Level2::virtual hosting===&lt;br /&gt;
&lt;br /&gt;
작업을 진행하기 위해 미리 준비한 계정에 nginx virtual hosting 을 설정하도록 한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
                server_name web에서접근할도메인이름;&lt;br /&gt;
                root /home/doxygen을사용할계정이름/public_html/;&lt;br /&gt;
&lt;br /&gt;
                if ($host ~ &amp;quot;^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$&amp;quot;) {&lt;br /&gt;
                        return 444;&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                location ~* \.(jpg|jpeg|gif|png|js)$ {&lt;br /&gt;
                        access_log      off;&lt;br /&gt;
                        error_log      off;&lt;br /&gt;
                        expires         30d;&lt;br /&gt;
                }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
해당되는 계정에서 public_html 이라는 디렉토리를 만들면 virtual hosting 을 할 준비는 끝나게 된다.&lt;br /&gt;
&lt;br /&gt;
때에 따라서 index.html 을 넣어서 제대로 동작하는지 확인하면 좋다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Level3::doxygen 을 위한 준비작업===&lt;br /&gt;
&lt;br /&gt;
준비된 계정에서 다음과같은 doxygen 설정파일은 미리 준비해놓고 script를 다음과같은 내용을 작성한다. 물론 내용은 사용자의 용도에 맞게 편집하면 된다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
cd ~/&lt;br /&gt;
rm -rf ~/repository이름&lt;br /&gt;
rm -rf ~/public_html/*&lt;br /&gt;
git clone ssh://repository주소/repository이름.git&lt;br /&gt;
cd repository이름&lt;br /&gt;
git checkout branch이름&lt;br /&gt;
cd application&lt;br /&gt;
cp ~/doxygen설정파일 ./&lt;br /&gt;
doxygen doxygen설정파일&lt;br /&gt;
mv html/* ~/public_html/&lt;br /&gt;
rm -rf html&lt;br /&gt;
rm -rf doxygen설정파일&lt;br /&gt;
cd ~/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
script 를 작동시켜서 doxygen 을 이용해서 문서를 만들어 그게 제대로 public_html 로 들어가는지를 확인하면 된다.&lt;br /&gt;
&lt;br /&gt;
script 는 &amp;#039;&amp;#039;&amp;#039;~/ &amp;#039;&amp;#039;&amp;#039; 에 위치시키도록 한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Level4::Redmine 계정에서 repository 에 post-action 설정을 위한 사전준비===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;visudo&amp;#039;&amp;#039;&amp;#039; 라는 명령을 치면 sudo 에 대한 권한을 지정할수 있는 상태가 된다. 파일에서 제일 아랫줄에 다음과같은 내용을 추가한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
redmine계정 ALL=(준비된계정) NOPASSWD: /home/준비된계정/doxygen_shellscript_name&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
위와 같은 내용을 추가한 후 저장하면 &amp;#039;&amp;#039;&amp;#039;sudo&amp;#039;&amp;#039;&amp;#039; 를 이용해서 명령어를 실행하게 할 준비는 끝난다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Level5::Redmine 계정에서 repository 에 post-action 설정하기===&lt;br /&gt;
&lt;br /&gt;
redmine을 운영하는 계정으로 login 한다음 관리하는 repository 를 하나 대상으로 잡고 다음의 folder 로 이동한다&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ~/repositories/projectname.git/hooks/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
위의 디렉토리에서 &amp;#039;&amp;#039;&amp;#039;post-update.sample&amp;#039;&amp;#039;&amp;#039; 이라는 파일을 &amp;#039;&amp;#039;&amp;#039;post-update&amp;#039;&amp;#039;&amp;#039; 로 바꾸고 다음과 같은 내용으로 편집해서 저장한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# An example hook script to prepare a packed repository for use over&lt;br /&gt;
# dumb transports.&lt;br /&gt;
#&lt;br /&gt;
# To enable this hook, rename this file to &amp;quot;post-update&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
sudo -u 준비된계정 /home/준비된계정/doxygen_shellscript_name&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
편집이 종료된 &amp;#039;&amp;#039;&amp;#039;post-update&amp;#039;&amp;#039;&amp;#039; 스크립트를 실행해서 스크립트로 인한 결과가 doxygen 결과를 처리하는 계정에서 제대로 처리되는지를 확인한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Level6::결과테스트===&lt;br /&gt;
&lt;br /&gt;
최종테스트를 진행하는것은 결코 복잡하지 않다.&lt;br /&gt;
&lt;br /&gt;
평상시 git 를 이용해서 프로그래밍을 진행하는 작업계정으로 git commit 및 git push 를 진행하면 서버에서 해당되는 작업이 진행되어 doxygen 으로 인한 document 가 생성되면 된다.&lt;br /&gt;
&lt;br /&gt;
생성된 결과물을 web browser로 확인해서 작업이 자동으로 진행되는것을 확인한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==주의사항==&lt;br /&gt;
&lt;br /&gt;
* 이 문서는 gitolite v2를 대상으로 한 문서이다. 왜냐하면 redmine과 연동되는 gitolite plugin이 gitolite v2를 요구하기 때문이다. gitolite v3를 쓰게되면 redmine 버전을 2.0 이상으로 올려야한다.&lt;br /&gt;
* gitolite v3 는 아래쪽 참고자료에 있는 Link를 참고하도록 한다.&lt;br /&gt;
* doxygen 용으로 사용하기는 했지만 다른용도로 사용해도 상관은 없다. 관련된 script만 잘 짜주면 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==참고자료==&lt;br /&gt;
&lt;br /&gt;
* Gitolite에 대한 후킹 시스템 for gitolite v3-초벌번역 :: [[gitolite_and_hook|Gitolite에 대한 후킹 시스템]] [http://demonastery.org/2012/09/a-hooking-system-for-gitolite/ 원본문서]]&lt;br /&gt;
* gitolite v2 에서 hook 디렉토리에 대한 질문과 답변 :: http://stackoverflow.com/questions/11054194/per-branch-per-repo-commit-hook-in-gitolite&lt;br /&gt;
* gitolite v2 에서의 hook 메커니즘에 대한 내용 :: http://gitolite.com/gitolite/g2/hooks.html#hookchaining&lt;br /&gt;
* linux 에서 일반사용자1이 일반사용자2의 권한으로 스크립트를 실행하려고 할때 :: http://stackoverflow.com/questions/6905697/how-to-run-script-as-another-user-without-password&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>