JenkinsとGitBucketを連携させる

前回はJenkinsとRocket.Chatを連携し、ジョブの実行結果をチャンネルに表示できるようにしました。今回はJenkinsとGitBucketを連携し、masterブランチにpushされたらジョブを実行するようにします。

まずはGitBucketにリポジトリを作成します。画面右上の “+” ボタンから “New repository” を選択し、”Create a new repository” 画面を埋めて “create repository” ボタンで作成できます。リポジトリができたら画面左側の “Settings” から設定画面を開き、”Service Hooks” タブを開いておきましょう。

次にJenkinsの設定です。「Jenkinsの管理」から「プラグインの管理」を選択し、「利用可能」タブから “GitBucket Plugin” を選択し、前回の “RocketChat Notifier Plugin” と同様にインストールします。

プラグインをインストールしたらJenkinsのトップページに戻り、プロジェクトの一覧から前回作成した “jenkins-rocketchat” を選択します。画面左側の「設定」を開くと、”GitBucket”欄が追加されていますので、ここに先ほど作成したリポジトリのURLを入力し、その下の “Enable hyperlink to the issue” にチェックを入れます。

続いて「ビルド・トリガ」欄の “Build when a change is pushed to GitBucket” にチェックを入れたら設定を保存します。

これだけではまだ不十分です。画面右上のユーザ名からユーザページを開き、左側の「設定」を選択します。「APIトークンの表示…」ボタンをクリックするとAPIトークンが表示されますので、これをコピーします。

ここでGitBucketに戻ります。”Service Hooks”タブの “Add webhook” ボタンを選択してフィールドを埋めます。

  • Payload URL: 今回の設定では http://jenkins:8080/gitbucket-webhook/
  • Content type: application/x-www-form-urlencodedのまま
  • Security Token: ここにAPIトークンをペーストします
  • Which events would you like to trigger this webhook?: 今回はPushにチェック

入力したら、”Payload URL” 欄右側の “Test Hook” ボタンをクリックして設定を確認します。問題なければ “WebHook Test” ダイアログが表示され、 “Response” タブに “200” と表示されます。

問題なければダイアログを閉じ、”Add webhook” ボタンでWebHookを追加します。これで設定は完了です。

冒頭に作成したリポジトリをローカルにcloneし、README.mdあたりを編集してgit commit, masterリポジトリにpushしてみて下さい。Jenkinsの “jenkins-rocketchat” ジョブがスケジューリング後に実行され、履歴が表示されます。また、Rocket.Chatのjenkinsチャンネルにビルドの開始・終了が通知されていることと思います。

GitBucketをDockerで動かす

DockerDocker Composeをインストールしましたので、試しに何か動かしてみましょう。まずは基本のhello worldから。

$ docker run --rm hello-world

Hello from Docker!
...

メッセージが表示されました。問題なく動作するようです。ここでpermission云々言われる場合は、ユーザをdockerグループに追加するかsudoを付けて実行して下さい。

さて、今回はGitサーバの一実装であるGitBucketをDockerで動作させたいと思います。GitBucketは開発者がdocker imageを公開しているので、コマンドライン一発で使えます。ここでは少しオプションを変えて実行します。

$ docker run --rm -p 8080:8080 takezoe/gitbucket
...

これだけで、HTTP 8080番ポートから利用できるようになります。インストール直後のユーザ名/パスワードは root/root です。しかしこのままではコンテナを止めるとファイルも消えてしまいますので、永続化させましょう。ついでにSSHでもアクセスできるようにします。Ctrl+Cで実行中のコンテナを止めて、

$ mkdir gitbucket
$ docker run --rm -p 8080:8080 -p 29418:29418 -v ./gitbucket:/gitbucket takezoe/gitbucket
...

これで、SSHでもアクセスできるようになり、コンテナを止めてもファイルが永続化されるようになります (SSHアクセスのためにはGitBucket側の設定も必要です)。このタイミングでrootユーザのパスワードをデフォルトのものから変更しておきましょう。

“GitBucketをDockerで動かす” の続きを読む