🐢
[監査向け]Gitでリリース時のファイル差分を取得する
システムのリリースに当たって忘れてはいけないのが、システム監査。
メモレベルになりますが、複数の現場での実務経験をもとに、最低限必要な内容をまとめておきます。
なお、システム監査に関する内容は、システム監査制度について | 経済産業省をご覧ください。
概要
- 本記事の目的: リリース時の記録を残し、システム監査に備える
- 本記事の対象: Gitでソースコードを管理している場合
- ポイント: 再現性があること(改ざん不可で、誰が監査しても同じ結果になること)
手順
以下、Gitにて、developブランチをmainブランチにマージする場合
(1) developブランチのコミットハッシュ値を取得
ローカル環境にて、以下を実施
# ①-1:developブランチをチェックアウトしたことがある場合
$ git checkout develop
# ①-2:developブランチをチェックアウトしたことがない場合
$ git checkout -b develop remotes/origin/develop
# ②:ブランチの最新化
$ git pull
# ③:コミットハッシュ値を取得
$ git log --oneline -n 1
(2) mainブランチのコミットハッシュ値を取得
# ①-1:mainブランチをチェックアウトしたことがある場合
$ git checkout main
# ①-2:mainブランチをチェックアウトしたことがない場合
$ git checkout -b main remotes/origin/main
# ②:ブランチの最新化
$ git pull
# ③:コミットハッシュ値を取得
$ git log --oneline -n 1
(3) develop - mainブランチ間のファイル差分を取得
# ①-1: ファイル差分の取得
$ git diff [(2)で取得したmainブランチのコミットハッシュ値] [(1)で取得したdevelopブランチのコミットハッシュ値] --name-status
# ②: この後、差分のあるファイル一覧が表示される
# ①-2, ②-2: ファイル差分が多い場合はファイルに出力するとラク
$ git diff [(2)で取得したmainブランチのコミットハッシュ値] [(1)で取得したdevelopブランチのコミットハッシュ値] --name-status > git_diff.txt
ここで、コンソールの左端に表示される文字の意味は以下の通り
文字 | 意味 | 備考 |
---|---|---|
A | 追加 | addのA |
M | 変更 | modifyのM |
D | 削除 | deleteのD |
R | リネーム | renameのR |
リリース用のドキュメントへの記録
リリース用のドキュメント(自分の経験則では、BacklogやRedmine等へリリースチケットを作成→そちらに記載)に以下を記載しておきます。
(1) 基本的な情報
まずは、リリースに当たっての基本的な情報から。
- リリース日時
- リリース目的: 何のためのリリースか?
- リリース担当者、監督者、承認者など: 責任の所在が誰にあるのか?
リリース前にすでに分かっている内容かと思うので、開発を進める中で記入を進めておくとよいでしょう。
(2) マージ元/先のコミットハッシュ値
手順の(1),(2)で取得した値を記入します。
ブランチ | コミットハッシュ値 | 備考 |
---|---|---|
develop(マージ元) | xxxxxxx | 手順の(1)で取得した値 |
main(マージ先) | yyyyyyy | 手順の(2)で取得した値 |
(3) 差分のあるファイル
続いて、対象のリリースで差分のあるファイルについてです。
手順(3) で取得したファイル一覧でOK。
# 手順の(3) で取得したdevelop - mainブランチ間のファイル差分を貼り付け
(4) リリース手順
どのような手順でリリースしたのか? も超重要!
というわけで、
- リリース手順(実行コマンドやその順序)
も、記載しておきます。
本記事でいうと、手順(1)~(3)に記載の内容に加え、
- ソースコードのマージ
- 環境への展開
などなど。
(5) 証跡
- リリース後の動作確認手順や仕様書
- 上記の証跡(スクショなど)
など、リリース内容に不備がないことを証明する内容を取得、保管しておきましょう!
終わりに
ポイントは、マージ元/先のブランチのコミットハッシュ値を取得すること。
これさえできていれば、後から調査が入ってより詳細な内容が必要になった場合も、正確に差分を取得できます。
他のやり方も聞いてみたいので、こんなやり方しているよ、というのがありましたら、ぜひ教えてください!
Discussion