さくらVPS Ubuntu git とredmine の連携

こんばんは、ファルコンMです。

 

さくらVPS Ubuntu でgitとredmine の連携をさせた時の忘備録。

 

開発環境

  • さくらVPS 1Gプラン
  • Ubuntu 16.04
  • ruby 2.3.1p112 ( Redmine をインストールしたら変わった? )
  • Redmine 3.4

やりたいこと

  • Redmine からgit リポジトリを参照
  • Redmine チケットとの連携
  • git のクローン、プッシュ時は、Redmine と同じログインID を入力させる。

 

redmine からgit リポジトリを参照

 

参考URL

 

リポジトリの作成

連携させるためのリポジトリを作成する。

 

$ cd /var/www/html/git
$ sudo mkdir test.git
$ cd test.git
$ sudo git init --bare
$ sudo git update-server-info
$ cd ../
$ sudo chown -R www-data:www-data test.git

 

Redmineプロジェクトと連携

任意のプロジェクトで「設定」を選択して「リポジトリ」タブを選ぶ。

 

新しいリポジトリを選択し次の値を入力する。

  • バージョン管理システム : Git
  • メインリポジトリ : チェックON
  • 識別子 : test ( 作成したリポジトリの拡張子の前 )
  • リポジトリのパス : /var/www/html/git/test.git
  • パスのエンコーディング : ブランク
  • ファイルとディレクトリの最新コミットを表示する : ON

その後、作成を押す。

 

Redmine チケットとの連携

 

push 後、即座にチケットとリポジトリを紐づける

 

「管理」→「設定」のリポジトリタブを選択し、キーの作成を行い、APIキーを控えておく。

 

gitのリポジトリのpost-receive フックを作成する。

$ cd /var/www/html/git/test.git/hooks
$ sudo vi post-receive

 

post-receive に以下を記述する。

#!/bin/sh
wget http://localhost/redmine/sys/fetch_changesets?key=作成したAPIキー

 

作成後、権限の変更をする。

$ sudo chown www-data:www-data post-receive
$ sudo chmod 755 post-receive

コミットメッセージにチケット番号のないものは、pushできない設定

参考サイト

 

$ cd ~
$ sudo git clone https://github.com/bleis-tift/Git-Hooks/
$ sudo cp Git-Hooks/update /var/www/html/git/test.git

 

Redmine ユーザーとgit の連携

 

git push 時、Redmine ユーザーで認証する

 

必要なライブラリのインストール

$ sudo apt-get install libapahce2-mod-auth-mysql libdigest-sha-perl libapache-dbi-perl libdbd-mysql-perl<br data-mce-bogus="1">

 

 

Redmine.pm の関連付けを行う。

$ mdkir -p /etc/perl/Apache/Authn
$ ln -s /var/www/redmine/extra/svn/Redmine.pm /etc/perl/Apache/Authn/Redmine.pm

 

 

git のpush 時、Redmine のアカウントでBasic 認証する設定をする。Apache の設定ファイル /etc/apache2/sites-available/default-ssl.conf を編集する。

 

<IfModule mod_ssl.c>
  <VirtualHost _default_:443>
    ( 略 )
    ### 追加
    PerlLoadModule Apache::Authn::Redmine

    SetEnv GIT_PROJECT_ROOT /path/to/git/repos/
    SetEnv GIT_HTTP_EXPORT_ALL
    ScriptAlias /git/ /usr/lib/git-core/git-http-backend/

    <LocationMatch /git/>
      PerlAccessHandler Apache::Authn::Redmine::access_handler
      PerlAuthenHandler Apache::Authn::Redmine::authen_handler

      AuthType Basic
      AuthName Git
      AuthUserFile /dev/null
      Require valid-user
    

      RedmineDSN "DBI:mysql:database=redmine_db;host=192.168.1.xx"
      RedmineDbUser "( redmine データベースのユーザー名 )"
      RedmineDbPass "( redmine データベースのパスワード )"
      RedmineGitSmartHttp yes
    </LocationMatch>
    (略)

 

モジュールの有効化と再起動

$ sudo a2enmod auth_mysql
$ sudo service apache2 restart

 

上手くいっていれば、clone またはpush などのときに認証画面が表示される。Redmineのユーザーで認証できればオーケー。

なお、git のユーザー名とRedmine のユーザー名を一致させておく必要がある。これをしておけば、Redmine のgit のpush の履歴とRedmineのユーザーの連携ができる。

 

クローンするときは、https://( ホスト名 )/git/test.git にアクセスする。

スポンサードリンク



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です