こんにちは。Juntechです。

今回は自動化の親友、Jenkinsをインストールしたいと思います!

Jenkinsってなに?

Jenkinsとは、オープンソースのCIツールです。
もう少し噛み砕くと、
オープンソースというのは、
無償でソースコード(プログラム)を公開していて、
誰でも自由に改造したり再配布していいですよーっていう意味です。
CIは、継続的インテグレーションっていう、アプリケーション開発手法の略語です。

個人的にはもう少し踏み込んで説明したいものですが、
今回の目的と外れちゃうので、
要はめんどくさい手作業を自動化できるツール、だと思ってください。

さっそくインストールしてみよう

今回Jenkinsをインストールするのは、
MacBook Pro 13inch(2019) / macOS Catalina
です。

このPCにはHomebrewが入っているので、
コマンドラインでインストールしたいと思います。

Homebrewが入っているかどうかわからない人は、
ターミナルで brew -v を入力して実行してみてくださいね。
もし Homebrew X.X.X (Xは数字)が表示されなければ、
こちらのページをみてインストールしてください -> https://brew.sh/index_ja

とりあえずJenkinsインストール

ターミナルで下記を実行します

brew install jenkins

すると、、

jenkins: Java 1.8 is required to install this formula.
Install AdoptOpenJDK 8 with Homebrew Cask:
  brew cask install homebrew/cask-versions/adoptopenjdk8
Error: An unsatisfied requirement failed this build.

こんな感じで怒られてしまいました。
JenkinsはJavaで起動するので、そもそもJava入っとらんやんけとのお叱りです。

怒られたのでJDKインストール

言われた通りインストールします。

brew cask install homebrew/cask-versions/adoptopenjdk8

無事成功。

  adoptopenjdk8 was successfully installed!

brewはインストールが終わるとビールを出してくれるのでありがたいですね。

念のためバージョン確認。

openjdk version "1.8.0_242"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.242-b08, mixed mode)

気を取り直してJenkinsインストール

brew install jenkins

成功!

  /usr/local/Cellar/jenkins/2.219: 6 files, 63.3MB, built in 1 minute 48 seconds

使ってみよう!

それではインストールが終わったところで、
さっそく使ってみましょう!

まずは起動

それではコマンドでJenkinsを立ち上げてみます。

sudo java -jar /usr/local/opt/jenkins/libexec/jenkins.war

すると大量のテキストがターミナルに出力されますが、
見逃してはいけないのがこの部分です。

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

XXXXXXXXXXXXXXXX

This may also be found at: /var/root/.jenkins/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

「XXXXXXXXXXXXXXXX」の部分は伏せていますが、
この後すぐにJenkinsの画面で入力するパスワードですので、コピーしておきましょう。

ブラウザからログイン

ターミナルは立ち上げたまま、
ブラウザを開いて、URLバーに下記アドレスを入力しましょう、

localhost:8080/

するとこんな画面に遷移します。

もし遷移しない(このサイトにアクセスできませんとか出る)場合、
違うポート(8080以外)で立ち上がっている可能性があります。
この場合、ターミナルで起動したときにこんな感じでポート情報が出ています。
最後の「8080」がポートなので、
ブラウザからアクセスするポートもこれに合わせて変えましょう。

2020-02-03 11:43:28.528+0000 [id=1] INFO    o.e.j.server.AbstractConnector#doStart: Started ServerConnector@5a5a729f{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}

初期設定

とりあえず推奨プラグインを入れるか、
自分でプラグインを選んで入れるかを聞かれます。

考えるの面倒なので、推奨プラグインを選択します。

動き出したので、プログレスバーが満たされるまで放置しましょう。
終わるとこんな画面になります。

それぞれ入力して、
Save and Continue を選択します。

最後にJenkinsのURLを入力します。
デフォルトのままでいいと思います。


ようやくJenkinsと戯れられます!!

ジョブを作成する


来ました!愛おしいですね!

さっそく「新しいジョブ」を選択してジョブを作成してみます。

アイテム名はtestで、
フリースタイル・プロジェクトにしてみます。
ちなみにこのアイテムのことをJenkinsジョブと呼んだり、
ビルドと呼んだりします。

OKを押すと、ビルドの設定画面に入ります。

今回はお試しなので、
簡単なLinuxコマンドを使って、
汚れがちなダウンロードフォルダをお掃除するジョブを作ってみましょう!

まずGeneral。

説明だけ書いておきます。

次にソースコード管理ですが、
今回はGitとか使ったりしないので、何も設定しません。

ビルド・トリガでは手動以外でビルドを実行するトリガーを設定できます。

今回は「定期的に実行」を設定してみます。
ここにはビルドを実行するスケジュールが設定できます。
記法はcronと同じで、
簡単にいうと左から分 時 日 月 曜日となります。
H 21 * * *は、「毎日21時の忙しくないタイミングで!」という指定です。

ちなみにJenkinsはターミナルで起動しているので、
このプロセスを終了するとJenkinsも落ちちゃいます。
立ち上げっぱなしにする設定もググれば出ますが、
今回は割愛します。

次はビルド環境。何も指定しません。

「ビルド開始前にワークスペースを削除する」とかは、
Gitと繋いだりビルド毎にファイルを作ったりする場合におすすめです。

さて、いよいよビルドです。

今回は「シェルの実行」を選択し、
下記コマンドを書きます。

mv -n /Users/juntech/Downloads/* /Users/juntech/Desktop/Downloads/

これはダウンロードフォルダから、
デスクトップのダウンロードフォルダに、
ファイルを移しますよーというコマンドです。
-nは、ファイル名が重複したらそのファイルは移動しないよ、というオプションです。
(それなら最初からダウンロードフォルダの場所指定変えろやって話ですが…)

最後にビルド後の処理ですが、今回は指定なしです。
メール送ったりファイル保存したり、
他のJenkinsジョブをビルドしたりできます。

終わったら保存しましょう!

できました。

それでは、「ビルド実行」を押してみましょう!

少し待つと、ビルド履歴に実行履歴が表示されます。
青い丸が表示されていれば成功、
赤い丸が表示されていれば失敗を意味します。

今回は無事成功したようなので、
フォルダに行ってみます。

無事移動されてますね!
autohacks.keyだけはファイル名が被っているので、 移動されていません。


今回はここまで。
このJenkinsは、
誰もが知っているような超巨大企業の開発現場でも使われている、
超便利ツールです。

これからもこのJenkinsを使って、
色々な自動化に取り組んでみたいと思います!