##はじめに
Ansible,Gitと調べてきましたが、今回はJenkinsについて調べます。
弊社でもよく聞くキーワードの「Jenkins」ですがいったい何者なのか自分なりにまとめました。
##Jenkinsとはいったい何者
わからないものはとりあえずググる。
Jenkins (ジェンキンス) とは、Javaで書かれたオープンソースの継続的インテグレーションツールである。ソフトウェアのビルド、検証、サーバへのインストール等の一連作業を自動化する事が出来る
ほう、また困ったキーワードが出てきてしまいました。
継続的インテグレーションツールとな、、
##継続的インテグレーション?
Continuous Integration(継続的インテグレーション)
↑略して"CI"と呼ばれたりもしている(こちらのほうが聞いたことがある)
このCIだが、主にプログラマがアプリ開発時の品質改善やリリースまでの期間をなるべく短くするのための習慣のことらしい。
具体的には、以下のような恩恵がある
①作業ミスの削減
②開発者の作業量軽減
③品質の向上
④素早い開発
すごい。
いままで人の手で行っていた「検証」や「プロジェクト管理」を肩代わりしてくれる、おじさん(機械)それがJenkins
参考URL:
http://www.exmotion.co.jp/solution/legacy-4.html
https://www.techmatrix.co.jp/product/cisolution/cisolution1.html
前回紹介した、Gitとの連携も可能
たとえばGitで新しくファイルがpushされるとJenkinsにそれを通知、受け取ったJenkinsはGitからpullして実行。
ごちゃごちゃしてしまうが、Jenkinsは実行の指示出し係(トリガ)?かな
いままでサーバに入って人間の手で「ansible-playbook -i XXX YYYY.yml」とか書いていたコマンドを代わりに送り込んでくれるおじさんってイメージです。
##インストールしてみた
さっそくinstallしてみる
環境:
centos7
java-1.8.0-openjdk
※javaのバージョンは最新にしておきましょう。
さっそくyumでとる!
[vagrant@centos7 ~]$ sudo yum -y install jenkins
~~(略)~~
Downloading packages:
jenkins-2.114-1.1.noarch.rpm | 71 MB 00:00:32
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : jenkins-2.114-1.1.noarch 1/1
Verifying : jenkins-2.114-1.1.noarch 1/1
Installed:
jenkins.noarch 0:2.114-1.1
Complete!
[vagrant@centos7 ~]$
取れました
さっそく起動させる
[vagrant@centos7 ~]$ sudo systemctl start jenkins
[vagrant@centos7 ~]$ systemctl status jenkins
● jenkins.service - LSB: Jenkins Automation Server
Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
Active: active (running) since Mon 2018-04-09 03:16:06 UTC; 40s ago
Docs: man:systemd-sysv-generator(8)
Process: 1264 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/jenkins.service
mq1283 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=...
[vagrant@centos7 ~]$
さっそくログインしてみます。
デフォルトのポートが8080らしいので
localhost:8080にhttpでアクセスします。
おおぉ
うまくいきましたね。
##まとめ
ざっくりとJenkinsとはどんなものかを紹介しました。
高品質を維持すること、作業リスクを減らす、作業員の負担を減らすツールとして注目されているツールでした。
主にアプリ側やサーバ側の範疇な気もしますがAnsibleがネットワークに対応してきているなどの理由からネットワーク屋でも取り入れていきたいツールでもあります。
自動化ってキーワードで追いかけるとよくぶつかる
Jenkinsおじさんですが、ほんの少しは理解をすることができました。
今後は実際に動かしながら身に着けていきたいと思います。