Start Building for Free
CircleCI.comアカデミーブログコミュニティサポート

設定ファイルのポリシーに関するリファレンス

4 months ago1 min read
クラウド
このページの内容

このリファレンスのページでは、ポリシーを記述する際に役立つ ヘルパー や CircleCI 固有の関数を紹介します。 これらのヘルパーを使用すると、よりクリーンで定型句の少ないポリシーを作成できます。

circle-policy-agent パッケージには、設定ファイルのポリシーの一般的なユースケースで使用される組み込み関数が含まれています。 policy-servicecircle-cli 、または circle-policy-agent により評価されたポリシーはすべて、これらの関数にアクセスできます。 これはつまり、circleci.config というパッケージ名は予約されているということです。

CircleCI Rego のヘルパー

jobs

jobs は、指定された CircleCI 設定ファイル内のジョブを含む Rego オブジェクトです。 ジョブに関連付けられているポリシーで使用できます。

定義

jobs = []string

jobs オブジェクトの例

[
    "job-a",
    "job-b",
    "job-c"
]

使用法

package org

policy_name["example"]

import future.keywords
import data.circleci.config

jobs := config.jobs

require_jobs

この関数を使用する場合、設定ファイルにジョブ名に基づくジョブを含める必要があります。 必要なジョブリストにある各ジョブは、設定ファイル内の少なくとも 1 つのワークフローに含まれていなければなりません。

定義

require_jobs([string])
returns { string }

使用法

package org

import data.circleci.config

policy_name["example"]

require_security_jobs = config.require_jobs(["security-check", "vulnerability-scan"])

enable_rule["require_security_jobs"]

hard_fail["require_security_jobs"]

orbs

orbs は、指定された設定ファイル内の Orb やバージョンを含んだ Rego オブジェクトです。 Orb に関連付けられているポリシーで使用できます。

定義

orbs[string] = string

orbs オブジェクトの例

{
    "circleci/security": "1.2.3",
    "circleci/foo": "3.2.1"
}

使用法

package org

import data.circleci.config

policy_name["example"]

my_orbs := config.orbs

require_orbs

この関数を使用する場合、設定ファイルに Orb 名に基づく Orb を含める必要があります。 Orb リストにはバージョンは含めないでください。

定義

require_orbs([string])
returns { string: string }

使用法

package org

import data.circleci.config

policy_name["example"]

require_security_orbs = config.require_orbs(["circleci/security", "foo/bar"])

enable_rule["require_security_orbs"]

hard_fail["require_security_orbs"]

require_orbs_version

この関数を使用する場合、ポリシーに Orb 名とバージョンに基づく Orb を含める必要があります。

定義

require_orbs_version([string])
returns { string: string }

使用法

package org

import data.circleci.config

policy_name["example"]

require_orbs_versioned = config.require_orbs_version(["circleci/security@1.2.3", "foo/bar@4.5.6"])

enable_rule["require_orbs_versioned"]

hard_fail["require_orbs_versioned"]

ban_orbs

この関数を使用する場合、設定ファイルに Orb 名に基づく Orb が含まれていると、ポリシー違反になります。 Orb リストにはバージョンは含めないでください。

定義

ban_orbs_version([string])
returns { string: string }

使用法

package org

import data.circleci.config

policy_name["example"]

ban_orbs = config.ban_orbs(["evilcorp/evil"])

enable_rule["ban_orbs"]

hard_fail["ban_orbs"]

ban_orbs_version

この関数を使用する場合、設定に Orb 名とバージョンに基づく Orb が含まれていると、ポリシー違反になります。

定義

ban_orbs_version([string])
returns { string: string }

使用法

package org

import data.circleci.config

policy_name["example"]

ban_orbs_versioned = config.ban_orbs_version(["evilcorp/evil@1.2.3", "foo/bar@4.5.6"])

enable_rule["ban_orbs_versioned"]

hard_fail["ban_orbs_versioned"]

resource_class_by_project

この関数はリソースクラスからプロジェクト ID セットへのマッピングを受け入れます。 マッピングで定義されたリソースクラスは、関連付けられたプロジェクト用に予約されます。 マッピングに含まれていないリソースクラスはすべてのプロジェクトで使用できます。

定義

resource_class_by_project({
  "$RESOURCE_CLASS": {$PROJECT_IDS...},
  ...
})
returns { ...reasons: string }

使用法

package org

import future.keywords
import data.circleci.config

policy_name["example"]

check_resource_class = config.resource_class_by_project({
  "large": {"$PROJECT_UUID_A","$PROJECT_UUID_B"},
})

enable_rule["check_resource_class"]

hard_fail["check_resource_class"]

ドキュメントの改善にご協力ください

このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、 GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。

サポートが必要ですか

CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。

または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。