このドキュメントでは、Windows環境のBitnamiでGit認証をRedmine認証に統合する設定をついて記述します。
また、Redmine・Gitの認証先をLDAP(Active Diretory)に統合する設定についても記述します。
他の同様の記事はかなり以前のもので、またほとんどLinux環境について書かれたものでした。Windows環境については情報が乏しいようでしたので、本情報が役にたつ人がいましたら幸いです。
ただ、Redmine/Git連携の場合、Pull Request機能が無いので、現在はあまり用いられていないのではないかという気もしています。
- 環境
- Bitnami導入
- Redmine/Git統合認証
- LDAP認証統合
- GitコミットとRedmineチケット連携
- 備考
環境
- Windows Server 2019
- Bitnami v4.1.0-0
- Redmine v4.1.0.stable
- Ruby v2.5.7-p206 (2019-10-01) [x64-mingw32]
- Rails v5.2.4.1
- Git v2.19.1
- Perl関連
- Strawberry Perl v5.28.0.1
- mod_perl v2.0.10-strawberryperl-5.28.0.1-64bit
- LDAP
- Windows Server 2019 Active Directory
Bitnami導入
ダウンロード
以下URLからインストーラをダウンロードします。
※2023/09/23追記
どうやらBitnami RedmineはWindowsもLinuxもインストーラーバイナリファイルの配布が終了してしまったようです。
[On my Computer]は"Virtual Machines"しか選択できなくなっています。
古いバージョンで良いのでダウンロードしたいという人には、以下のURLが参考になります。私が確認できたバイナリファイルのダウンロードリンクを以下に記載しておこうと思います。(※私が個人で公開しているとかでは無く、Bitnami公式のURLからのダウンロードですので安心です。いつまで公開されているかわかりませんが。。。)
■Linux
- v4.1.0-9
- v4.2.1-0
- v4.2.1-3
■Windows
- v4.1.0-8
- v4.1.1-7
- v4.2.3-4
- v5.0.0-2
- v5.0.3-0
インストール
ダウンロードしたインストーラを実行し、ウィザードに従いインストールします。 このドキュメントでは、インストールディレクトリを以下に変更しています。
- C:\Prg\Bitnami\redmine-4.1.0-0
Redmine/Git統合認証
Redmine/Git連携設定(Redmine管理画面)
Gitリポジトリ作成
今後の作業で使用するGitコマンドは、Bitnamiに同梱されているものを使用します。 Gitコマンドは以下にインストールされています。
- C:\Prg\Bitnami\redmine-4.1.0-0\git\bin\git.exe
Gitリポジトリのフォルダを作成
Gitリポジトリを格納するルートフォルダを作成します。 本ドキュメントでは以下フォルダを作成します。
- C:\Prg\Bitnami\git_repos
GitのBareリポジトリ作成
PowerShellで以下のコマンドを実行し、GitのBareリポジトリを作成します。 ここでは「testgit01」というリポジトリを作成しています。
cd C:\Prg\Bitnami\git_repos C:\Prg\Bitnami\redmine-4.1.0-0\git\bin\git init --bare --shared testgit01 cd testgit01 C:\Prg\Bitnami\redmine-4.1.0-0\git\bin\git update-server-info
Gitリポジトリへの追加設定
続けてPowerShellで以下を実行します。
C:\Prg\Bitnami\redmine-4.1.0-0\git\bin\git config http.receivepack true C:\Prg\Bitnami\redmine-4.1.0-0\git\bin\git config --system core.quotepath false
1つ目のコマンドは「Git Pushを許可する設定」、2つ目のコマンドは「日本語ファイル名を表示する設定」となります。
RedmineにGitリポジトリを登録
Git管理用Redmineプロジェクト作成
Redmineで、Gitリポジトリを管理する用のプロジェクトを作成します。 その際、プロジェクトの識別子は前手順で作成したGitリポジトリのリポジトリ名(本手順では「testgit01」)にします。
- 設定内容
項目 | 設定値 | 備考 |
---|---|---|
名称 | testgit01 | 任意の名前 |
識別子 | testgit01 | 管理するGitリポジトリ名 |
公開 | ✔ | |
モジュール | リポジトリ |
Git管理用Redmineプロジェクト設定
Git管理用Redmineプロジェクトの設定で、新しいリポジトリ追加の設定をします。
- 設定内容
項目 | 設定値 | 備考 |
---|---|---|
バージョン管理システム | Git | |
メインリポジトリ | ✔ | 1つ目のリポジトリなのでメインに設定 |
識別子 | testgit01 | 任意の名前 |
リポジトリパス | C:\Prg\Bitnami\git_repos\testgit01 | |
ファイルとディレクトリの最新コミットを表示する | ✔ |
Gitアクセス用ロールを作成
Gitへのアクセス権管理をRedmineで実施するため、Gitロールを作成します。
- Git更新権限ロール
- リポジトリ権限
- 更新履歴の閲覧
- リポジトリの閲覧
- コミット権限
- リビジョンとチケットの関連の管理
- リポジトリ権限
- Git参照権限ロール
- リポジトリ権限
- 更新履歴の閲覧
- リポジトリの閲覧
- リポジトリ権限
Gitアクセス用ロール権限を付与したユーザーをプロジェクトメンバーとして登録
テスト用に以下2つのユーザーをプロジェクトメンバーとして登録します。 その際先ほど作成したGitアクセス用ロールを付与します。
- test01:Git更新権限ロール
- test02:Git参照権限ロール
Redmine/Git連携設定(設定ファイル)
事前準備(Perl環境)
Strawberry Perl
Git認証をRedmine認証に統合するモジュールはPerlで動作するため、インストールします。 Windows版Bitnamiのインストールフォルダ配下を「Perl.exe」で検索すると一応存在するのですが、Perlの追加モジュールを導入する方法がわからなかったので、Perlは別途インストールしました。
ダウンロード
以下URLからインストーラをダウンロードします。この際、この後の手順でインストールする「mod_perl」が対応しているバージョンを選びます。本手順では「v5.28.0.1」を使用しました。
インストール
ダウンロードしたインストーラを実行し、ウィザードに従いインストールします。 このドキュメントでは、インストールディレクトリを以下に変更しています。
- C:\Prg\Strawberry
mod_perl
ダウンロード
以下URLからダウンロードします。今回は検証時点での最新版をダウンロードしました。 その最新版が「strawberryperl-5.28.0.1」となっていたので、前手順のstrawberryperlはv5.28.0.1をインストールしました。
インストール
ダウンロードしたzipファイルを解凍してできるフォルダを以下にコピーします。
- Apache24の中身 → C:\Prg\Bitnami\redmine-4.1.0-0\apache2
- Strawberryの中身 → C:\Prg\Strawberry
Git認証をRedmine認証に統合するためのファイル配置
Git認証をRedmine認証に統合する処理を行うPerl処理ファイルを所定の場所へコピーします。
- コピー元 : C:\Prg\Bitnami\redmine-4.1.0-0\apps\redmine\htdocs\extra\svn\Redmine.pm
- コピー先 : C:\Prg\Strawberry\perl\site\lib\Apache\Authn\Remine.pm
Redmine関連設定ファイル修正
RedmineのMySQL接続情報を確認
以下の設定ファイルを参照し、RedmineのMySQL接続情報を確認します。
C:\Prg\Bitnami\redmine-4.1.0-0\apps\redmine\htdocs\config\database.yml
確認するDB接続情報
- database
- host
- username
- password (※導入する度に値が変わる)
Git連携用のApache設定ファイルを新規作成
Git連携用のApache設定ファイルを新規に作成します。
- C:\Prg\Bitnami\redmine-4.1.0-0\apache2\conf\extra\httpd-git.conf
前手順で確認したMySQL接続情報は、以下の設定項目で使用します。
- RedmineDSN
- RedmineDbUser
- RedmineDbPass
LoadFile C:\Prg\Strawberry\perl\bin\perl528.dll LoadModule perl_module modules/mod_perl.so PerlLoadModule Apache::Authn::Redmine # Gitリポジトリを作成するベースフォルダ SetEnv GIT_PROJECT_ROOT C:/Prg/Bitnami/git_repos SetEnv GIT_HTTP_EXPORT_ALL ScriptAlias /git C:/Prg/Bitnami/redmine-4.1.0-0/git/mingw64/libexec/git-core/git-http-backend.exe <Location /git> PerlAccessHandler Apache::Authn::Redmine::access_handler PerlAuthenHandler Apache::Authn::Redmine::authen_handler AuthType Basic AuthName Git # for Redmine Authentication(前手順で確認したDB情報) RedmineDSN "DBI:mysql:database=bitnami_redmine;host=localhost" RedmineDbUser "bitnami" RedmineDbPass "xxxxxxxx" RedmineGitSmartHttp yes Require valid-user </Location>
Git連携用のApache設定ファイルをApache本体の設定ファイルに読み込み
Apache本体の設定ファイルの末尾に、前手順で作成したGit連携用のApache設定ファイルを読み込む設定を追記します。
- C:\Prg\Bitnami\redmine-4.1.0-0\apache2\conf\httpd.conf
Include conf/extra/httpd-git.conf
Redmine設定ファイルにGitパスを設定
以下のRedmine設定ファイルに、git.exeのパスを設定します。
- C:\Prg\Bitnami\redmine-4.1.0-0\apps\redmine\htdocs\config\configuration.yml
default: scm_git_command: C:\Prg\Bitnami\redmine-4.1.0-0\git\bin\git.exe
再起動
ここまで設定をしたら、設定内容を反映させるために全体を再起動します。
Redmine/Git連携の動作確認
これまでの設定内容の動作確認をします。 本手順で作成したGitリポジトリ「testgit01」のURLは以下となります。
- http://[host名]/git/testgit01
以下の操作をします。
- Gitリポジトリ[testgit01]をClone
- Cloneしてできたフォルダに、ファイルを新規作成
- 新規作成したファイルを、ステージング環境へ追加・コミット
- リモートリポジトリへPush
git clone http://localhost/git/testgit01 cd .\testgit01 git add * git commit -m "test commit" git push
pushをした際に、認証画面が表示されます。編集権限を保持しているRedmineユーザー[test01]でログインすると、Pushが正常に完了します。 この際、パスワードはRedmineのパスワードを使用します。
参照権限しか保持していないtest02ユーザーでログインすると、Pushでエラーが発生します。
Gitへのログイン情報は、Windowsの資格情報マネージャーに登録されます。
LDAP認証統合
LDAP認証設定
Redmineの認証をLDAPにした際、Git認証も同じLDAP認証にする方法を記載します。
事前準備
- LDAP環境を用意
- 本手順ではActive Directory 2019を使用
- LDAPにRedmineユーザーを格納するベースDNを作成
- 本手順では[OU=redmine,DC=testdomain,DC=local]
- LDAPに、Redmineが検索を実行するためのシステムアカウントを作成
- 本手順ではベースDN配下に[redmine]ユーザーを作成
RedmineにLDAP認証設定を追加
Redmine管理画面の[LDAP認証]から、認証先として使用するLDAPを登録します。
Perl追加モジュールの導入
Strawberry Perl環境にLDAP認証モジュール「Authen::Simple::LDAP」をインストールします。PowerShellにて以下のコマンドを実行します。
cpan install Authen::Simple::LDAP
Apache設定ファイルの修正
以下のファイルにLDAP認証に関する設定を追記します。
- C:\Prg\Bitnami\redmine-4.1.0-0\apache2\conf\extra\httpd-git.conf
PerlLoadModule Authen::Simple::LDAP
Apache再起動
設定を反映させるためにApacheを再起動します。
Redmine/Git連携(LDAP認証)の動作確認
ADユーザー登録
RedmineにLDAP設定をした際に設定したベースDN配下にテスト用ユーザー[test03]を作成します。 この際、以下の情報は、Redmineユーザーの必須入力項目となっているため、必ず登録をする必要があります。
- ユーザーログオン名
- 姓
- 名
- 電子メール
Redmineユーザー登録
ADに登録した[test03]ユーザーをRedmineに登録します。 ユーザー登録画面の[ログインID]で[test]と入力するとADが検索されて候補のユーザーが表示されますので、[test03]を選択します。AD登録時に設定した属性が画面に自動入力されます。
その後、[test03]ユーザーのプロジェクト設定で、Git管理用Redmineプロジェクト[testgit01]を追加します。
Gitリポジトリへの認証確認
以下コマンドを実行し、Git認証画面を表示させ、[test03]ユーザーでログインできることを確認します。
git push
認証画面が表示されるので[test03]ユーザーでログインします。
認証が成功すれば動作確認完了です。 LDAP認証したユーザーも、認証情報はWindowsの資格情報マネージャーに登録されます。
GitコミットとRedmineチケット連携
Gitコミットコメントで、[refs #チケットNo]と書くと、RedmineのチケットにGitコミットが関連付けられます。 Git Pushしたときに即時に関連付けるには、以下の手順を実施します。
Gitと連携するRedmineプロジェクトの設定
Remineプロジェクトの設定画面の「リポジトリ」タブを表示し、Gitリポジトリを登録します。
- 設定内容
項目 | 設定値 | 備考 |
---|---|---|
バージョン管理システム | Git | |
メインリポジトリ | ✔ | 1つ目のリポジトリなのでメインに設定 |
識別子 | testgit01 | 任意の名前 |
リポジトリパス | C:\Prg\Bitnami\git_repos\testgit01 | |
ファイルとディレクトリの最新コミットを表示する | ✔ |
リポジトリAPIキーの設定
Redmine管理画面の[リポジトリ]タブで、APIキーを設定し保存します。
※[キーの生成]をクリックするとランダムな文字列が生成されます。
[post-receive]ファイルの作成
Git PushしたときにGitコミットとRedmineチケットを関連付ける処理を記載します。
このファイルは、Gitリポジトリフォルダ内の[hook]フォルダ内に作成します。本書で作成した「testgit01」リポジトリの場合は以下となります。
- C:\Prg\Bitnami\git_repos\testgit01\hooks\post-receive
Linux環境の場合、このファイルはBashで書く例がたくさんあったが、Windows環境だと謎のエラーが発生し動作しませんでした。
その為、以下のようにPerlスクリプトとして記述すると想定通りの動きをしました。
#!/usr/bin/perl system "curl -s http://localhost/redmine/sys/fetch_changesets?key=Dz5d2ipRokWxmVlvPlJo"
動作確認
Gitコミットで[refs #チケット番号]をコメントに含めます。
Redmineチケットに以下のように表示されます。
備考
[post-receive]ファイルをBashで書いた時に起きたエラー
[post-receive]ファイルをBashで書いた時のエラーメッセージを念のため書いておきます。
remote: 0 [main] bash 7172 C:\Prg\Bitnami\redmine-4.1.0-0\git\bin\..\usr\bin\bash.exe: *** fatal error - add_item ("\??\C:\Prg\Bitnami\redmine-4.1.0-0\git", "/", ...) failed, errno 1 remote: Stack trace: remote: Frame Function Args remote: 000FFFF9BC0 0018005E0DE (0018025366A, 00180230C39, 00600010000, 000FFFF8B40) remote: 000FFFF9BC0 001800468F9 (000FFFFAC0C, 000FFFF9BC0, 00000000000, 00000000000) remote: 000FFFF9BC0 00180046932 (000FFFF9BC0, 00000000001, 00600010000, 505C3A435C3F3F5C) remote: 000FFFF9BC0 001800CD2CB (00000000000, 00000000000, 00000000000, 00000000000) remote: 1D5D9721DAB2A6A 0018011BF95 (001800B463C, 00000000000, 00000000000, 00000000000) remote: 000FFFFCCD0 00180046EF3 (00000000000, 00000000000, 00000000000, 00000000000) remote: 00000000000 00180045A03 (00000000000, 00000000000, 00000000000, 00000000000) remote: 000FFFFFFF0 00180045AB4 (00000000000, 00000000000, 00000000000, 00000000000) remote: End of stack trace