LoginSignup
0
0

More than 5 years have passed since last update.

AmazonLinuxにJenkinsを導入

Posted at

AmazonLinuxにJenkins導入

継続的インテグレーション(CI)

継続的インテグレーション、CI(英: continuous integration)とは、主にプログラマーのアプリケーション作成時の品質改善や納期の短縮のための習慣のことである。

エクストリーム・プログラミング (XP) のプラクティスの一つで、狭義にはビルドやテスト、インスペクションなどを継続的に実行していくことを意味する[1]。

(Wikipedia)

Jenkinsとは

Javaで書かれたCIツール。

ソフトウェアのビルドやCronで起動するジョブ等の繰り返しのジョブの実行を監視してくれる。

構築方法

確認

セキュリティグループでJenkinsで使用するポートを開けておく

  カスタムTCPルール TCP 8080 IPアドレス

AmazonLinuxではデフォルトでJavaがはいっている模様

  root@hoge:~# java -version
  java version "1.7.0_85"
  OpenJDK Runtime Environment (amzn-2.6.1.3.61.amzn1-x86_64 u85-b01)
  OpenJDK 64-Bit Server VM (build 24.85-b03, mixed mode)

Jenkinsインストール

  # sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
  # sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
  # sudo yum install jenkins
  ============================================================================================================================================================================================================
   Package                                          Arch                                            Version                                            Repository                                        Size
  ============================================================================================================================================================================================================
  Installing:
   jenkins                                          noarch                                          1.644-1.1                                          jenkins                                           61 M

  Transaction Summary
  ============================================================================================================================================================================================================
  Install  1 Package

バージョンとして1.644が入ります(2016/1/18 現在)

  root@hoge# service jenkins start
  Starting Jenkins                                           [  OK  ]
  root@hoge:/tmp# service jenkins status
  jenkins (pid  19989) is running...
  root@hoge:/tmp# chkconfig jenkins on

Jenkins設定

・LDAP関連の設定
 ⇒ LDAPの設定がうまくできず断念

・Hostの設定
Jenkinsの通常のHostだと、

  http://IPアドレス:8080

で、変更したとしても

  http://ドメイン/jenkins

で、気持ち悪いからNginxでプロキシさせて設定した

Nginxでjenkins.hoge.comの設定を書く

jenkins.conf
  server {
    server_name     jenkins.hoge.com;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Real-IP $remote_addr;
    location / {
      proxy_pass http://127.0.0.1:8080;
    }
  }

AWSであればRoute53にDNSを登録する

  Aレコード jenkins.hoge.com IPアドレス

確認しよう!

  # dig jenkins.hoge.com
  http://jenkins.hoge.com

・Basic認証の設定

Jenkinsには最初に通る認証がないので、Basic認証を追加する

http://jenkins.hoge.com にアクセスしたらBasic認証が起動するようにする

ここでとりあえず、htpasswdを生成する

  # vim /etc/nginx/.htpasswd
  ⇒ ここに先ほど生成したものを書く

jenkins.confに以下を記載する

  server {
    server_name     jenkins.hoge.com;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Real-IP $remote_addr;
    # locationをいじる
    location / {
      auth_basic "Restricted";
      auth_basic_user_file /etc/nginx/.htpasswd;
      proxy_pass http://127.0.0.1:8080;
      proxy_set_header Authorization "";
    }
  }

特に忘れては行けないのは

proxy_set_header Authorization "”;

で、headerにAuth情報をセットしてやらないとプロキシしているので、Jenkinsでは認証がまだな状態になってしまう、、

何につかうのか??

  1. 自動テスト
  2. Chefレポジトリの品質を保つ
  3. 有効期限が迫っているツールの自動更新
    • Let's Encrypt の更新
  4. 自動Deploy
  5. 情報自動収集
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0