こんにちは、北川です。
以前から気になっていた、OpenShift Online を使ってjenkinsを構築しました。
せっかくなのでbitbucketと連携してみましたので連携の方法を書いておきます。
What's OpenShift?
OpenShift Online は、RedHat が提供している PaaS プラットフォームです。
また、OpenShift Origin として PaaS プラットフォームを構築しているソフトウエアがオープンソースソフトウエアとして提供されています。
Create Account & Instant App Jenkins Server
OpenShift で Jenkins Serverを構築するのは非常に簡単です。
WEBページに記載されている通りにすれば、WEB上からほんの15分で構築できます。
そのため、OpenShift 上に Jenkins Serverを構築する手順はあまり詳しく記載しません。
1.アカウントを作る
OpenShift のTOPページ ONLIEN Public PaaS の SIGN UP For Free からアカウントを作成できます。
2.Jenkins Serverを構築
Jenkins Serverの構築は、サインアップ後、Create Application のページから Jenkins Serverを選択し、記載されている通りに進めば構築完了です。
jenkinsとbitbucketを連携
自分のサーバ上の Jenkins であれば、$HOME/.ssh/config に公開鍵認証のための情報を記載
してやればよいですが、OpenShift Online の場合は、$HOME/.ssh/config に権限がないため
変更ができません。そのため、GIT_SSH を利用して連携します。
GIT_SSH に関しては前回記事を書きましたのでご参考にしてください。
「GIT_SSH を利用してbitbucketからチェックアウト」
1.OpenShift サーバにログインできるようにする。
Webページから公開鍵を登録しOpenShift Serverに ssh 接続ができるようにします。
Settings -> Public Keys の Paste the contents of your public key file (.pub)
から公開鍵が登録できますので登録しましょう。
登録ができたら、My Applications から 作成した Jenkins Server を選択しssh 接続のための
情報を取得し先ほど登録した公開鍵のペアとなる秘密鍵を利用して ssh で接続すれば
作成した Jenkins Server にログインできます。
ログインするこんな感じ
1 2 3 4 |
$ ls -l drwxr-xr-x. 4 root 52414e90e0b8cd1c6a0001bc 4096 Sep 24 04:34 app-root drwxr-xr-x. 3 root root 4096 Sep 24 04:34 git drwxr-xr-x. 8 52414e90e0b8cd1c6a0001bc 52414e90e0b8cd1c6a0001bc 4096 Sep 24 04:34 jenkins |
.ssh には権限がありません
1 |
drwxr-x---. 2 root 52414e90e0b8cd1c6a0001bc 4096 Sep 24 04:35 .ssh |
2. bitbucketに公開鍵認証のために公開鍵を登録
$HOME/app-root/data/.ssh に公開鍵と秘密鍵のペアが作成されているので今回はこのペアを公開鍵認証に利用します。
1 |
cat app-root/data/.ssh/jenkins_id_rsa.pub |
また、秘密鍵の権限が 600 でないので変更しておきます。
1 |
chmod 600 app-root/data/.ssh/jenkins_id_rsa |
bitbucketで 公開鍵を登録するには、bitbucketにログイン -> アカウントの管理 -> SSH キー -> 鍵を追加で追加可能ですので公開鍵の登録ができますので登録をしておいて下さい。
3. GIT_SSH のためのラッパーを作成
GIT_SSHのためのラッパーを作成します。
1 2 3 4 |
vi app-root/data/gitssh.sh 下記を追加 #! /bin/sh ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i $OPENSHIFT_DATA_DIR/.ssh/jenkins_id_rsa "$@" |
権限も変更します。
1 |
chmod u+x app-root/data/gitssh.sh |
5. Jenkins GIT_SSH 環境変数を設定
Jenkins から GIT_SSH を利用するためには環境変数に設定する必要があります。
Jenkinsの管理 -> システム設定 -> Global properties 環境変数 で設定可能です。
6. ビルドを実行
いつも通りに Jenkins の Git Repositories に 設定してやれば bitbucket から チェックアウトできます。
まとめ
ながながと書きましたが、ポイントは2つです。
1. OpenShift サーバでは、UserHome に権限がないため GIT_SSH を利用し回避する。
2. GIT_SSH を利用するためにJenkinsの環境変数に指定する。
少し癖がありますが、ある程度のリソースまでは無料で使えるため活用していこうと思います。