正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

チュートリアル: パイプライン実行ポリシーをセットアップする

  • プラン: Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

このチュートリアルでは、inject_policyストラテジを使用してパイプライン実行ポリシーを作成および構成する方法を説明します。これらのポリシーを使用すると、ポリシーがリンクされているプロジェクトで、必要なパイプラインを常に実行できます。

このチュートリアルでは、パイプライン実行ポリシーを作成し、テストプロジェクトにリンクして、パイプラインが実行されることを確認できます。

パイプライン実行ポリシーをセットアップするには、次のようにします:

  1. テストプロジェクトの作成
  2. CI/CDの設定ファイルを作成
  3. パイプライン実行ポリシーを追加
  4. パイプライン実行ポリシーをテスト

はじめる前

このチュートリアルを完了するには、以下が必要です:

  • 既存のグループでプロジェクトを作成する権限。
  • セキュリティポリシーを作成し、リンクする権限。

テストプロジェクトの作成

まず、パイプライン実行ポリシーを適用するテストプロジェクトを作成します:

  1. 左側のサイドバーで、検索または移動先を選択して、グループを見つけます。
  2. 新規プロジェクトを選択します。
  3. 空のプロジェクトの作成を選択します。
  4. フィールドに入力します。
    • プロジェクト名my-pipeline-execution-policy
    • 静的アプリケーションセキュリティテスト (SAST) を有効にするチェックボックスを選択します。
  5. プロジェクトを作成を選択します。

CI/CDの設定ファイルを作成

次に、パイプライン実行ポリシーで適用するCI/CD設定ファイルを作成します:

  1. コード > リポジトリを選択します。

  2. 追加(+) ドロップダウンリストから、新しいファイルを選択します。

  3. ファイル名フィールドに、pipeline-config.ymlと入力します。

  4. ファイルの内容に、以下をコピーします:

    # This file defines the CI/CD jobs that will be enforced by the pipeline execution policy
    enforced-security-scan:
      stage: .pipeline-policy-pre
      script:
        - echo "Running enforced security scan from pipeline execution policy"
        - echo "This job cannot be skipped by developers"
        - echo "Checking for security vulnerabilities..."
        - echo "Security scan completed successfully"
      rules:
        - when: always
    
    enforced-test-job:
      stage: test
      script:
       - echo "Running enforced test job in test stage"
       - echo "Creating test stage if it doesn't exist"
       - echo "Performing mandatory testing requirements..."
       - echo "Enforced tests completed successfully"
     rules:
       - when: always
    
    enforced-compliance-check:
      stage: .pipeline-policy-post
      script:
        - echo "Running enforced compliance check"
        - echo "Verifying pipeline compliance requirements"
        - echo "Compliance check passed"
      rules:
        - when: always
  5. コミットメッセージフィールドに、Add pipeline execution policy configurationと入力します。

  6. 変更をコミットするを選択します。

パイプライン実行ポリシーを追加

次に、パイプライン実行ポリシーをテストプロジェクトに追加します:

  1. セキュリティ > ポリシーを選択します。

  2. 新規ポリシーを選択します。

  3. パイプライン実行ポリシーで、ポリシーの選択を選択します。

  4. フィールドに入力します。

    • 名前: Enforce Security and Compliance Jobs
    • 説明Enforces required security and compliance jobs across all pipelines
    • ポリシーステータス: 有効
  5. アクションを以下のように設定します:

    Inject into into the .gitlab-ci.yml with the pipeline execution file from My Pipeline Execution Policy
    Filepath: [group]/my-pipeline-execution/policy/pipeline-config.yml
  6. マージリクエスト経由で設定を選択します。

  7. マージリクエストの変更タブで、生成されたポリシーYAMLをレビューします。ポリシーは次のようになります:

    ---
    pipeline_execution_policy:
    - name: Enforce Security and Compliance Jobs
      description: Enforces required security and compliance jobs across all pipelines
      enabled: true
      pipeline_config_strategy: inject_policy
      content:
        include:
        - project: [group]/my-pipeline-execution-policy
          file: pipeline-config.yml
      skip_ci:
        - allowed: false
  8. 概要タブに移動し、マージを選択します。このステップでは、My Pipeline Execution Policy - Security Policy Projectという新しいプロジェクトが作成されます。セキュリティポリシープロジェクトは、セキュリティポリシーを保存するために使用され、同じポリシーを複数のプロジェクトに適用できます。

  9. 左側のサイドバーで、検索または移動先を選択し、my-pipeline-execution-policyプロジェクトを見つけます。

  10. セキュリティ > ポリシーを選択します。

    前の手順で追加されたポリシーのリストを確認できます。

パイプライン実行ポリシーをテスト

次に、マージリクエストを作成して、パイプライン実行ポリシーをテストします:

  1. コード > リポジトリを選択します。

  2. 追加(+) ドロップダウンリストから、新しいファイルを選択します。

  3. ファイル名フィールドに、test-file.txtと入力します。

  4. ファイルの内容に、以下を追加します:

    This is a test file to trigger the pipeline execution policy.
  5. コミットメッセージフィールドに、Add test file to trigger pipelineと入力します。

  6. Target Branch(ターゲットブランチ)フィールドに、test-policy-branchと入力します。

  7. 変更をコミットするを選択します。

  8. マージリクエストページが開いたら、マージリクエストを作成を選択します。

    パイプラインが完了するまで待ちます。これには数分かかる場合があります。

  9. マージリクエストでパイプラインタブを選択し、作成されたパイプラインを選択します。

    強制されたジョブの実行が表示されるはずです:

    • enforced-security-scan (.pipeline-policy-preステージで最初に実行)
    • enforced-test-job (ポリシーによってインジェクトされた) testステージ
    • enforced-compliance-check (.pipeline-policy-postステージで最後に実行)
  10. enforced-security-scanジョブを選択して、そのログを表示し、ポリシーで定義されているセキュリティスキャンが実行されたことを確認します。

パイプライン実行ポリシーは、デベロッパーがプロジェクトの.gitlab-ci.ymlファイルに含める内容に関係なく、必要なジョブを正常に強制し、実行されるようにします。

これで、パイプライン実行ポリシーを設定して使用し、組織内のプロジェクト全体で必要なCI/CDジョブの使用を強制する方法がわかりました。

次の手順