はじめに

こんにちは株式会社TIELECのタカシユウトです。 みなさんJenkinsのSCM使っていますか? Jenkinsのジョブを管理していく上でこのジョブって誰がどういう目的で作ったんだろう? と管理者不明のジョブを抱えているところは少なからずあると思います。 この記事ではそうした状況の回避策としてSCMを紹介します。

SCM(Source Code Management)を使ってスクリプトの管理をしてみよう。

SCMとは

Jenkinsで登場する SCM とは Source Code Management あるいは Source Control Management のことです。 SCMではgitやsvnなどでスクリプトを管理し、Jenkinsでスクリプトを呼び出して使うといったことを実現します。

SCMを使ってみる

  1. SCMを使うためにはまずgitなどのでスクリプトを管理してある必要があります。

    こちらのGithub にpipeline 基本編で作ったスクリプトをコミットしています。 /ja/tech/ci-cd/jenkins-pipeline-basic これを使ってSCMの機能を使っていきましょう。

  2. パイプラインのスクリプトをgitから呼び出す。

     2-1. ジョブの設定でPipeline scriptと書かれている部分を Pipeline script from SCMに変更します。 scm1

    2-2. リポジトリとスクリプトがコミットされているパスを指定します。 scm2

  3. 保存します。

これでgit からパイプラインを呼び出す設定が完了しました。

ジョブを実行

SCMを設定したジョブが用意できたので早速実行してみます。

何でSCMを使ったほうがいいのか?

では何でSCMを使ったほうがいいのか。 その理由は2点あります。

  1. スクリプトの変更履歴が管理できる

    Jenkinsを使っているとジョブの中身を変更したい場合が多々発生すると思います。 このときに変更履歴の管理ができていないと、誰がどのような意図で修正を加えたのかがわからなくなってしまいます。 また急に動作がおかしくなった時に修正の影響によるものなのか別の要因によるものなのかの切り分けが難しくなります。 そのため、開発段階ではSCMを使わずに作り、一通りジョブが完成したらgitなどで管理しSCMの機能を使ってジョブの実行をコントロールするようにしましょう。

  2. スクリプトの更新があったときにJenkinsと自動連係することができる Jenkinsでスクリプトの修正を入れたときにすぐに実行結果を確認をしたいという場面はあると思います。 gitでスクリプトを管理していれば修正がマージされたと同時にテストを実行したり、リポジトリに修正がないか定期的にチェックしに行き変更があった場合のみ実行するといったことを行うことも可能になります。

まとめ

関連ページ

おすすめ書籍

[📦 商品リンク: 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/