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

CLI を使った設定ファイルとポリシーの作成

2 weeks 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"
        }
    ]
}

ポリシーの作成

CLI を使うと、言語を選ばない方法で任意の設定ファイルの入力内容がローカルポリシーを遵守しているかを評価できます ポリシーの作成やテストにおいてこの方法を推奨します。 ローカルディレクトリへのパスの提供以外は上記のコマンドと似ています。

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

circleci policy decide --input $PATH_TO_CONFIG $PATH_TO_POLICY_DIR
`branch` や `project_id` のような `data.meta...` 値を使用するポリシーは、これらの値を `--metafile $PATH_TO_JSON` で表す JSON ファイルも提供する必要があります。

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

ポリシーの判定監査ログの取得

監査ログは、特定の時点でポリシーの判定が行われていることを示す証拠ドキュメントです。 監査ログには、判定に影響を及ぼした入力内容や判定結果が含まれます。

CLI には、組織のポリシー判定ログを取得する policy logs コマンドがあります。

以下は、このコマンドを --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 フラグを使用してファイルパスを指定します。


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

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

サポートが必要ですか

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

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