CLIを使った設定ファイルとポリシー開発 - オープンプレビュー
コンフィグファイルのポリシー管理機能は Scale プランでのみご利用いただけます。 |
設定ファイルのポリシー管理で CLI を使用する前に、ご使用の CLI がトークンで認証されており、更新されていることをご確認ください。 詳細については、 ローカルの CLI のインストールのページをご覧ください。 |
設定ファイルの作成
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
フラグを使用してファイルパスを指定します。