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

CLIを使った設定ファイルとポリシー開発 - オープンプレビュー

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

設定ファイルの作成

CircleCI 設定ファイルのポリシーを作成すると、違反を検出し、組織のポリシーを遵守していないビルドを停止することができます。 しかし、これにより .circleci/config.yml ファイルのローカルでの作成に問題が生じます。 config.yml を変更すると、パイプラインがブロックされてしまう場合があります。 それにより開発スピードが遅くなり、フラストレーションになります。

それを低減するためには、CircleCI CLI を使って CI パイプラインの外で、組織のポリシーに対して config.yml をローカルで実行します。 設定ファイルがポリシーを遵守しているかについて、すぐにフィードバックを受け取ることができます。

以下のコマンドは、指定した設定ファイルの入力内容が組織のポリシーを遵守しているかどうかの判定をリクエストします。 コマンドは、ステータスを含む CircleCI の 判定 と発生した可能性があるすべての違反を返します。

判定コマンドの例:

circleci policy decide --owner-id $ORG_ID --input $PATH_TO_CONFIG

CircleCI の判定の例:

{
    "status": "HARD_FAIL",
    "hard_failures": [
        {
            "rule": "custom_rule",
            "reason": "custom failure message"
        }
    ],
    "soft_failures": [
        {
            "rule": "other_rule",
            "reason": "other failure message"
        }
    ]
}

設定ファイルの作成

CircleCI 設定ファイルのポリシーを作成すると、違反を検出し、組織のポリシーを遵守していないビルドを停止することができます。 しかし、これにより .circleci/config.yml ファイルのローカルでの作成に問題が生じます。 config.yml を変更すると、パイプラインがブロックされてしまう場合があります。

それを低減するためには、CircleCI CLI を使って CI パイプラインの外で、組織のポリシーに対して config.yml をローカルで実行します。

circleci policy decide --input $PATH_TO_CONFIG $PATH_TO_POLICY_DIR

判定コマンドの例:

ポリシーと設定ファイルを組み合わせたテストスイートをビルドし、ローカルまたは CI で実行してから、組織のアクティブなポリシーにプッシュすることをお勧めします。

ポリシーの作成

CLI を使うと、言語を選ばない方法で任意の設定ファイルの入力内容がローカルポリシーを遵守しているかを評価できます ポリシーの作成やテストにおいてこの方法を推奨します。

指定された (再帰的に検索された) ポリシーディレクトリに存在するポリシーファイル (*.rego) によりポリシーバンドルが形成されます。

以下は、このコマンドを --help フラグを使って実行した場合の出力です。

circleci policy logs --help

# Returns the following:
Get policy (decision) logs


Usage:
  circleci policy logs [flags]

Examples:
policy logs  --owner-id 462d67f8-b232-4da4-a7de-0c86dd667d3f --after 2022/03/14 --out output.json

Flags:
      --after string        filter decision logs triggered AFTER this datetime
      --before string       filter decision logs triggered BEFORE this datetime
      --branch string       filter decision logs based on branch name
      --context string      policy context (default "config")
  -h, --help                help for logs
      --out string          specify output file name
      --owner-id string     the id of the policy's owner
      --project-id string   filter decision logs based on project-id
      --status string       filter decision logs based on their status

入力

  • 組織 ID の情報が要求されます。組織 ID には --owner-id フラグがついています。

  • このコマンドは、ログに対して以下のフィルターを受け入れます: --after, --before, --branch, --status, and --project-id。 これらのフィルターはオプションです。 また、監査でのニーズに応じて任意のフィルターを組み合わせて使用することも可能です。

出力

  • Stdout: 判定ログは、デフォルトで標準出力にログリストとして出力されます。

  • File: 出力はファイルに記述されます (stdout の代わりに)。 これを行うには、 --out フラグを使用してファイルパスを指定します。


Suggest an edit to this page

Make a contribution
Learn how to contribute