はじめに
目的
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.
詳しく知りたければ以下を参照。
参考情報
以下のパッケージを使う。執筆時点(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
ビルド用JDKのインストール
Jenkinsの管理 > Global Tool Configuration > JDK より、任意のJDKをインストールする。
Oracleのアカウントが必要なので、持っていなければ無料なので作る。
ここでインストールした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.「ビルド実行」ボタンを押し、ビルドが成功することを確認する