要点: 良いCIは、検証したソースコードと本番で動く成果物が同じであることを証明します。
この記事の用語: 品質ゲート:マージやリリース前に必須とする条件。SBOM:製品に含まれる構成要素一覧。
現場の課題
ビルド成功だけでは、テストのSkip、脆弱ライブラリ、シークレット混入を防げません。権限が強すぎるランナーは、Pull Requestをソフトウェア供給網全体のリスクに変えます。
GitLabとGitHubは構文が違っても、最小権限、ジョブの分離、一つの変更不能な成果物という原則は同じです。セキュリティ上の検出事項には担当者と期限が必要です。
設計と実装
- 重いジョブの前に、リポジトリ状態、Lockfile、生成ファイルの差分を確認します。
- Lint、型検査、テスト、本番ビルドを明確な合格基準で並列実行します。
- ソースコードと成果物をスキャンし、一度だけ署名した同じダイジェストを全環境へ移します。
実装例
verify: format --check; generated-diff; lockfile-policy
quality: lint; typecheck; unit --coverage; integration
build: production-build; migration-check
security: secret-scan; SAST; dependency-audit; image-scan
release: SBOM; sign(digest); attest(provenance)
deploy: promote(the_same_digest)本番導入の進め方
既存パイプラインを測り、ゲートを報告のみで追加してノイズを除きます。短時間の検査、セキュリティポリシー、成果物への署名の順で強制し、その後にキャッシュと並列化で高速化します。
まとめ
CI/CDはレビュー済みソースコードから本番成果物までをつなぐ証跡の連鎖です。
