hacktk's blog

日記です

Jenkinsセットアップメモ

昨日のGitLabに続き、Jenkinsをセットアップする。
OSはCentOS 6.5で、GitLabとは別サーバー。
(便宜上、IPはGitLabを192.168.1.1、Jenkinsを192.168.1.2とする)

方針

  • なるべく楽する
  • バックアップは一応取る

インストール

Java

  • Java 6以上が必要
# yum install wget java-1.7.0-openjdk

Jenkins

# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
# rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
# yum install jenkins
# service jenkins start
# chkconfig jenkins on

http://192.168.1.2:8080/ にアクセスできればOK
※ Jenkins はデフォルトで 8080 ポートでアクセスを受け付ける

GitLab連携

  • GitLabで任意のプロジェクトのブランチの変更時に
  • 変更のあったブランチをpullしてきて
  • webサーバーにデプロイする(今はrsyncでやってる)

プラグイン導入

  • [ホーム] → [Jenkinsの管理] → [プラグインの管理]から検索して、[再起動せずにインストール]
    • Git Plugin
    • Gitlab Hook Plugin

ジョブ作成

  • [ホーム] → [新規ジョブ作成] → [フリースタイル・プロジェクトのビルド]にチェックして作成
  • 以下は必要っぽいとこだけ書く

  • ソースコード管理

  • ビルド・トリガ
    • SCMをポーリング
    • スケジュール: 空白 (No schedules so will never run と警告出るけど気にしない)
  • ビルド
export WORKSPACE
sh ${WORKSPACE}/deploy/deploy.sh

※ 実際のデプロイ処理はdeploy.shでやる

ジョブ実行前の準備

  • ssh鍵作成(構築初回のみ)
$ cd /var/lib/jenkins
$ sudo -u jenkins -H ssh-keygen -t rsa
# jenkinsがパスなしでSSH接続できるようにパスなしで作成しておくこと
# jenkinsユーザーのhomeは /var/lib/jenkins
  • GitLabにWebでJenkins用ユーザーの鍵を登録しておく(構築初回のみ)
  • GitLabをknown_hostsに登録(構築初回のみ)
$ sudo -u jenkins -H ssh git@192.168.1.1
  • デプロイ対象サーバーにssh鍵登録
    • user@server:.ssh/authorized_keys にjenkinsのid_rsa.pubを書き込んでおく
  • デプロイ対象サーバーをknown_hostsに登録
$ sudo -u jenkins -H ssh user@server

以上で任意のブランチの変更時に任意のshellが実行される。
細かい処理はshellに書く。(今時Shellかよっていうのはその通りすぎて何も言えない)

バックアップ、リストア

@sue445 さん作のスクリプトを使わせて頂いています。感謝!!