Jenkinsサーバの構築

環境

環境 Ver.
Jenkins 2.58
Java 1.8

サーバー基本設定

Timezoneの変更

# 現在のTimezoneの確認 ※現在はUTC
$ strings /etc/localtimeTZif2TZif2UTC0

# オリジナルをバックアップ
$ cp /etc/localtime /etc/localtime.org

# Timezoneファイルの変更1
$ ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

# Timezoneファイルの変更2
$ cp /etc/sysconfig/clock /etc/sysconfig/clock.org
$ vi /etc/sysconfig/clock
---
# ZONEの変更
ZONE="Asia/Tokyo"// falseにするとハードウェアのクロックもローカルタイムで設定されてしまう為、変更しない
UTC=true
---
# Timezoneが変更されていることを確認
strings /etc/localtime
TZif2
TZif2
JST-9

Swapの追加

$ dd if=/dev/zero of=/swapfile bs=1M count=1000
$ mkswap /swapfile
$ swapon /swapfile
swapon: /swapfile: 安全でない権限 0644 を持ちます。 0600 がお勧めです。
$ chmod 0600 /swapfile

Hostnameの設定

/etc/sysconfig/network

HOSTNAME={YOUR_HOSTNAME}

/etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 {YOUR_HOSTNAME}

文字コードの変更

/etc/sysconfig/i18n

LANG="ja_JP.UTF-8"

各種ツールのインストール

Gitのインストール

$ yum install git

Javaのインストール

# Javaのバージョン確認
$ java -version
java version "1.7.0_131"OpenJDK Runtime Environment (amzn-2.6.9.0.71.amzn1-x86_64 u131-b00)
OpenJDK 64-Bit Server VM (build 24.131-b00, mixed mode)

# Java1.8のインストール ※2017年5月現在、Java1.8でなければJenkins2.58が動作しない。
$ yum install java-1.8.0-openjdk-devel
Installed:
java-1.8.0-openjdk-devel.x86_64 1:1.8.0.121-0.b13.29.amzn1

# 既存のJavaからインストールしたJavaに向き先を変更する
$ alternatives --config java
$ java -versionopenjdk version "1.8.0_121"

EB CLIのインストール (デプロイ例として)

$ pip install --upgrade --user awsebcli
$ vi .bash_profile
---
//追加
export PATH=""~/.local/bin"":$PATH
---
$ source .bash_profile$ eb --version
EB CLI 3.10.1 (Python 2.7.1)
[/bash]

## Jenkinsの設定
### Jenkinsダウンロード

$ wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo

パッケージ署名チェック用のキーインポート

$ rpm –import https://jenkins-ci.org/redhat/jenkins-ci.org.key

Jenkinsをインストール

$ yum install jenkins
Installing:jenkins noarch 2.58-1.1 jenkins 67 M
Transaction Summary

ReverseProxy用にApacheのインストール

$ yum install httpd24


### Jenkinsのポート変更 ※デフォルトは8080 /etc/sysconfig/jenkins

JENKINS_PORT=”8081″
$JENKINS_USER=”root”


### 権限変更 Jenkins作業ディレクトリをroot権限へ変更する。

$ chown -R root:root /var/lib/jenkins
$ chown -R root:root /var/cache/jenkins
$ chown -R root:root /var/log/jenkins

Jenkinsの再起動

$ service jenkins restart
$ ps -ef | grep jenkins


以降、Jenkins jobを全てroot権限で実行することとなる。 ### Digest認証の設定

認証可能なユーザの作成

$ htdigest -c /etc/httpd/conf/.htdigest Jenkins jenkins
Adding password for jenkins in realm Jenkins.
New password:
Re-type new password:

Digest認証の反映を確認

$ less /etc/httpd/conf/.htdigest


### ReverseProxyの設定 /etc/httpd/conf.d/jenkins.conf

Canonicalise URLデコードを抑制

ProxyPass / http://localhost:8081/ nocanon
ProxyPassReverse / http://localhost:8081/
ProxyRequests Off
AllowEncodedSlashes NoDecode


Order deny,allow
Allow from all
AuthType Digest
AuthName Jenkins
AuthUserFile /etc/httpd/conf/.htdigest
Require valid-user



### jenkins へ sudo の実行許可を付与

$ sudo visudo -f /etc/sudoers.d/cloud-init

$ sudo visudo

jenkins ALL=(ALL) NOPASSWD: ALL


### 設定の反映

Apacheの再起動

$ service httpd restart

Jenkinsの再起動

$ service jenkins restart



## Jenkinsの起動

$ service jenkins start

chkconfig コマンドを使用して、システムがブートするたびに Jenkinsが起動するように設定

$ chkconfig jenkins on

起動設定を確認

$ chkconfig –list jenkins

ステータスを確認

$ service jenkins status


ブラウザから http://{public DNS} へアクセスし、Jenkinsへアクセスできることを確認。 ## Webアプリケーションの配置

$ mkdir {project_name}
$ git init
$ git add -A
$ git config user.name “xxx”
$ git config user.email “xxx@xxx”
$ git commit -m ‘first commit’
$ git remote add origin https://github.com/xxx/xxx.git
$ git remote -v
origin https://github.com/xxx/xxx.git (fetch)
origin https://github.com/xxx/xxx.git (push)
$ git push -u origin develop

もしくはclone$ git clone https://github.com/xxx/yyy


shell実行時、Gitのユーザー名/パスワードの入力を省略させるため以下を一旦、設定している。 ~/.netrc

machine github.com
login {user_name}
password xxx



## shellの設定 <a href="https://wp.me/p7Eb3G-dk" rel="noopener" target="_blank">デプロイスクリプト</a> 等。 ## Jenkinsファイルパス - 初期ログインパスワード記載ファイル: /var/lib/jenkins/secrets/initialAdminPassword - Jenkinsの環境設定ファイル: /etc/sysconfig/jenkins - Jenkins作業ディレクトリ: /var/lib/jenkins/* - Jenkinsのジョブ定義ファイル: /var/lib/jenkins/config.xml - Job格納ディレクトリ: /var/lib/jenkins/jobs - ビルド格納ディレクトリ: /var/lib/jenkins/jobs/{job}/builds/ - ワークスペースディレクトリ: /var/lib/jenkins/workspace/ - 起動スクリプト: /etc/init.d/jenkins - ログ: /var/log/jenkins/jenkins.log ## Jenkins コマンド

Jenkinsの起動

$ service jenkins start

ステータスを確認

$ service jenkins status

起動確認

$ ps -elf | grep [j]enkins



## Jenkins 再起動 "/safeRestart" へアクセスする。 <img src="https://halclan.net/wp-content/uploads/2017/08/jenkins-restart-700x197.png" alt="" width="660" height="186" class="alignnone size-large wp-image-1056" /> ## Jenkinsのshell Jenkinsの「シェルの実行」は、ビルド時に以下のオプション付きで実行される。

/bin/sh -xe


- -x: スクリプト実行結果を表示。 - -e: 実行後、exit codeが0以外の場合(エラー発生時)、終了させる。 ## Jenkinsのディスク容量不足 主にビルド履歴やプラグインがメモリを食う。

$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 489M 56K 488M 1% /dev
tmpfs 497M 0 497M 0% /dev/shm
/dev/xvda1 7.8G 6.4G 1.4G 83% /

$ sudo du -sh /var/lib/jenkins/* | sort -h -r | head -20


ジョブ設定で、「古いビルドの破棄」オプションは30日以上、100ビルドまで保存等、適宜設定/保存する。 ## トラブルシューティング ### ログ "/log/all"の画面へアクセスする。 ログには何も出ていない場合は、以下のようにプロセスを停止し、フォアグラウンドでJenkinsを実行する。

$ service stop jenkins
$ java -jar /usr/lib/jenkins/jenkins.war
“`

ジョブが表示されない。

Jenkinsの管理 > 設定の再読み込み を実行する。

“リバースプロキシの設定がおかしいようです。”と表示される。

  • URLエンコードの設定ミス
  • Jenkinsの設定ミス
    • Jenkinsの設定 > システムの管理 > Jenkins URL

プラグインのアンインストールが出来ない

Jenkins自体を再起動しないと、アンインストールが行われない。

参考サイト

関連記事