同じ仮想マシン内なら難しくないらしいと...本当ですか先輩?。
・くりーむわーかー : RedmineとGitbucketを連携する
・GitBucketとRedmineを連携する | 眠るシーラカンスと水底のプログラマー
Redmineで新しいプロジェクト
仮想マシンを起動し、「http://仮想マシンのIPアドレス/Redmine」にアクセスし、ログインしたら、「管理」をクリック。
「設定」をクリック。
「リポジトリ」を選択し、「Git」が有効になってることを確認。
「プロジェクト」を選択し、「新しいプロジェクト」を選択。
「名称」、「説明」、「識別子」を入力し、「作成」。
作成されました。
「リポジトリ」タブをクリックし、「新しいリポジトリ」をクリック。
「バージョン管理システム」で「Git」を選択。「識別子」はプロジェクトの「識別子」と同じにします。「リポジトリのパス」にGitBucketのリポジトリのURLを入力。「パスのエンコーディング」も一応「UTF-8」にし、「作成」。
作成されました。
だがしかし、エラー!
なんでも、redmine側にもGitBucketのリポジトリのcloneを作成せねばならないらしいです。
WebHookを受けて操作するためのミラーリポジトリを作成します。
このリポジトリのcloneをRedmineサーバーに作成します。
ここでポイントになるのは「--bare」オプションをつけてcloneする点です。
bare(ベア)リポジトリはファイルの実体を持たず、更新情報だけを保持する
リポジトリということだそうで、このモードじゃないとエラーになります。
RedmineとGit(BitBucket)の連携方法(redmine_github_hook使用) - Symfoware
redmineのインストールディレクトリにリポジトリ用のフォルダを作成し、GitBucketのbareリポジトリをclone。
mkdir -p /var/lib/redmine/repo cd repo git clone --bare http://192.168.33.10/gitbucket/git/root/gitBucketTest.git
「Username」「Password」はGitBucketのログイン時のものを入力。
Redmine側で作成していたリポジトリを削除し、新たにリポジトリを作成します。「リポジトリのパス」に「/redmineのインストールディレクトリ/新しく作ったフォルダ/GitBucketのリポジトリ名」と入力し「作成」。(自分の場合は「/var/lib/redmine/repo/gitBucketTest.git」)
リポジトリが表示されました!
GitBucketにpushしたら、自動的にRedmineのチケットと連動させるには「redmine_github_hook」というプラグインをredmineにインストールする必要があるようです。
プラグインを追加。
cd /var/lib/redmine/plugins git clone https://github.com/koppen/redmine_github_hook.git
systemctl restart httpd
プラグインが読み込まれました。
GitBucketにWebHookを設定
RedmineにインストールしたプラグインをGitBucketに反映させます。(GitBucketにpullした時のメッセージで、Redmineのチケットを操作できるよう設定)
「Settings」>「Service Hooks」を選択し、「Add webhook」をクリック。
「Payload URL」に「http://仮想マシンのIPアドレス/redmine/github_hook?project_id=プロジェクトの識別子」を入力。「Test Hook」をクリック。
「Response 200」となっていればOK。
「Add webhook」をもう一回クリックすると反映されます。
連携テスト
ローカルのプロジェクトフォルダにREADME.mdファイルを作成し編集し、コミット、プッシュをしてみたいと思います。
プロジェクトフォルダ内で右クリックし、「新規作成(X)」>「テキストドキュメント」を選択。
「README.txt」を作成。
編集し、保存。
「TortoiseGit」>「追加(A)...」を選択。
「OK」。
「コミット」を選択。
「OK」を選択。
「プッシュ(リモートへ反映)...」を選択。
「リモート(R)」に「master」を入力し「OK」。
「Username」にGitBucketのログイン時のユーザー名を入力し「Ok」。
「Password」にGitBucketのログイン時のパスワードを入力し「Ok」。
「閉じる」を選択。
GitBucketには反映されたけど、
Redmineに反映されてないっぽいですね。
しばし調査ですかね...ハマりそうな予感です。
2017年10月08日 追記
var/lib/redmineにrepoフォルダを作成し、git cloneしたときに、--bareオプションだと、いろいろ不具合が出るみたい?ブランチがある場合は、--mirrorオプションを使うらしい。
RedmineのGitリポジトリ設定は、bareリポジトリしか認識しない。
だから、「git clone --bare」でGitリポジトリをクローンしていた。 すると、ブランチ削除の内容が同期されないみたい。
Redmine.JPのリポジトリ設定の説明ページを読むと、Gitリポジトリ設定の箇所の最後に、mirrorオプションの説明が載っていた。
git cloneのやり直し方法とか全然出てこない...。まぁ、間違ってgit cloneするような人間はいないってことですかね、自分は思いっきり間違えたけど。
GitHub - git cloneで上書きしたい(34008)|teratail
⇧ 一旦、フォルダごと削除してgit cloneし直すのが良いようです。
rm -rf /var/lib/redmine/repo
フォルダの権限をapacheにした場合、上手く動かなくなったので何も変更せず作成。
[vagrant@10 redmine]$ sudo mkdir -p /var/lib/redmine/repo
[vagrant@10 redmine]$ cd repo
[vagrant@10 repo]$ git clone --mirror http://192.168.33.10/gitbucket/git/root/gitBucketTest.git
Cloning into bare repository 'gitBucketTest.git'...
/var/lib/redmine/repo/gitBucketTest.git: Permission denied
[vagrant@10 repo]$ sudo git clone --mirror http://192.168.33.10/gitbucket/git/root/gitBucketTest.git
Cloning into bare repository 'gitBucketTest.git'...
Username for 'http://192.168.33.10': root
Password for 'http://root@192.168.33.10':
remote: Counting objects: 67, done
remote: Finding sources: 100% (67/67)
remote: Getting sizes: 100% (41/41)
remote: Total 67 (delta 14), reused 67 (delta 14)
Unpacking objects: 100% (67/67), done.
[vagrant@10 repo]$ sudo systemctl restart httpd
[vagrant@10 repo]$ ls -la
total 4
drwxr-xr-x. 3 root root 31 Oct 8 05:00 .
drwxr-xr-x. 21 apache apache 4096 Oct 8 04:57 ..
drwxr-xr-x. 7 root root 138 Oct 8 05:00 gitBucketTest.git
[vagrant@10 repo]$
「systemctl restart httpd」でhttpdを再起動し、まずは「http://仮想マシンのIPアドレス/gitbucket/」でgitbucketにアクセス。README.txtを更新してます。
続いて、「http://仮想マシンのIPアドレス/redmine」にアクセスし、ログイン後、「プロジェクト」>「リポジトリ」 は更新されてるようです。
「活動」も更新されてるようです。
「チケット」にも反映されました。
う~ん、passengerで動かしてるredmineの実行ユーザーって誰になるんだろう?apacheは駄目でした。
RedmineのリポジトリブラウザでGitリポジトリの内容を参照するためには、ローカルのbareリポジトリが必要です。
例えば、"Donebox"という名前のTODO管理アプリのリポジトリをRedmineから参照するとします。クローンURLは git://github.com/ook/donebox.git とします。 Redmineが稼働しているサーバ上で、Redmineを実行しているユーザーからアクセス可能なディレクトリを作成してください。:
$ sudo mkdir -p /var/redmine/git_repositories
$ sudo chown rails:rails /var/redmine/git_repositories
$ cd /var/redmine/git_repositories
上記2行目についての注意: これは新しく作成されたディレクトリのオーナーとグループを rails
に変更しています。サーバの設定にあわせてユーザー名・グループ名は変更する必要があります(サーバの設定によっては apache
や www-data
とすべき場合もあります)。ユーザーはgitコマンドを実行する権限が必要であることにも注意してください。
とりあえずは、 連携できたということで。
2017年10月09日(月) 追記
後日、動かしてみたら、やはりGitBucketに加えられた変更がRedmineに反映されない模様。
どのユーザでRedmineが実行されているかわからなければ、以下のコマンドで確認する。
$
ps
-ef|
grep
redmine
Redmineの実行ユーザーはapacheっぽいですね。repoフォルダもapacheにして駄目だったんで、今回なにも変えずrootとかにしたんですが。
Redmineがアクセスできるようrepoフォルダはapacheの権限にしつつ、GitBucket側の設定で追加する必要があるようです。
Redmine用のリポジトリの同期(fetch)はRedmineの実行ユーザで行う必要がある。
しかし、リポジトリの更新を検出できるのはGitoliteの実行ユーザ。
そこで、Gitolite実行ユーザからsudoでRedmine用のリポジトリを同期できるように設定する。
フックスクリプトは、自分の場合、Redmine_github_hookプラグインがやってくれてるのだと思われますが...。
GitBucketの実行ユーザーが分からんです...。
とりあえず、何か分かったらまた追記していきます。
2017年10月09日(月) 23:10 追記
⇧ 上記サイト様を参考にgitbucketのプロセスを確認
ps aux | grep gitbucket
・ps | grep hoge で grep 自身も grep されるのを防ぐ - Qiita
これ、grepしか動いてないっぽいね...。
ps aux | grep -v grep | grep gitbucket
さらに、fオプションを追加すればプロセスがツリー構造になるので、視認性が向上する。
ということで全部確認してみましたが、
ps auxf
ダメでした。そういえば、GitBucketは、Apache Tomcatに配置していて、AJP(Apache JServ Protocol)でApached Httpdと連携してるから、実行ユーザーはapacheかな?もうちょい調査が必要そうです。
2017年10月10日(火)23:40 追記
⇩ 下記記事の追記を参考ください。
http://www.publickey1.jp/blog/18/kubernetesdockerdocker_for_mac_with_kubernetes.html