
【Jenkins】SCM(Source Control Management)を使ってスクリプトの管理をしよう
はじめに
こんにちは株式会社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
おすすめ書籍
もっと深く学びたい方へ
この記事で、SCMを使った管理の仕組みは理解できたと思います。
でも、「どのスクリプトをSCM管理すべきか」「ブランチ戦略をどう設計するか」という判断は、チームの開発フローに深く関わります。
より深い理解のために、こちらの記事もおすすめです:

「なんでこれ選んだんだっけ?」を解決する - ADRという考え方

SREの仕事 ― 問題発見から恒久対応、そして結果観察まで
この記事は役に立ちましたか?

この記事が、何かの整理につながったら
コーヒー1杯分の応援をもらえると嬉しいです。
あなたへのおすすめ
