最小構成のjenkinsでビルドを自動化してみた
完成イメージ(webhookで対応時)
- githubへpushがあった場合jenkinsがビルドをはじめる
サーバ内でjenkinsユーザでログインできる準備をする
- ユーザ名jenkinsはインストール時に作成される
- jenkinsユーザでログイン可能な状態にする
vi /etc/passwd /bin/falseを/bin/bashに変更する jenkins:x:494:495:Jenkins Continuous Build server:/var/lib/jenkins:/bin/bash
jenkinsユーザの鍵を作る
jenkinsの権限を変更する
- chown -R jenkins:jenkins /var/lib/jenkins
rootからjenkinsへ
jenkinsの鍵を作成
生成された id_rsa(秘密鍵) に対して念のため読み取り属性を与えておく。
- chmod 600 id_rsa
lessして公開鍵の内容をコピー
githubにつながるか確認する
ブラウザ側のjenkinsの設定を行っていく
jenkinsはたしかdefaultでgitが使えなかった気がするので以下の手順でプラグインを導入する
- 192.168.33.10:8080/のjenkinsの設定 >> プラグインの管理 >> 利用可能 | ここから検索ワードでgit
プラグインを追加する(たしか以下のやつ)
- git plugin
- github plugin
新規ジョブを追加する
次にgithub側の設定を行う(webhook)
- 対象のリポジトリを選択し左カラムにあるOptionsの中にあるwebhook&Servicesをクリック
- Servicesの→にあるAdd Servicesをクリックすると検索窓がでてくるのでjenkinsを選択
- Services / Add Jenkins (Git plugin)と表示がでてくるので
- 画面下部のJenkins hook urlに以下を入力
- 実際に入力したのは以下
しかし、vagrant環境なのでgthubからは参照することができません(プライベートネットワークの為)
完成イメージを変更(SCMポーリング)
SCMポーリングの設定
- jenkinsの設定を開きビルド・トリガのSCMポーリングにチェックを入れます。
- スケジュールとかかれたテキストボックスがあるのでスケジュールを登録します
- 以下例
- H/3 * * * *
- 3分ごとにgithub見てねってこと
おもったこと(メモ)
- jenkinsユーザ周りでちょっとハマった。
- sshのキー作りすぎてgithubのkeyがもうありすぎて全部消したい。
- jenkinsはjenkins用のサーバ建てたほうがいい
- capistaranoと組み合わせると幸せになれそう
最後に
- これで単純にビルドを自動化することができる(最小構成)
- jenkinsができることはたくさんあるので自動化を進めたい