【Jenkins】SCM(Source Control Management)を使ってスクリプトの管理をしよう

CI/CD
https://jenkins.io/

はじめに

こんにちはSREエンジニアのMakiです。
みなさん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 基本編で作ったスクリプトをコミットしています。
    https://tielec.blog/index.php/sre/ci-cd/jenkins/pipeline-basic/

    これを使ってSCMの機能を使っていきましょう。
  2. パイプラインのスクリプトをgitから呼び出す。
     2-1. ジョブの設定でPipeline scriptと書かれている部分を Pipeline script from SCMに変更します。
    scm1
    2-2. リポジトリとスクリプトがコミットされているパスを指定します。
    scm2
  3. 保存します。

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

ジョブを実行

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

  • ジョブを実行するとこのような結果になります。
    scm3
    SCMを使う場合は初めにリポジトリからソースをチェックアウトする処理が走っているのがわかると思います。
  • ジョブの結果を見てみます。
    scm4
    どのリビジョンのものが使われたのかわかるようになっています。
  • Git Build Data を開くともう少し詳細が分かるようになります。
    scm5
    リビジョンだけでなくビルドしたブランチもここから確認ができます。

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

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

  1. スクリプトの変更履歴が管理できる
    Jenkinsを使っているとジョブの中身を変更したい場合が多々発生すると思います。
    このときに変更履歴の管理ができていないと、誰がどのような意図で修正を加えたのかがわからなくなってしまいます。
    また急に動作がおかしくなった時に修正の影響によるものなのか別の要因によるものなのかの切り分けが難しくなります。
    そのため、開発段階ではSCMを使わずに作り、一通りジョブが完成したらgitなどで管理しSCMの機能を使ってジョブの実行をコントロールするようにしましょう。
  2. スクリプトの更新があったときにJenkinsと自動連係することができる
    Jenkinsでスクリプトの修正を入れたときにすぐに実行結果を確認をしたいという場面はあると思います。
    gitでスクリプトを管理していれば修正がマージされたと同時にテストを実行したり、リポジトリに修正がないか定期的にチェックしに行き変更があった場合のみ実行するといったことを行うことも可能になります。

まとめ

  • SCMとは Source Code Management あるいは Source Control Management のこと。
  • SCMを使うとスクリプトの変更履歴が管理できる
  • Jenkinsと自動連係も実現できる

関連ページ

おすすめ書籍


[改訂第3版]Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

初めてJenkinsを学ぶ方におすすめです。


Jenkins

Jenkinsでできることについてもう少し詳しく学びたい方におすすめです。


サーバ/インフラエンジニアの基本がこれ1冊でしっかり身につく本

コメント

タイトルとURLをコピーしました