Redmine上からSubversion,Git,Mercurialのリポジトリ作成ができ、公開したリポジトリにプロジェクトに所属したユーザであれば、Redmineのユーザアカウントでアクセスできるようになります。
Subversion,GitなどのツールやRedmineとアジャイル開発、継続的インテグレーションに便利な各種プラグインに加え、今回の連携設定などをまとめてインストールできるALMiniumというものがあります。
前提
- OSがCentOS
- Apacheをインストール済み
(# yum install httpd) - Apacheの実行ユーザ名とグループ名はapache
- Subversionとmod_dav_svnモジュールがインストール済み
(# yum install subversion mod_dav_svn) - Gitインストール済み(# yum install git)
- Mercurialインストール済み(# yum install mercurial)
- Redmineをインストール済み
(http://blog.redmine.jp/articles/redmine-1_2-installation_centos/) - redmineのDBはMySQLで同じサーバで稼働
- redmineのインストールディレクトリを$REDMINE_ROOTとする
- SVNリポジトリを格納する親ディレクトリを/var/www/repos/svnとする
- GITリポジトリを格納する親ディレクトリを/var/www/repos/gitとする
- Mercurial(Hg)リポジトリを格納する親ディレクトリを/var/www/repos/hgとする
- http://example.jp/repos/svnがSVNリポジトリのURLとする
- http://example.jp/repos/gitがGITリポジトリのURLとする
- http://example.jp/repos/hgがHgリポジトリのURLとする
1.リポジトリの親フォルダの作成
# mkdir -p /var/www/repos/{svn,git,hg} # chown -R apache /var/www/repos
2.SCM Repository Creation pluginのインストール
RedmineからSubversion・Git・Mercurialのリポジトリの作成ができるプラグイン
a). ダウンロード
http://projects.andriylesyuk.com/projects/redmine-svn/wiki/Installの横にあるダウンロードリンクからredmine_scm-0.2.0.tar.bz2をダウンロード
b). インストール
解凍としてできたredmine_scmをフォルダ丸ごと$REDMINE_ROOT/vendor/pluginsに移動
c). DBマイグレーション
$ rake db:migrate:plugins RAILS_ENV=production
d). プラグインの設定ファイルの追加
$cp $REDMINE_ROOT/vendor/plugins/redmine_scm/config/scm.yml $REDMINE_ROOT/config/scm.yml $vi $REDMINE_ROOT/config/scm.yml production: auto_create: false deny_delete: true svn: path: /var/www/repos/svn svnadmin: /usr/bin/svnadmin url: http://example.jp/repos/svn git: path: /var/www/repos/git git: /usr/bin/git options: --bare url: http://example.jp/repos/git update_server_info: true git_ext: true mercurial: path: /var/www/repos/hg hg: /usr/bin/hg url: http://example.jp/repos/hg development: ※不要なSCM部分はカットする
- deny_delete
- リポジトリの削除を禁止するか
falseに設定するとプロジェクトの「設定」→「リポジトリ」に「削除」のリンクが現れる
削除するとリポジトリ情報とリポジトリ自体も削除される - path
- リポジトリの親ディレクトリ
この下に各プロジェクトのリポジトリが作成される - url
- HTTPでアクセスする際のURLプレフィックス
リポジトリを作成した後、プロジェクトの「設定」→「リポジトリ」の画面にURLが表示される
e). Redmine再起動
# service httpd graceful (Passengerを使用しているのでApacheの再起動で代用)
f). 「管理」→「プラグイン」で「SCM Creator」が追加されているのを確認
g). 所属しているプロジェクト→設定→リポジトリと移動し、リポジトリを作成してみる
「バージョン管理システム」から「Subversion」を選択すると、
URLに親フォルダ+プロジェクト識別子が入力された状態になる
ログイン、パスワードは空のまま「Create new repository」を押すとURLの場所にリポジトリが作成される
3.各リポジトリのHTTPアクセスとRedmineの認証情報の連携
a). 必要パッケージのインストール
# yum install mod_perl perl-DBI perl-Digest-SHA1 perl-DBD-MySQL
b). Redmine.pmにパッチを当てる(Git用)
SubversionのリポジトリにHTTPでアクセスする際、Redmineに付属しているRedmine.pmを使用して認証を行います。
Redmine.pmはSubversion用のものなので、http://www.redmine.org/issues/4905にあるパッチを当てることでGitリポジトリにHTTPでアクセスできるようになります。
# cd $REDMINE_ROOT/extra/ # cp Redmine.pm Redmine.pm.orig (バックアップのため) # wget "http://www.redmine.org/attachments/download/5989/0001-merged-LeeF-s-patch-with-Michael-Fox-s-security-fix-redminetrunk.patch" (上記URLの最新のパッチ) # patch Redmine.pm < 0001-merged-LeeF-s-patch-with-Michael-Fox-s-security-fix-redminetrunk.patch
c). Redmine.pmをperlのインクルードパスが通っている場所に設置する
設置例:
- /etc/httpdにApacheディレクトリを作成し、その中にAuthnディレクトリを作成しその中にRedmine.pmを入れる
- /usr/lib/perl5/Apache/Authn/にRedmine.pmを入れる(ディレクトリがない場合は作成する)
d). hgweb.cgiの設定(Mercurial用)
#cp /usr/share/doc/mercurial-x.x.x/hgweb.cgi /var/www/repos/hg/ (x.x.xはインストールされたmercurialのバージョンです。) #vi /var/www/repos/hg/hgweb.config [paths] /=/var/www/repos/hg/** [web] allow_push = * allowbz2 = yes allowgz = yes allowzip = yes #vi /var/www/repos/hg/hgweb.cgi 7行目 config = "/path/to/repo/or/config" ↓ config = "hgweb.config"
e). Apacheの設定
# vi /etc/httpd/conf.d/redmine.conf PerlLoadModule Apache::Authn::Redmine # Subversion <Location /repos/svn> DAV svn SVNParentPath "/var/www/repos/svn" AuthType Basic AuthName "Redmine SVN Repository" Require valid-user PerlAccessHandler Apache::Authn::Redmine::access_handler PerlAuthenHandler Apache::Authn::Redmine::authen_handler ## for mysql RedmineDSN "DBI:mysql:database=redmine_db;host=localhost" RedmineDbUser "redmine_user" RedmineDbPass "redmine_pass" </Location> # Git SetEnv GIT_PROJECT_ROOT /var/www/repos/git SetEnv GIT_HTTP_EXPORT_ALL ScriptAlias /repos/git/ /usr/libexec/git-core/git-http-backend/ <Location /repos/git> AuthType Basic AuthName "Redmine Git Repository" Require valid-user PerlAccessHandler Apache::Authn::Redmine::access_handler PerlAuthenHandler Apache::Authn::Redmine::authen_handler RedmineDSN "DBI:mysql:database=redmine_db;host=localhost" RedmineDbUser "redmine_user" RedmineDbPass "redmine_pass" RedmineGitSmartHttp yes </Location> # Mercurial ScriptAliasMatch ^/repos/hg(.*) /var/www/repos/hg/hgweb.cgi/$1 <Location /repos/hg> AuthType Basic AuthName "Redmine Mercurial Repository" Require valid-user PerlAccessHandler Apache::Authn::Redmine::access_handler PerlAuthenHandler Apache::Authn::Redmine::authen_handler RedmineDSN "DBI:mysql:database=redmine_db;host=localhost" RedmineDbUser "redmine_user" RedmineDbPass "redmine_pass" </Location>
データベース名、データベースアクセスユーザ名・パスワードは適宜変更して、Apache再起動
# service httpd configtest # service httpd graceful
f). 認証が有効になっているか実際にアクセスする
- svn ls / git clone / hg clone
- TortoiseSVN・TortoiseGit・TortoiseHgなどを使用してアクセス
Redmineユーザ名とパスワードでアクセスできるか確認する
「RedmineとSubversion・Git・Mercurialのリポジトリ(ともに同じCentOSサーバ上)の連携(リポジトリの作成とアクセス・認証)」に2件のコメントがあります