subtitle

RaiseTechの各種コースをはじめとしたイロイロな学習の記録

AWS環境にJenkinsをインストールする

Jenkinsとは?

オンプレミス型のCI/CDツールの1つ。

非常に汎用性が高く、多機能なツールらしい。(どのくらい優秀なのかは使ってみないとわからないw)

JenkinsはJavaでできているので、Javaが動く環境であれば、OSによらず動作させることができる。

コミュニティが大きいため、プラグインも豊富で、日本語の情報もたくさんある。



Jenkinsをインストールする環境

今回Jenkinsをインストールする環境は、

AWS環境構築7で作成したEC2とRDSに対して、ALBを追加したもの。

※この時点で、AWS上にEC2ができていて、自分のローカルPCにある秘密鍵でEC2にSSHで接続できる状態。



いざ、Jenkinsのインストール!

セキュリティグループのルール追加

Jenkinsは8080番ポートを使用するため、セキュリティグループのインバウンドルールに設定する。


マネジメントコンソールの EC2 > ネットワーク&セキュリティ > セキュリティグループ

今回の環境で使用するセキュリティグループを選択して、「インバウンドルール」タブの「インバウンドルールを編集」を選択


「ルールを追加」から、

  • タイプ:カスタムTCP
  • ポート範囲:8080
  • ソース:0.0.0.0/0
  • 説明:Jenkins

ルールを保存


EC2にJavaをインストール

JenkinsはJavaで動いているので、EC2にJavaを入れる。

・・・と思ったら、アレ?すでにJavaがインストールされているようだ。(入れた記憶はないのだが。)

[ec2-user@ip-172-16-16-180 ~]$ java -version
openjdk version "11.0.10" 2021-01-19 LTS
OpenJDK Runtime Environment Corretto-11.0.10.9.1 (build 11.0.10+9-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.10.9.1 (build 11.0.10+9-LTS, mixed mode)


JenkinsのJava requirementには、

Since Jenkins 2.164 and 2.164.1 [1], Java 11 runtime environments are supported

と書いてあるので、Jenkinsバージョンが2.164以降なら、Java11でも行けそうだ。


Jenkinsのリポジトリを追加

wgetコマンドで、URLを指定してリポジトリをダウンロード

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


RPMパッケージの公開鍵をrpmコマンドでインポート

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


Jenkinsのインストール

sudo yum -y install jenkins


結果を見ると、Jenkinsの2.286がインストールされた模様。




Jenkinsを起動する

sudo service jenkins start


む。

Redirecting to /bin/systemctl start jenkins.service
Failed to start jenkins.service: Unit not found.


Jenkinsの起動ができない。


Jenkinsのインストール時のメッセージを見直してみる。

[ec2-user@ip-172-16-16-180 ~]$ sudo yum -y install jenkins
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                               | 3.7 kB     00:00
jenkins                                                  | 2.9 kB     00:00
jenkins/primary_db                                         | 168 kB   00:00
39 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package jenkins.noarch 0:2.286-1.1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package           Arch             Version             Repository         Size
================================================================================
Installing:
 jenkins           noarch           2.286-1.1           jenkins            71 M

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

Total download size: 71 M
Installed size: 71 M
Downloading packages:
warning: /var/cache/yum/x86_64/2/jenkins/packages/jenkins-2.286-1.1.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID 45f2c3d5: NOKEY
Public key for jenkins-2.286-1.1.noarch.rpm is not installed
jenkins-2.286-1.1.noarch.rpm                               |  71 MB   00:04


Public key for jenkins-2.286-1.1.noarch.rpm is not installed


jenkins-2.286-1.1.noarch.rpmがインストールされていないと言われている。

ググってみると、GitHubにあるようだ。



インストールする

sudo rpm -ivh https://github.com/jenkinsci/jenkins/releases/download/jenkins-2.286/jenkins-2.286-1.1.noarch.rpm


インストールされたらしいので、気を取り直して、再度Jenkinsを起動

[ec2-user@ip-172-16-16-180 /]$ sudo service jenkins start
Starting jenkins (via systemctl):                          [  OK  ]


起動できたようだ


ブラウザからJenkinsのトップページにアクセス

http://インスタンスのIPアドレス:8080でアクセス



Jenkinsの設定

Jenkinsのトップページに書かれているパスにある initialAdminPassword というファイルにパスワードが記載されている。

/var/lib/jenkins/secrets/initialAdminPassword

secrets フォルダ以下は、アクセス権限がないとアクセスできないので、アクセス権を変更してcatコマンドで内容を確認。

[ec2-user@ip-172-16-16-180 jenkins]$ sudo chmod a+rwx ./secrets
[ec2-user@ip-172-16-16-180 secrets]$ sudo chmod a+rwx initialAdminPassword
[ec2-user@ip-172-16-16-180 secrets]$ cat initialAdminPassword

内容をそのまま Jenkinsのトップページに入力すればOK。


Install suggested plugins


しばらく待つ


必要事項を入力して、Save and Continue


URLは毎回変わるので、Not now で次へ


Jenkinsの準備が整った。Start using Jenkins


ダッシュボード


正直、これをどうやって使っていくのかさっぱりわかっていないが、とりあえず使える準備ができたということで良しとしよう。