Skip to content
Latchkey

Pipeline as Codeとは?

Pipeline as Codeとは、CI/CD pipelineを、アプリケーションのコードと並んで存在するバージョン管理された設定ファイルで定義することです。

初期のCIツールはWeb UIをクリックして設定されており、pipelineをレビューしたり、コピーしたり、復元したりするのが困難でした。Pipeline as Codeはその設定をリポジトリ内のファイルへ移し、pipelineを他のコードと同じように扱えるようにします。

中心となる考え方

ダッシュボードでjobを設定する代わりに、pipeline定義をファイル、多くの場合YAMLに書き、リポジトリにcommitします。CIシステムはそのファイルを読んで何を実行するかを知ります。pipelineはコードベースの一部となり、アプリケーションと並んでバージョン管理されレビューされます。

実例

A pipeline defined in a YAML file
name: CI
on: push
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: make build
      - run: make test

実際の仕組み

ファイルが変わればpipelineが変わります。同じcommitで、同じpull requestでレビューされます。誰がbuild処理をなぜ変更したかを正確に確認できます。リポジトリをブランチするとpipelineもブランチされるため、feature branchはpipelineの変更をメインラインに到達する前に安全にテストできます。

なぜUIより優れているのか

  • バージョン管理: すべてのpipeline変更が追跡され、レビュー可能です。
  • 再現性: pipelineは履歴を含めてコードとともに移動します。
  • 再利用: テンプレートと共有ファイルが重複を減らします。
  • 復元: リポジトリを復元すればpipelineも復元されます。

なぜ重要か

Pipeline as Codeは、レビュー、テスト、バージョン履歴といったソフトウェアエンジニアリングの規律を、デリバリー処理そのものにもたらします。またpipelineを可搬で自己文書化されたものにします。新しいエンジニアがファイルを読めば、プロジェクトがどのようにbuildされ出荷されるかを正確に理解できます。

重要なポイント

  • Pipeline as CodeはCI/CDをバージョン管理されたファイルで定義します。
  • pipelineの変更はアプリケーションのコードと同様にレビューされ追跡されます。
  • 再現性、再利用、復元性を向上させます。

関連ガイド