無料でビルドを開始
CircleCI.comアカデミーブログコミュニティサポート

コンフィグファイルポリシーに関するリファレンス

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

このリファレンスのページでは、ポリシー作成に役立つ 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_name1lint に、job_name2test になります。

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"]

Suggest an edit to this page

Make a contribution
Learn how to contribute