魔法使いの卵

WEBエンジニアの卵の成長記録

最小構成の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へ

    • su
    • su jenkins
    • cd /var/lib/jenkins
    • mkdir .ssh
    • cd .ssh
  • jenkinsの鍵を作成

  • id_rsa(秘密鍵) とid_rsa.pub(公開鍵)が、/var/lib/jenkins/.sshに生成される。

  • 生成された id_rsa(秘密鍵) に対して念のため読み取り属性を与えておく。

    • chmod 600 id_rsa
  • lessして公開鍵の内容をコピー

  • githubにつながるか確認する

ブラウザ側のjenkinsの設定を行っていく

  • jenkinsはたしかdefaultでgitが使えなかった気がするので以下の手順でプラグインを導入する

    • 192.168.33.10:8080/のjenkinsの設定 >> プラグインの管理 >> 利用可能 | ここから検索ワードでgit
  • プラグインを追加する(たしか以下のやつ)

  • 新規ジョブを追加する

次にgithub側の設定を行う(webhook)

  • 対象のリポジトリを選択し左カラムにあるOptionsの中にあるwebhook&Servicesをクリック
  • Servicesの→にあるAdd Servicesをクリックすると検索窓がでてくるのでjenkinsを選択
  • Services / Add Jenkins (Git plugin)と表示がでてくるので
  • 画面下部のJenkins hook urlに以下を入力
  • 実際に入力したのは以下

しかし、vagrant環境なのでgthubからは参照することができません(プライベートネットワークの為)

完成イメージを変更(SCMポーリング)

  • vagrantでプライベートネットワークの為webhookが使えないので苦肉の策
  • 定期的にgithubをjenkinsに見に行かせその際に変更点があればビルドする

SCMポーリングの設定

  • jenkinsの設定を開きビルド・トリガのSCMポーリングにチェックを入れます。
  • スケジュールとかかれたテキストボックスがあるのでスケジュールを登録します
  • 以下例
    • H/3 * * * *
    • 3分ごとにgithub見てねってこと

おもったこと(メモ)

  • jenkinsユーザ周りでちょっとハマった。
  • sshのキー作りすぎてgithubのkeyがもうありすぎて全部消したい。
  • jenkinsはjenkins用のサーバ建てたほうがいい
  • capistaranoと組み合わせると幸せになれそう

最後に

  • これで単純にビルドを自動化することができる(最小構成)
  • jenkinsができることはたくさんあるので自動化を進めたい