はじめに

こんにちは株式会社TIELECのタカシユウトです。 この記事ではJenkinsのフリースタイルジョブの使い方ついて紹介します。 これからJenkinsを学びたいと考えている方におすすめの内容となっています。

Jenkins フリースタイルジョブを使ってみよう

シナリオ

猫の画像を取得して保存し、ジョブの実行結果をSlackに通知する

1. フリースタイルジョブを作成する

Enter an item name にジョブ名を入力して ジョブを作成します。 ジョブ名: kitten_image_generator

設定の入力

ジョブの説明分を入力しましょう。

ジョブの同時実行数を制御できます。ワークスペースのファイルを編集したりする処理が入る場合は同実行可能にしていると処理がカニバることが考えられるので、同時実行数は 1 に制御しておきましょう。それ以外の場合は処理の負荷に応じて制限するようにしましょう。

例えばコンパイルを複数同時に実行したい場合もあるかもしれませんが、マシンのスペックが十分でない場合はJenkinsが故障する恐れもあるので適切にコントロールすることが大切です。

シェルやWindows バッチを実行するときに環境変数としてパラメータを設定することができます。 今回はダウンロードした猫の画像を保存するファイル名を文字列のパラメータとして設定してみます。

名前: KITTEN_IMAGE_FILE_NAME
デフォルト値: kitten-image.jpg
説明: 保存する猫の画像のファイル名

もちろんパラメータを設定しないで運用することも可能です。

過去のビルド結果は一定期間保持した後破棄し、ビルド結果をローテーションするようにしましょう。

Jenkinsはジョブの実行結果をファイルとして管理しています。 ビルド結果をローテーションしないまま放置するとJenkinsのディスク容量を圧迫する要因となりJenkinsの運用に支障をきたすことがあります。

具体的にはディスク容量がなくなるとジョブが実行できなくなります。 もっとひどくなると画面が開かなくなります。

このようにならないためにもビルド結果のローテーションは極力設定するようにしましょう。

ローテーションは 日数 または ビルドの数 の組み合わせで設定が可能です。 高度な設定を開くと 成果物の保存日数 や 、 成果物の保存最大ビルド数 といった単位でも設定可能です。

今回はビルドの保存最大数を 5 として設定してみます。

Jenkinsのジョブを実行するサーバーをコントロールすることができます。 スレーブが設定されている場合は極力 スレーブに処理を任せるようにしましょう。 マスターはジョブの統合管理をすることが主な役割で、ジョブの実行はスレーブに任せることがJenkinsの基本プラクティスです。


ビルド手順の追加 から行いたい処理を設定します。 今回は一番ベーシックな シェルの実行 をやってみます。 サーバーが Windowsの場合は Windows バッチコマンドの実行 を選択することになります。

シェルスクリプト

curl --fail -o ${KITTEN_IMAGE_FILE_NAME} http://www.randomkittengenerator.com/cats/rotator.php


ジョブの実行結果をSlackに通知して結果を確認できるようにしてみます。 今回は 成功 と 失敗 の 両方通知してみます。

Slack の通知先は #topic_step_up_jenkins に設定してみます。

Jenkinsのワークスペースはジョブで共通です。作業が終わったら次のジョブ実行時に影響が出ないようにワークスペースはきれいにしておきましょう。

保存

ここまで設定が終わったら 保存または Apply を押してください。


2. フリースタイルジョブを実行してみる

パラメータをデフォルトから編集する場合はこの画面で編集します。

kitten-image.jpg と書かれたファイルが成果物として保存されいるのでクリックしてみましょう。

無事に猫の画像を取得することができました。

おまけ

http://www.randomkittengenerator.com/

今回猫の画像生成に利用したのはこちらのサイトです。 こちらにアクセスすると子猫の画像がランダムで表示されます。

関連ページ

おすすめ書籍

[📦 商品リンク: moshimo-book-jenkins-jissen]

[📦 商品リンク: moshimo-book-jenkins-blue]

[📦 商品リンク: moshimo-book-server-infra]

もっと深く学びたい方へ

この記事で、フリースタイルジョブの作り方は理解できたと思います。

でも、「どういうタスクを自動化すべきか」「フリースタイルとPipelineのどちらを選ぶか」という判断は、メンテナンス性や拡張性を考える必要があります。

より深い理解のために、こちらの記事もおすすめです:

/ja/tech/ai-dev-acceleration-and-brake

/ja/tech/sre/monitoring-hearing-to-morning-check/