AWS上にBitnamiのAMIを使ってお手軽にJenkinsサーバーを立てる

  • 1
    いいね
  • 0
    コメント

はじめに

目的

CIはもちろん、バッチ処理のスケジュール実行用にJenkinsサーバーをサクッと作る。慣れれば20分掛けずに作れるはず。

本記事でできること

  • GitHub上のプライベートリポジトリのJenkins上でのビルド
  • GradleプロジェクトのJenkins上でのビルド

Bitnamiとは

ソフトウェアの環境構築をいい感じに設定したパッケージを配布してくれている。
パッケージの形式はコンテナやクラウド環境用のイメージやオンプレ用など様々。

We make it possible for anyone to quickly deploy software on the platform of their choice, from native installers to cloud images to containers.

詳しく知りたければ以下を参照。

https://bitnami.com/learn_more

参考情報

以下のパッケージを使う。執筆時点(2017/06/28)での最新バージョンは「2.46.2-0 on Ubuntu 14.04.3」。

Jenkins powered by Bitnami
https://aws.amazon.com/marketplace/pp/B00NNZUF3Q

ドキュメント
https://docs.bitnami.com/aws/apps/jenkins/

ドキュメント > ID/PASSWORD
https://bitnami.com/stack/jenkins/cloud/aws

コミュニティ(わからないことがあればここで検索)
https://community.bitnami.com/c/jenkins

手順

AMIからEC2インスタンスを作成

1.AWS Marketplace上の下記URLに遷移後、画面右の「Continue」を選択

Jenkins powered by Bitnami
https://aws.amazon.com/marketplace/pp/B00NNZUF3Q

この際、AWSに未ログインの場合はログインを促されるのでログインする。

2.「Launch on EC2:Jenkins powered by Bitnami」画面の「Manual Launch」を選択

Manual Launchを選択するのは慣れ親しんだAWS Console から作成するため(個人的理由)

3.Launch>AMI IDs>Asia Pacific (Tokyo)の 「Launch with EC2 Console」を選択

4.EC2インスタンス作成

省略するが、基本的にデフォルト設定でOK。ここで作成したキーペアを使って、あとでsshログインする。

80番ポートと22番ポートを開放する。なんらかのIP制限を掛ける。

Jenkinsにログイン ~ 初期設定

インスタンス起動後、インスタンスに割り当てられたIPの80番ポートにブラウザからアクセスする。

Jenkinsのログイン画面が表示されるのでIDとパスワードを入力。

ID: user
PASSWORD: (EC2インスタンスのシステムログより確認する。以下のURLを参照する。)

(参考) How To Find Application Credentials?
https://docs.bitnami.com/aws/faq/#find_credentials

ログイン後、特にこだわりがなければ画面に従い、オススメされるプラグインをインストールする。

サーバー時刻を日本標準時(JST)に変更

1.サーバーにsshログイン

ユーザーはbitnami。公開キーとアドレスは適宜入力する。

ssh -i path/to/keypair.pem bitnami@IPAddress

2.下記コマンドで日本標準時(JST)に変更

echo "Asia/Tokyo" | sudo tee /etc/timezone
sudo dpkg-reconfigure --frontend noninteractive tzdata

(参考) Ubuntu Time Management
https://help.ubuntu.com/community/UbuntuTime

3.Jenkinsを再起動

sudo /opt/bitnami/ctlscript.sh restart

(参考) How To Start Or Stop The Services?
https://docs.bitnami.com/aws/apps/jenkins/

GitHub連携

以下のドキュメントを参考に実施する。

How To Start With Git And Jenkins?
https://docs.bitnami.com/aws/apps/jenkins/#how-to-start-with-git-and-jenkins

事前にsshの認証キーの生成と、生成後にGithubアカウントに対応させる必要があるので、以下を参考に実施する。

sshの認証キー生成

bitnamiユーザーで以下のコマンドを実行し、tomcatユーザー用のsshの認証キーを生成する。

ssh-keygen -t rsa

この際、生成場所を聞かれるので /home/tomcat/.ssh/id_rsa にする。あとは未入力でEnter。

GitHubアカウントにsshの認証キー追加する

/home/tomcat/.ssh/id_rsa.pem の中身をまるごと、以下を参考にGithubアカウントに追加する。

Adding a new SSH key to your GitHub account
https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/

/opt/bitnami/.gradle のパーミッションを変更

bitnamiのバグにより、gradleで使用するディレクトリのパーミッションの設定に誤りがある。

以下のように /opt/bitnami/.gradle のオーナーをtomcatに変更する。

sudo chwon tomcat:tomcat /opt/bitnami/.gradle

https://community.bitnami.com/t/gradle-user-home-opt-bitnami-gradle/40717

ビルド用JDKのインストール

Jenkinsの管理 > Global Tool Configuration > JDK より、任意のJDKをインストールする。
Oracleのアカウントが必要なので、持っていなければ無料なので作る。

スクリーンショット 2017-06-29 0.28.49.png

ここでインストールしたJDKがジョブのビルド時に使われる。複数インストールした場合、各ジョブの設定画面で使用するJDKを選択できる。

確認

GitHub上のプライベートリポジトリ内のGradleプロジェクトをビルドできることを確認します。すでに作成済みの場合は、以下の手順を実施してビルドが成功することを確認してください。

1.「新規ジョブ作成」を選択

2.入力欄に適当なジョブ名を入力し、「フリースタイル・プロジェクトのビルド」を選択し、OKボタンを押す

3.ジョブ設定画面にて以下の内容を入力後、保存ボタンを押す

ソースコード管理 >リポジトリURL

  • 対象のリポジトリURLを以下の形式で入力する
git@github.com:USERNAME/REPONAME.git

ビルド  > Invoke Gradle script > Use Gradle Wrapper

  • 「Make gradlew executable」 にチェック

  • Tasksに実行するGradleタスクを設定する (例)「build」

4.「ビルド実行」ボタンを押し、ビルドが成功することを確認する