コンフィグファイルポリシーに関するリファレンス
このページの内容
コンフィグファイルのポリシー管理機能は Scale プランでのみご利用いただけます。この機能は現在オープンプレビュー段階です。 |
このリファレンスのページでは、ポリシー作成に役立つ CircleCI 専用関数であるヘルパーを紹介します。 これらのヘルパーを使用すると、より定型句の少ないすっきりとしたポリシーを作成できます。
このリファレンスのページでは、ポリシー作成に役立つ CircleCI 専用関数であるヘルパーを紹介します。 これらのヘルパーを使用すると、より定型句の少ないすっきりとしたポリシーを作成できます。 つまり、circleci.config
および circleci.utils
というパッケージ名は予約されているということです。
CircleCI コンフィグヘルパー
以下のヘルパーは、import data.circleci.config
でインポートします。
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
ban_orbs
この関数では、指定した Orb 名に該当する Orb が含まれるコンフィグファイルをポリシー違反とみなします。 Orb リストにはバージョンは含めないでください。
定義
ban_orbs([string])
returns { string: string }
使用法
package org
import data.circleci.config
policy_name["example"]
ban_orbs = config.ban_orbs(["evilcorp/evil"])
enable_hard["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_hard["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_hard["check_resource_class"]
contexts_allowed_by_project_ids
この関数は、プロジェクト ID (PROJECTS
) とコンテキスト名 (ALLOWED_CONTEXTS
) を以下のいずれかの形式で受け取ります。
-
文字列
-
文字列のセット
-
文字列の配列
PROJECTS
で指定されたプロジェクトすべてにおいて、ALLOWED_CONTEXTS
に指定されていないコンテキストすべてを使用できなくなります。
定義
contexts_allowed_by_project_ids(
PROJECTS: string | Array<string> | Set<string>
ALLOWED_CONTEXTS: string | Array<string> | Set<string>
)
returns reason <type string>
使用法
package org
import future.keywords
import data.circleci.config
policy_name["a_unique_policy_name"]
rule_contexts_allowed_by_project_ids = config.contexts_allowed_by_project_ids(
["${PROJECT_1_UUID}","${PROJECT_2_UUID}"],
["${ALLOWED_CONTEXT_NAME_1}","${ALLOWED_CONTEXT_NAME_2}"]
)
enable_hard["rule_contexts_allowed_by_project_ids"]
contexts_blocked_by_project_ids
この関数は、プロジェクト ID (PROJECTS
) とコンテキスト名 (BLOCKED_CONTEXTS
) を以下のいずれかの形式で受け取ります。
-
文字列
-
文字列のセット
-
文字列の配列
PROJECTS
で指定されたプロジェクトすべてにおいて、BLOCKED_CONTEXTS
に指定されたコンテキストすべてを使用できなくなります。
定義
contexts_blocked_by_project_ids(
PROJECTS: string | Array<string> | Set<string>
BLOCKED_CONTEXTS: string | Array<string> | Set<string>
)
returns reason: string
使用法
package org
import future.keywords
import data.circleci.config
policy_name["a_unique_policy_name"]
rule_contexts_blocked_by_project_ids = config.contexts_blocked_by_project_ids(
["${PROJECT_1_UUID}","${PROJECT_2_UUID}"],
["${BLOCKED_CONTEXT_1}","${BLOCKED_CONTEXT_2}"]
)
enable_hard["rule_contexts_blocked_by_project_ids"]
contexts_reserved_by_project_ids
この関数は、プロジェクト ID (PROJECTS
) とコンテキスト名 (RESERVED_CONTEXTS
) を以下のいずれかの形式で受け取ります。
-
文字列
-
文字列のセット
-
文字列の配列
PROJECTS
で指定されていないプロジェクトすべてにおいて、RESERVED_CONTEXTS
に指定されたコンテキストすべてを使用できなくなります。
定義
contexts_reserved_by_project_ids(
PROJECTS: string | Array<string> | Set<string>
RESERVED_CONTEXTS: string | Array<string> | Set<string>
)
returns reason: string
使用法
package org
import future.keywords
import data.circleci.config
policy_name["a_unique_policy_name"]
rule_contexts_reserved_by_project_ids = config.contexts_reserved_by_project_ids(
["${PROJECT_1_UUID}","${PROJECT_2_UUID}"],
["${RESERVED_CONTEXT_1}","${RESERVED_CONTEXT_2}"]
)
enable_hard["rule_contexts_reserved_by_project_ids"]
contexts_reserved_by_branches
この関数は、VCS のブランチ名 (BRANCHES
) とコンテキスト名 (RESERVED_CONTEXTS
) を以下のいずれかの形式で受け取ります。
-
文字列
-
文字列のセット
-
文字列の配列
BRANCHES
で指定されていないブランチにおいて、RESERVED_CONTEXTS
に指定されたコンテキストすべてを使用できなくなります。ただし、他のコンテキストは使用可能です。
定義
contexts_reserved_by_branches(
BRANCHES: string | Array<string> | Set<string>
CONTEXT_LIST: string | Array<string> | Set<string>
)
returns reason: string
使用法
package org
import future.keywords
import data.circleci.config
policy_name["a_unique_policy_name"]
rule_contexts_reserved_by_branches = config.contexts_reserved_by_branches(
["${BRANCH_1}, "${BRANCH_2}", "${BRANCH_3}"]",
["${RESERVED_CONTEXT_1}","${RESERVED_CONTEXT_2}"]
)
enable_hard["rule_contexts_reserved_by_branches"]
CircleCI コンフィグヘルパー
以下のヘルパーは、import data.circleci.config
でインポートします。
orbs
orbs
は、指定したコンフィグファイル内の Orb とバージョンを要素に持つ Rego オブジェクトです。 Orb に関連付けられているポリシーで使用できます。 取得対象の要素がオブジェクトの場合、オブジェクトのキーが返されます。
定義
orbs[string] = string
使用法
package org
import data.circleci.config
policy_name["example"]
my_orbs := config.orbs
以下の config.yml を例に考えてみましょう。
workflows:
main:
jobs:
- lint
- test:
context: test-vars
上記のポリシーでは、job_name1
が lint
に、job_name2
が test
になります。
ban_orbs
この関数では、指定した Orb 名に該当する Orb が含まれるコンフィグファイルをポリシー違反とみなします。 Orb リストにはバージョンは含めないでください。
定義
ban_orbs([string])
returns { string: string }
使用法
package org
import data.circleci.config
policy_name["example"]
ban_orbs = config.ban_orbs(["evilcorp/evil"])
enable_hard["ban_orbs"]
ban_orbs_version
この関数では、指定した Orb 名とバージョンに該当する Orb が含まれるコンフィグファイルをポリシー違反とみなします。 配列の値はセットにキャストされ、重複が排除されます。 セットの値は変化せず、セット <Set> にキャストされません。
定義
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_hard["ban_orbs_versioned"]