2021年3月20日土曜日

RedmineとGitlabを連携するメリット(Githubでチケット管理するより良い。)

 勉強の為に転載しました。

https://agora.sanei-hy.co.jp/technology/2018/03/00016/

コメント:
2018年9月現在では、GitLabがRedmineの機能をカバーし始めたので、上記の連携を辞めて解除して、Gitlab単体やGo言語製のGithubクローンGogs
https://opcdiary.net/go%E8%A8%80%E8%AA%9E%E3%81%A7%E9%96%8B%E7%99%BA%E3%81%95%E3%82%8C%E3%81%9Fgithub%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%B3gogs%E3%81%AE%E7%B4%B9%E4%BB%8B/

などを使う動きもあるようです。

Redmine & Gitlabは、低速な言語でチームでのソースコードの保守メンテナンスの効率が低く、推薦システムメモリーも約8GBとレンタルサーバーでの運用コストが高いRubyで出来ております。2021年03月時点で考慮しますと、将来的には、高速で、少ないシステムメモリーで動作して開発したWEBサイトのソースコードのチームでの保守メンテナンスの効率が良いなどのメリットがあるGo言語に移植するべきですが、更に将来V言語とそのフレームワークの完成度が高まり安定して動作する様になったら、Go言語とV言語は、構文と特徴がそっくりなので、Go言語からV言語に移植しやすいと思います。aon(エーオン)CEO WEB Programmer 石塚 正浩

2018年3月20日
  •    
  •    
  • googleplus
今回は、RedmineとGitlabを連携する設定手順を紹介します。
RedmineとGitlabを連携するメリット
Redmine、Gitlabを単体で使用しても便利なのですが、
その2つのツールを連携すると、さらに以下のようなことができるようになります。
  • Redmineの画面上からGitのリポジトリーが見える
    Redmine上で、最新リビジョンまでデータの差分を見ることができます。
  • Gitのリポジトリーへファイルをコミットする時にRedmineチケットの紐付けができる
    Redmineチケットにどのコミットが関連しているのかが確認できます。
    いつ、誰が、何をしたのか…も分かり易く表示されます。

動作確認環境

製品: TS453Pro
バージョン: QTS 4.2.1 Build 20160601

概要

記事では以下の手順を紹介します。
RedmineとGitlabのインストールはSSH接続での操作を前提としています。
また、Redmine・Gitlabでのプロジェクト・チケットの作成、Gitのpush等一般的な操作の説明は
省略します。
  • 事前準備
  • Redmineのインストール
  • Gitlabのインストール
  • Redmine/Gitlabの設定
  • Redmine-Gitlab連携確認

事前準備

RedmineとGitlabを連携するためには、Redmine側からGitlab側のリポジトリーを参照する必要が
あります。

RedmineコンテナーからGitlabコンテナーを直接参照することはできません。
QNAPのNASストレージ上にリポジトリーデータ用の共有フォルダーを作成し、両コンテナーの
インストール時にマウント元として指定します。

今回のインストールする環境のイメージは以下のような形になります。
※補足※
下記のDocker hubの説明ではデータのマウント元には
/srv/docker/gitlab/や/srv/docker/redmine/を指定していますが、
QNAPで同様の設定を行うとNASストレージの特性上、
再起動時に全てのデータが消えてしまいますので注意してください。
これからご説明する手順で作成した共有フォルダーであれば、再起動時もデータが残ります。
Docker hub (sameersbn/redmine) 
Docker hub (sameersbn/gitlab) 

手順

  1. ホーム画面から「File Station」アイコンをクリック
  2. ボリュームの右側に表示されるPlusアイコンをクリック
  3. 共有フォルダー名を入力、[作成]ボタンをクリック
ボリュームの下にフォルダーが生成されました。
作成した領域は "/share/フォルダー名" でアクセス可能です。

RedmineとGitlabのインストール時はデータ領域をこのフォルダーからマウントします。

Redmineのインストール

Redmine、MySQLのコンテナーをコマンドラインからインストールします。
この操作はSSH接続で行います。
各入力値の説明は以下のとおりです。

引数説明
MySQL NameMySQLコンテナーの名前
Redmine NameRedmineコンテナーの名前
Redmine DB Root PwdRedmine用DBのrootユーザーのパスワード
Redmine DB NameRedmine用DBの名前
Redmine HTTP Port NoRedmineをブラウザーで使用するときのポート
番号
Shared Folder Path事前準備で作成したQNAPのNASストレージ上の
フォルダーの絶対パス

手順

  1. リモートPCのターミナルから、adminアカウントでログイン
    リモートPCからSSH接続する手順 > をご覧ください。
  2. RedmineとGitlabで使用するMySQLをインストール
    インストール時にはRedmineのデータベースを作成します。
    以下のコマンドを入力します。<>の入力値の説明は上の表を参照してください。
    $ docker run -d --name <MySQL Name> 
    -e MYSQL_ROOT_PASSWORD=<Redmine DB Root Pwd> 
    -e MYSQL_DATABASE=<Redmine DB Name> 
    mysql:latest --character-set-server=utf8 --collation-server=utf8_general_ci 
    --skip-character-set-client-handshake
  3. Redmine本体 インストール
    以下のコマンドを入力します。
    $ docker run -d -p <Redmine HTTP Port No>:80 --name <Redmine Name> 
    -e DB_NAME=<Redmine DB Name> -e DB_PASS=<RedmineDB Root Pwd> 
    --link <MySQL Name>:mysql -v <Shared Folder Path>:/home/git/data 
    sameersbn/redmine:latest

Gitlabのインストール

Gitlab、Redisのコンテナーをコマンドラインからインストールします。 Redmineの
インストール時に作成したMySQLコンテナーにGitlab用のデータベース、ユーザーを追加します。 
この操作はSSH接続で行います。


各入力値の説明は以下のとおりです。

引数説明
Redis NameRedisコンテナーの名前
MySQL NameMySQLコンテナーの名前(Redmineインストール時に
決めたもの)
Redmine NameRedmineコンテナーの名前(Redmineインストール時に
決めたもの)
Gitlab NameGitlabコンテナーの名前
Gitlab DB UserGitlab用DBのユーザー名
Gitlab DB PwdGitlab用DBのパスワード
Gitlab DB NameGitlab用DBの名前
Gitlab HTTP Port NoGitlabをブラウザで使用するときのポート番号
(Redmineや他のWebアプリと重複しないように番号を
選択する)
Gitlab SSH Port NoGitlabをSSH接続で使用するときのポート番号
Shared Folder Path事前準備で作成したQNAPのNASストレージ上のフォルダーの絶対パス

手順

  1. リモートPCのターミナルから、adminアカウントでログイン
    リモートPCからSSH接続する手順 > をご覧ください。
  2. Gitlabで使用するRedisをインストール
    以下のコマンドを入力します。<>の入力値の説明は表を参照してください。
    $ docker run --name <Redis Name> -d sameersbn/redis:latest
  3. MySQLへログイン
    以下のコマンドを入力します。
    $ docker exec -it <MySQL Name> bash
    $ mysql -uroot -psecret
  4. MySQLのデータベースへスキーマを追加
    以下のコマンドを入力します。
    mysql> CREATE USER '<Gitlab DB User>'@'%.%.%.%' IDENTIFIED BY '<Gitlab DB Pwd>';
    mysql> CREATE DATABASE IF NOT EXISTS `<Gitlab DB Name>` 
        -> DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
    mysql> GRANT ALL PRIVILEGES ON `<Gitlab DB Name>`.* 
        -> TO '<Gitlab DB User>'@'%.%.%.%';
    mysql> quit
  5. 以下のコマンドでGitlab本体をインストールします
    $ docker run --name <Gitlab Name> -d 
     -p <Gitlab HTTP Port No>:80 -p <Gitlab SSH Port No>:22 
     -e GITLAB_PORT=<Gitlab HTTP Port No> -e GITLAB_SSH_PORT=<Gitlab SSH Port No> 
     -e DB_ADAPTER=mysql2 -e DB_HOST=mysql -e DB_NAME=<Gitlab DB Name> 
     -e DB_USER=<Gitlab DB User> -e DB_PASS=<Gitlab DB Pwd> 
     -e GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string 
     --link <MySQL Name>:mysql --link <Redis Name>:redisio 
     --link <Redmine Name>:redmine -v <Shared Folder Path>:/home/git/data 
     sameersbn/gitlab:latest

Redmine-Gitlabの設定

インストールしたRedmineとGitlabそれぞれに連携するプロジェクトを作成し、設定を追加します。

プロジェクトの新規作成

ブラウザーからRedmineとGitlabにプロジェクトを作成します。作成の詳細な手順は省略します。
  1. ブラウザーからGitlabを開く
  2. rootのアカウントでログイン
  3. 連携用に新しいプロジェクトを作成
  4. ブラウザーからRedmineを開く
  5. adminのアカウントでログイン
  6. 連携用に新しいプロジェクトを作成

Redmineの設定

ブラウザーからRedmineの連携の設定を行います。また、Gitlabの設定に必要な情報を確認します。
  1. ブラウザーからRedmineを開く
  2. ページ右側:管理 > 設定 メニューを選択
  3. 「リポジトリ」タブ表示
  4. 以下のとおり設定
    項目名入力値
    コミットを自動取得するチェックOn
    リポジトリ管理用のWebサービスを有効にするチェックOn
    APIキーAPIキー値(または「キーの生成」から自動生成)
    ※APIキーはこの後Gitlab側へ設定するためメモしておく
  5. ブラウザーに以下のURLを入力
    http://QNAP IPアドレス:Redmine HTTPポート番号/projects/プロジェクト識別子.xml

  6. 表示されるXMLからプロジェクトID(idタグ)の数字を確認
    プロジェクトIDはこの後Gitlab側へ設定するため覚えておきます。
  7. Redmineの画面上から連携するプロジェクトを開く
  8. 「設定」タブ クリック
  9. 「リポジトリ」タブ クリック
  10. 「新しいリポジトリ」 リンククリック
  11. 以下のとおりリポジトリを作成
    項目名入力値
    バージョン管理システムGit
    リポジトリのパス/home/git/data/repositories/GitlabのProjectの名前空間/GitlabのProject名
    ファイルとディレクトリの最新コミットを表示するチェックOn
  12. 設定後の画面から識別子名をクリック
  13. Gitlabのプロジェクトへ既にファイルをコミット済みの場合、ファイルとコミット履歴が表示されることを確認


    まだファイルをコミットしていない場合は404エラーが表示されます。

Gitlabの設定

ブラウザーからGitlabの連携の設定を行います。
  1. ブラウザーからGitlabを開く
  2. 連携するプロジェクトを開く
  3. Settings > Web hooks 選択
  4. URLを入力
    http://redmine/sys/fetch_changesets?key=APIキー&id=プロジェクトID

  5. [Add Webhooks] ボタン押下
  6. 追加されたWebhookの[Test Hook]ボタン押下


    成功すれば設定完了です。

Redmine-Gitlab連携確認

Gitlabのリポジトリーへファイルのpushを行い、Redmineに反映されるか確認を行います。
  1. Redmineのプロジェクト上で新規チケットを作成
  2. Gitlabのプロジェクトのリポジトリーへファイルのpush
    コミット時にコメントの先頭に"refs #Redmineチケット番号"と記入します。
    ※今回は簡易的に動作確認を行うために、ブラウザーからRedmineチケット#2に紐付けて
    READMEファイルをpushしました。

  3. Redmineチケット#2を開く
    関連しているリビジョンにコミット履歴が表示されました。



    ファイルと履歴はプロジェクトのリポジトリーからも確認することができます。

お気軽にお問合せください。
自社に合う製品が分からない、導入についての効果が知りたい…専任のスタッフがあなたの
疑問にお答えします。
お問合せはこちら資料ダウンロードはこちら
お電話でのお問合せ053-465-1555
 
受付時間 : 
平日9時~12時、
13時~17時
担当 : 松下 一彦、
鈴木 道尋

----

0 コメント:

コメントを投稿