
Jenkinsを使うのであれば、
プッシュしたプログラムを自動でテストしてほしい!
自動でテストしてもらうための方法はいくつかあるようだが、、SCMボーリングなるものがあるらしい。
リポジトリが更新されたかどうかを定期的にチェックし、更新があればジョブを実行できるという、手軽かつ無難なトリガーが設定できるようなので、これをマスターすれば自動テストの重要な起点となるはず・・・!
目次
Githubの設定
SCMボーリングをテストするためのGithubリポジトリを調達。
リポジトリ名はなんでもいいので、とりあえず「scm_test」としてます。

リポジトリの作成完了!
とりあえずGithubはこれでOK

Jenkinsの設定
次にJenkinsで前述のGithubリポジトリと連携するためのジョブを作成します。
正常動作することをまずは確認したいので、最低限の設定を行います。
ジョブの設定

ジョブ名はGithubに合わせ、「scm_test」にしときます。
ソースコード管理

■1.リポジトリURL
Githubでリポジトリ作成完了画面のURLを指定
■2.ブランチ指定子
Githubでリポジトリ作成完了画面に出てきたデフォルトのブランチ名を指定
※コピペで実行する為
ビルド・トリガ

SCMボーリングを指定。
スケジュールはCRONと似た記述、何分でもいいんですが、ここでは2分ごと(H/2 * * * *)に設定。
ビルド


これはなくても動くんですがせっかくなので、、、日付でも取得しときます。
ここまで来たら保存!!
SCMボーリングのご様子

2分単位でSCMボーリングしてるので、ほどなくすると左メニューの履歴に失敗が付くはず、
そう、この手順でこのタイミングでは、
必ず失敗するw
ログを見てみよう、、、


コンソール出力の赤枠部分が原因。
「リビジョンが見つかんねえんだわ・・・」
とのこと。
Githubリポジトリを用意したものの、何のファイルも格納されてないとエラーしてしまう。
なので何らかのファイルをリポジトリに登録しておく必要がある。

ちなみに悠長にしてると次のSCMボーリングが走り、もれなくエラーする。
※初回ビルドが成功するまで続く
リポジトリにファイルを追加し、SCMボーリングを成功させる
リポジトリにファイルを追加

適当な場所にフォルダを作成

echo "# scm_test" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/holiday-programmer5020/scm_test.git
git push -u origin main
Githubの赤枠内をコピペして実行する

リポジトリにファイルが格納されたことを確認、これでSCMボーリングが成功するはずなので確認しに行く。
SCMボーリングの結果確認

SCMボーリングは成功するまで常にビルドが試行されるので、少し待てばこんな感じで成功マークが出るはず。


こんな感じで成功していることを確認できます。
ちなみに赤枠はJenkinsのビルドで設定したコマンドと、その実行結果が表示されている。
というわけで
無事SCMボーリングが成功したことを確認できた!
以降SCMボーリングによるビルドは、リポジトリに更新があった時のみ実行されるようになる。
ビルドコマンドが誤ってたらどうなる?
リポジトリにファイルが存在し、うまいことGithubと連携できることは分かった、
「もしビルドコマンドが失敗したらどうなるか」、というのが気になったので確認。。。

ビルドコマンドを変更します。
この場合/root以下にファイルを生成するようシェルコマンドを書いているんですが、
このディレクトリの操作はroot権限が必要なため、Jenkinsでは直接触れません。
ビルドした結果

上記はビルドを実行した結果です。
赤枠に書いている通り、権限不足でエラーしています。
権限問題を解決してビルドした結果
操作するディレクトリが悪いので、ルート直下にjenkinsというディレクトリを作成して、その中にファイルを生成するようにします。
mkdir /jenkins
chown jenkins:jenkins /jenkins
Webブラウザ経由で操作していたのでapacheかと思ったんですが、jenkinsが正解。

コマンドを修正します。
あとはリポジトリのファイルを更新してSCMボーリングを待つか、Jenkinsの画面上でジョブを実行して確認します。

うまくいくとこんな感じになります。
touchコマンドも特に問題ない様子、、、一応

jenkinsディレクトリ以下にファイルができていることを確認できます!