はじめに
こんにちは株式会社TIELECのタカシユウトです。 みなさんJenkinsのSCM使っていますか? Jenkinsのジョブを管理していく上でこのジョブって誰がどういう目的で作ったんだろう? と管理者不明のジョブを抱えているところは少なからずあると思います。 この記事ではそうした状況の回避策としてSCMを紹介します。
SCM(Source Code Management)を使ってスクリプトの管理をしてみよう。
SCMとは
Jenkinsで登場する SCM とは Source Code Management あるいは Source Control Management のことです。 SCMではgitやsvnなどでスクリプトを管理し、Jenkinsでスクリプトを呼び出して使うといったことを実現します。
SCMを使ってみる
SCMを使うためにはまずgitなどのでスクリプトを管理してある必要があります。
こちらのGithub にpipeline 基本編で作ったスクリプトをコミットしています。 /ja/tech/ci-cd/jenkins-pipeline-basic これを使ってSCMの機能を使っていきましょう。
パイプラインのスクリプトをgitから呼び出す。
2-1. ジョブの設定で
Pipeline scriptと書かれている部分をPipeline script from SCMに変更します。
2-2. リポジトリとスクリプトがコミットされているパスを指定します。

保存します。
これでgit からパイプラインを呼び出す設定が完了しました。
ジョブを実行
SCMを設定したジョブが用意できたので早速実行してみます。
- ジョブを実行するとこのような結果になります。
SCMを使う場合は初めにリポジトリからソースをチェックアウトする処理が走っているのがわかると思います。 - ジョブの結果を見てみます。
どのリビジョンのものが使われたのかわかるようになっています。 Git Build Dataを開くともう少し詳細が分かるようになります。
リビジョンだけでなくビルドしたブランチもここから確認ができます。
何でSCMを使ったほうがいいのか?
では何でSCMを使ったほうがいいのか。 その理由は2点あります。
スクリプトの変更履歴が管理できる
Jenkinsを使っているとジョブの中身を変更したい場合が多々発生すると思います。 このときに変更履歴の管理ができていないと、誰がどのような意図で修正を加えたのかがわからなくなってしまいます。 また急に動作がおかしくなった時に修正の影響によるものなのか別の要因によるものなのかの切り分けが難しくなります。 そのため、開発段階ではSCMを使わずに作り、一通りジョブが完成したらgitなどで管理しSCMの機能を使ってジョブの実行をコントロールするようにしましょう。
スクリプトの更新があったときにJenkinsと自動連係することができる Jenkinsでスクリプトの修正を入れたときにすぐに実行結果を確認をしたいという場面はあると思います。 gitでスクリプトを管理していれば修正がマージされたと同時にテストを実行したり、リポジトリに修正がないか定期的にチェックしに行き変更があった場合のみ実行するといったことを行うことも可能になります。
まとめ
SCMとはSource Code ManagementあるいはSource Control Managementのこと。- SCMを使うとスクリプトの変更履歴が管理できる
- Jenkinsと自動連係も実現できる
関連ページ
- 【Jenkins】Pipelineジョブを使ってみよう ~ 基本編 ~ /ja/tech/ci-cd/jenkins-pipeline-basic
- 【Jenkins】Pipelineジョブを使ってみよう ~ 応用編 ~ /ja/tech/ci-cd/jenkins-pipeline-advance
おすすめ書籍
[📦 商品リンク: moshimo-book-jenkins-jissen]
[📦 商品リンク: moshimo-book-jenkins-blue]
[📦 商品リンク: moshimo-book-server-infra]
もっと深く学びたい方へ
この記事で、SCMを使った管理の仕組みは理解できたと思います。
でも、「どのスクリプトをSCM管理すべきか」「ブランチ戦略をどう設計するか」という判断は、チームの開発フローに深く関わります。
より深い理解のために、こちらの記事もおすすめです:
/ja/tech/product/introduction-to-adr/
/ja/tech/sre/jenkins-efs-final-report/