チュートリアル: パイプライン実行ポリシーをセットアップする
- プラン: Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
このチュートリアルでは、inject_policyストラテジを使用してパイプライン実行ポリシーを作成および構成する方法を説明します。これらのポリシーを使用すると、ポリシーがリンクされているプロジェクトで、必要なパイプラインを常に実行できます。
このチュートリアルでは、パイプライン実行ポリシーを作成し、テストプロジェクトにリンクして、パイプラインが実行されることを確認できます。
パイプライン実行ポリシーをセットアップするには、次のようにします:
はじめる前
このチュートリアルを完了するには、以下が必要です:
- 既存のグループでプロジェクトを作成する権限。
- セキュリティポリシーを作成し、リンクする権限。
テストプロジェクトの作成
まず、パイプライン実行ポリシーを適用するテストプロジェクトを作成します:
- 左側のサイドバーで、検索または移動先を選択して、グループを見つけます。
- 新規プロジェクトを選択します。
- 空のプロジェクトの作成を選択します。
- フィールドに入力します。
- プロジェクト名:
my-pipeline-execution-policy。 - 静的アプリケーションセキュリティテスト (SAST) を有効にするチェックボックスを選択します。
- プロジェクト名:
- プロジェクトを作成を選択します。
CI/CDの設定ファイルを作成
次に、パイプライン実行ポリシーで適用するCI/CD設定ファイルを作成します:
コード > リポジトリを選択します。
追加(+) ドロップダウンリストから、新しいファイルを選択します。
ファイル名フィールドに、
pipeline-config.ymlと入力します。ファイルの内容に、以下をコピーします:
# 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コミットメッセージフィールドに、
Add pipeline execution policy configurationと入力します。変更をコミットするを選択します。
パイプライン実行ポリシーを追加
次に、パイプライン実行ポリシーをテストプロジェクトに追加します:
セキュリティ > ポリシーを選択します。
新規ポリシーを選択します。
パイプライン実行ポリシーで、ポリシーの選択を選択します。
フィールドに入力します。
- 名前:
Enforce Security and Compliance Jobs - 説明:
Enforces required security and compliance jobs across all pipelines - ポリシーステータス: 有効
- 名前:
アクションを以下のように設定します:
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マージリクエスト経由で設定を選択します。
マージリクエストの変更タブで、生成されたポリシー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概要タブに移動し、マージを選択します。このステップでは、
My Pipeline Execution Policy - Security Policy Projectという新しいプロジェクトが作成されます。セキュリティポリシープロジェクトは、セキュリティポリシーを保存するために使用され、同じポリシーを複数のプロジェクトに適用できます。左側のサイドバーで、検索または移動先を選択し、
my-pipeline-execution-policyプロジェクトを見つけます。セキュリティ > ポリシーを選択します。
前の手順で追加されたポリシーのリストを確認できます。
パイプライン実行ポリシーをテスト
次に、マージリクエストを作成して、パイプライン実行ポリシーをテストします:
コード > リポジトリを選択します。
追加(+) ドロップダウンリストから、新しいファイルを選択します。
ファイル名フィールドに、
test-file.txtと入力します。ファイルの内容に、以下を追加します:
This is a test file to trigger the pipeline execution policy.コミットメッセージフィールドに、
Add test file to trigger pipelineと入力します。Target Branch(ターゲットブランチ)フィールドに、
test-policy-branchと入力します。変更をコミットするを選択します。
マージリクエストページが開いたら、マージリクエストを作成を選択します。
パイプラインが完了するまで待ちます。これには数分かかる場合があります。
マージリクエストでパイプラインタブを選択し、作成されたパイプラインを選択します。
強制されたジョブの実行が表示されるはずです:
enforced-security-scan(.pipeline-policy-preステージで最初に実行)enforced-test-job(ポリシーによってインジェクトされた)testステージenforced-compliance-check(.pipeline-policy-postステージで最後に実行)
enforced-security-scanジョブを選択して、そのログを表示し、ポリシーで定義されているセキュリティスキャンが実行されたことを確認します。
パイプライン実行ポリシーは、デベロッパーがプロジェクトの.gitlab-ci.ymlファイルに含める内容に関係なく、必要なジョブを正常に強制し、実行されるようにします。
これで、パイプライン実行ポリシーを設定して使用し、組織内のプロジェクト全体で必要なCI/CDジョブの使用を強制する方法がわかりました。
次の手順
- パイプライン実行ポリシーの構成ストラテジの詳細をご覧ください。
- 高度なパイプライン実行ポリシーの例を調査する。