最終回の今回は、RedmineのプラグインをインストールしてSVN/Gitとの連携できるようにしていきます。
まずはSVN、Gitをインストール、リポジトリの親ディレクトリを作成します。
$ sudo yum install subversion mod_dav_svn git
$ sudo mkdir -p /var/www/repos/{svn,git}
$ sudo chown -R apache:apache /var/www/repos
$ sudo mkdir -p /var/www/repos/{svn,git}
$ sudo chown -R apache:apache /var/www/repos
Redmineとリポジトリの連携ができるプラグイン、SCM Creatorをインストールします。
バージョンは2012/12/24現在の最新バージョン、0.4.2を使っていきます。
$ sudo yum install mod_perl perl-DBI perl-Digest-SHA perl-Digest
今回は-SHA1 perl-DBD-MySQL
$ cd $HOME/temp
$ curl -o redmine_scm-0.4.2.tar.bz2 http://projects.andriylesyukcom/attachments/download/388/redmine_scm-0.4.2.tar.bz2
$ tar xvjf redmine_scm-0.4.2.tar.bz2
$ sudo mv redmine_scm /var/lib/redmine/plugins/redmine_scm
$ sudo chown -R apache:apache /var/lib/redmine/plugins/redmine_scm
$ cd $HOME/temp
$ curl -o redmine_scm-0.4.2.tar.bz2 http://projects.andriylesyukcom/attachments/download/388/redmine_scm-0.4.2.tar.bz2
$ tar xvjf redmine_scm-0.4.2.tar.bz2
$ sudo mv redmine_scm /var/lib/redmine/plugins/redmine_scm
$ sudo chown -R apache:apache /var/lib/redmine/plugins/redmine_scm
SCM CreatorのDBを構築します。
$ cd /var/lib/redmine
$ rvm use 1.9.3-p327@redmine
$ rvmsudo rake redmine:plugins:migrate RAILS_ENV=production
$ rvm use 1.9.3-p327@redmine
$ rvmsudo rake redmine:plugins:migrate RAILS_ENV=production
SCM Creatorの設定ファイルを作成します。
production: deny_delete: true auto_create: false svn: path: /var/www/repos/svn svnadmin: /usr/bin/svnadmin url: repos/svn git: path: /var/www/repos/git git: /usr/bin/git options: --bare url: repos/git update_server_info: true git_ext: true mercurial: path: /var/lib/mercurial hg: /usr/bin/hg bazaar: path: /var/lib/bazaar bzr: /usr/bin/bzr init: init-repository log_encoding: UTF-8 development:
Redmine.pmをperlのインクルードパス配下にコピーします。
ちなみに、このRedmine.pmはRedmine 2.0系まではGitを使用するためにpatch当てが必要だったんですが、2.1に上がってからRedmineのtrunkにpatchが反映されて、(少しですが)面倒な作業がなくなってます。
$ cd /var/lib/redmine/extra/svn
$ sudo mkdir -p /usr/lib64/perl5/vendor_perl/Apache/Authn
$ sudo cp /var/lib/redmine/extra/svn/Redmine.pm /usr/lib64/perl5/vendor_perl/Apache/Authn/Redmine.pm
$ sudo mkdir -p /usr/lib64/perl5/vendor_perl/Apache/Authn
$ sudo cp /var/lib/redmine/extra/svn/Redmine.pm /usr/lib64/perl5/vendor_perl/Apache/Authn/Redmine.pm
Redmineの設定ファイルを記述します。
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 RedmineDSN "DBI:mysql:database=redmine_db;host=localhost" RedmineDbUser "redmine_user" RedmineDbPass "redmine" </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" RedmineGitSmartHttp yes </Location>httpdを再起動します。
$ sudo /etc/init.d/httpd restart
これでRedmineにアクセスすると、プロジェクトにSVN/Gitのリポジトリが追加できるようになっているはずです。
SVN/Gitクライアントでの認証もRedmineのユーザ/パスワードでできようになっているので、確認してみてください。
尚、プロジェクトがPublic(Redmineでプロジェクト作成時のデフォルト)だと、Redmine.pmが原因で500エラーが発生します。
"Anonymous"Roleの閲覧権限があるかどうかのチェックでコケているので、以下のいずれかの方法で解決できます。
- Redmineの管理者アカウントでログインし、プロジェクトの"Public"チェックボックスを外す
- Redmineの管理者アカウントでログインし、"Anonymous"Roleの編集画面で、何も編集せずにSaveボタンをクリック
- Redmine.pmを以下のように編集し、anonymous_role_allows_browse_repositoryのif文の中で変数チェックを記述
sub anonymous_role_allows_browse_repository { my $r = shift; my $dbh = connect_database($r); my $sth = $dbh->prepare( "SELECT permissions FROM roles WHERE builtin = 2;" ); $sth->execute(); my $ret = 0; if (my @row = $sth->fetchrow_array) { if (defined($row[0]) && $row[0] =~ /:browse_repository/) { # 変数チェックを追加 $ret = 1; } } $sth->finish(); undef $sth; $dbh->disconnect(); undef $dbh; $ret; }
今回の内容は下記のサイトを参考にさせていただいています。
http://mistymagich.wordpress.com/2011/10/19/redmine_and_subversion-git-mercurial-repository