白猫のメモ帳

C#とかJavaとかJavaScriptとかHTMLとか機械学習とか。

さくらのVPSで遊ぶ -Jenkins設定編-

(このシリーズは自分用の備忘録なので、割と適当です。)

設定編は今回がラスト。


①ユーザの作成

(このあたり初回しか表示されないのでSSがない)

VPSの8080ポートにアクセスすると、管理者パスワードの設定画面が表示されるので設定する。
次にプラグインのインストールを促されるので、「Install suggested plugins」(推奨プラグイン)を選択する。
で、初期ユーザの設定画面が表示されるので、ユーザを作成する。


②ユーザ認証をかける

このままだと誰でもログインできてしまうので、①で作ったユーザのみアクセスできるように設定を変更する。
「Jenkinsの管理」-「グローバルセキュリティの設定」

f:id:Shiro-Neko:20160619121929j:plain

「セキュリティを有効化」にチェックを入れ、「ユーザー情報」-「Jenkinsのユーザーデータベース」にチェックし、
「ユーザーにサインアップを許可」のチェックをつける。
「権限管理」-「ログイン済みユーザーに許可」にチェックをつける。

f:id:Shiro-Neko:20160619133335j:plain

いったんログアウトして、追加したユーザでログインしなおす。


再度設定画面を開き、「ユーザーにサインアップを許可」のチェックをはずし、
「追加するユーザー/グループ」に追加したユーザを入力して追加し、
匿名ユーザの全チェックを解除、追加したユーザを全チェック。


③jenkinsユーザの有効化

ここでいうユーザとは①のJenkinsアプリの中のユーザのことではなく、OSのユーザのこと。
特に設定を変更しない限り、Jenkinsのビルドタスクは「jenkins」というユーザで実行される。
ビルドコマンドが実際に叩けるか確認したい場合など、このユーザでログインできないのは不便なので、
ログインできるように設定を変更する。

vi /etc/passwd

jenkinsの行の末尾の「/bin/false」を「/bin/bash」に変更して保存。

f:id:Shiro-Neko:20160915231020j:plain


④BitBucketをSSHで連携する

パスワード認証だとうまくいかないため、鍵認証を使う。

まずはjenkinsユーザになって、鍵を作成。

su jenkins
cd ~
mkdir .ssh
cd .ssh
ssh-keygen
cat jenkins_rsa.pub

jenkins_rsa.pub(公開鍵)の中身をBitBucketに登録する。
「設定」-「一般」-「デプロイ鍵」から「鍵を追加」。

f:id:Shiro-Neko:20160619140511j:plain

ぺたりと貼って適当な名前を付ける。

f:id:Shiro-Neko:20160619140522j:plain


⑤BitBucketにWebhooksを設定

gitリポジトリにpushした際に、リポジトリ側からJenkinsに通知を飛ばし、
それをトリガにビルドを行うようにWebhooksを設定する。

「設定」-「総合」-「Webhooks」から「Add webhook」。

f:id:Shiro-Neko:20160619143618j:plain

URLには以下のルールでURLを設定。

http://【VPSのURL】:8080/git/notifyCommit?url=git@bitbucket.org:【Gitユーザ名】/【リポジトリ名】.git

f:id:Shiro-Neko:20160619140833j:plain


⑥ビルドJobを作成

「新規ジョブ作成」で適当にジョブの名前を設定し、「フリースタイル・プロジェクトのビルド」を選択。

f:id:Shiro-Neko:20160619141357j:plain

ソースコード管理」で「Git」を選択し、「Repository URL」にGitのURLを設定する。
この際、HTTPSではなくSSHを選ぶことに注意。

f:id:Shiro-Neko:20160619141500j:plain

「ビルド・トリガ」で「SCMをポーリング」を選択する。
スケジュールは空欄のままで良い。(スケジュールされていないので起動しません。というメッセージが出るが無視)

f:id:Shiro-Neko:20160619141807j:plain

「ビルド」で「Mavenの呼び出し」を選択し、
「使用するMaven」に「Default」、「ゴール」に「package」を設定する。
(今回は実行可能jarを作成するため、packageを利用する)

f:id:Shiro-Neko:20160619142051j:plain

ディレクトリの作成などで権限関連でコケる場合は、
「シェルの実行」を選択して「sudo mvn package」としてしまえばいいと思う。

デプロイ場所を変えたければ、シェルの実行でmvコマンドとかを「ビルド後の処理」に設定すれば良い。

設定を保存し、リポジトリに何かpushしてビルドが走ればJobの完成。


⑦定期実行Jobを作成

実行可能jarが作れるようになったので、これを定期的にトリガする。
いわゆるただのcrontabなので、別にJenkinsで管理しなくてもいい。

「新規ジョブ作成」で適当にジョブの名前を設定し、「フリースタイル・プロジェクトのビルド」を選択。

ソースコード管理」は「なし」。

「ビルド・トリガ」は「定期的に実行」を選択し、実行したい時間を設定する。(下記は10分に1回の設定)

f:id:Shiro-Neko:20160619143120j:plain

「ビルド」は「シェルの実行」を選択し、「java」コマンドを設定。

f:id:Shiro-Neko:20160619143218j:plain


とりあえずこんな感じ。

さくらVPSで遊んでみるにあたって、今回設定した内容を備忘録的に残してみた。
設定しながらSSを取ったわけではないので、抜けているところはあるかもしれないが、
もう一回設定するときにこれを見れば簡単にできる…と信じたい。