- GitHubと連携するプラグインをRedmineに追加します。
- GitHubのリポジトリにDeploy keysを登録してパスワードなしでクローンできるようにします。
- GitHub上のソースをクローンします。
- Redmineを設定します。
- リポジトリを自動更新する
- 失敗したこと
- 環境
GitHubと連携するプラグインをRedmineに追加します。
プラグインを配置します。
# 1. DockerホストにログインしてDockerを動かせるユーザーに切り替えます。 $ sudo su - {Docker用ユーザー} [sudo] ponsuke のパスワード: 最終ログイン: 2019/09/04 (水) 18:53:50 JST日時 pts/0 # 2. Redmineコンテナが起動していることを確認します。 $ cd docker/host/ $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e943461bd3ad redmine:4.0.4 "/docker-entrypoint.…" 7 months ago Up 6 days 0.0.0.0:80->3000/tcp redmine_no_container # 3. DockerホストからRedmineコンテナのプラグイン用ディレクトリににプラグインをクローンします。 $ docker exec redmine_no_container git clone https://github.com/koppen/redmine_github_hook.git /path/to/redmine/plugins/redmine_github_hook Cloning into '/path/to/redmine/plugins/redmine_github_hook'... # 4. Redmineコンテナにログインします。 $ docker exec -it redmine_no_container bash # 5. プラグイン用ディレクトリに移動してクローン出来たことを確認します。 $ cd /path/to/redmine/plugins/redmine_github_hook/ $ ls -la | grep github -rw-r--r-- 1 root root 876 Feb 28 08:57 redmine_github_hook.gemspec # 6. Redmineコンテナからログアウトします。 $ exit # 7. Redmineコンテナを再起動します。 $ docker restart redmine_no_container redmine_no_container
GitHubのリポジトリにDeploy keysを登録してパスワードなしでクローンできるようにします。
コンテナで秘密鍵と公開鍵を作成します。
鍵を作成する際にパスフレーズを設定するとリポジトリをクローンだけでなくフェッチするときにも毎回パスフレーズの入力が必要になってしまうため、今回パスフレーズは設定しません。
※. パスフレーズの設定および解除は自己責任で実施してください。
# 1. DockerホストにログインしてDockerを動かせるユーザーに切り替えます。 $ sudo su - {Docker用ユーザー} [sudo] ponsuke のパスワード: 最終ログイン: 2020/02/28 (金) 17:22:13 JST日時 pts/0 # 2. Redmineコンテナにログインします。 $ cd docker/host/ $ docker exec -it redmine_no_container bash # 3. RSA鍵のペアを作成します。 # ssh-keygenコマンドはデフォルトで「ユーザー名@ホスト名」をコメントにします。なのでGitHubのユーザのメールアドレスをコメントとして-Cオプションで指定します。 $ ssh-keygen -t rsa -C ponsuke@mail.com Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): <<<< Enter Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): <<<< Enter Enter same passphrase again: <<<< Enter ...省略... # 4. 公開鍵を表示してコピーします。 $ cat /root/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAA... #
GitHub上のソースをクローンします。
# 1. リポジトリのクローン先用にディレクトリを作成します。 $ mkdir git $ ls -la | grep git drwxrwxr-x 2 redmine redmine 38 Jun 10 2019 .github -rw-rw-r-- 1 redmine redmine 761 Jun 10 2019 .gitignore drwxr-xr-x 2 root root 6 Mar 5 23:55 git # 2. 作成したディレクトリに移動します。 $ cd git/ # 3. ベアリポジトリをクローンします。 $ git clone --bare git@github.com:ponta/hoge.git Cloning into bare repository 'hoge.git'... Warning: Permanently added the RSA host key for IP address '12.345.67.89' to the list of known hosts. Enter passphrase for key '/root/.ssh/id_rsa': remote: Enumerating objects: 311, done. remote: Counting objects: 100% (311/311), done. remote: Compressing objects: 100% (191/191), done. remote: Total 19981 (delta 110), reused 232 (delta 42), pack-reused 19670 Receiving objects: 100% (19981/19981), 11.54 MiB | 7.12 MiB/s, done. Resolving deltas: 100% (12399/12399), done. $
Redmineを設定します。
- Redmineにログインします。
- 連携するプロジェクトを選択します。
リポジトリを設定します。
Redmine上にクローンしたベアリポジトリを更新します。
# 1. DockerホストにログインしてDockerを動かせるユーザーに切り替えます。 $ sudo su - {Docker用ユーザー} [sudo] ponsuke のパスワード: 最終ログイン: 2019/09/04 (水) 18:53:50 JST日時 pts/0 # 2. Redmineコンテナにログインします。 $ docker exec -it redmine_no_container bash # 3. リポジトリのクローン先に移動します。 $ cd git/hoge.git # 4. ベアリポジトリを更新します。 $ git fetch origin 'refs/heads/*:refs/heads/*'
チケットに関連付くコミットがあるとチケットに表示されます。
リポジトリを自動更新する
方法1つめ : GitHubにWebhookの設定を行います
方法2つめ : cronにリポジトリをfetchするシェルを登録する
失敗したこと
認証用の鍵にパスフレーズを設定して毎回入力が必要になってしまった。
GitHubの認証用の鍵を作成した際にパスフレーズを設定しました。
その結果、フェッチのたびにパスフレーズの入力が必要となってしまいました。
そうすると自動でフェッチさせるのに困ります。なのでパスフレーズを解除します。
※. パスフレーズを解除するのは自己責任で実施してください。
対応 : (失敗)パスフレーズを解除できなかった。
コンテナにsudoコマンドがなくてうまくできませんでした。
$ cd /root/.ssh/ # バックアップします $ cp id_rsa id_rsa.org $ ls -la | grep id_rsa -rw------- 1 root root 1876 Mar 5 23:28 id_rsa -rw------- 1 root root 1876 Mar 15 23:39 id_rsa.org -rw-r--r-- 1 root root 408 Mar 5 23:28 id_rsa.pub # パスフレーズを解除しますが、パスフレーズを入力するはずが・・・エラーに・・・ $ openssl rsa -in id_rsa -out id_rsa unable to load Private Key 14068536:error:0909006C:PEM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: ANY PRIVATE KEY # パスフレーズをコマンドと合わせて入力してもエラーに・・・ $ openssl rsa -in id_rsa -passin pass:othelve2020 -out id_rsa unable to load Private Key 14068576:error:0909006C:PEM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: ANY PRIVATE KEY # コンテナには必要最低限のコマンドしかないためsudoすらなかった・・・(そもそもログインユーザーがrootなので意味ないかも) $ sudo openssl rsa -in id_rsa -out id_rsa bash: sudo: command not found
対応 : 認証鍵を作り直します。
# 認証鍵をパスフレーズなしで再作成します。 $ ssh-keygen -t rsa -C ponsuke@mail.com Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): <<<< Enter Enter passphrase (empty for no passphrase): <<<< Enter Enter same passphrase again: <<<< Enter ...省略... # 公開鍵を表示してコピーして再登録します。 $ cat id_rsa.pub ssh-rsa AAAAAAA...省略...