OpenTacoのapply_requirementsを使ってApplyの条件を制御してみる

OpenTacoのapply_requirementsを使ってApplyの条件を制御してみる

2026.01.30

digger.ymlapply_requirementsフィールドでdigger applyの条件を設定できます。

https://docs.opentaco.dev/ce/howto/apply-requirements

デフォルトはmergeableになっており、マージが可能な状態であればdigger applyを実行できます。

このフィールドには以下の値が設定可能です。

  • approved: Pull Request(以降、PR)作成者以外の1人以上の承認(Approve)
  • undiverged: PR作成後にmainブランチが変更されていない
  • []: 条件判定をスキップ

それぞれ試してみます。

[mergeable]

以下のようにdigger.ymlを設定して、PRを作成しました。

digger.yml
projects:
- name: production
  dir: prod
+  apply_requirements: [mergeable]

Pull Requestがマージ可能なことを確認して、digger applyを実行し成功しました。

digger_yml__Add_apply_requirements_for_production_project__main_tf__A…_by_msato0731_·_Pull_Request__24_·_msdigger_yml__Add_apply_requirements_for_production_project__main_tf__A…_by_msato0731_·_Pull_Request__24_·_msato0731_quickstart-actions-aws.pngato0731_quickstart-actions-aws.png

digger_yml__Add_apply_requirements_for_production_project__main_tf__A…_by_msato0731_·_Pull_Request__24_·_msato0731_quickstart-actions-aws.png

マージ先のブランチに変更を加えて、コンフリクトを発生させました。

digger_yml__Add_apply_requirements_for_production_project__main_tf__A…_by_msato0731_·_Pull_Request__24_·_msato0731_quickstart-actions-aws.png

この状態でdigger applyを実行すると、想定通り失敗しました。

digger_yml__Add_apply_requirements_for_production_project__main_tf__A…_by_msato0731_·_Pull_Request__24_·_msato0731_quickstart-actions-aws.png

[approved]

digger.ymlを変更して、PRを作成しました。

digger.yml
projects:
- name: production
  dir: prod
+  apply_requirements: [approved]

Approve前にdigger applyを実行すると失敗します。

digger_yml__update_apply_requirements_for_production_project_to__appr…_by_msato0731_·_Pull_Request__25_·_msato0731_quickstart-actions-aws.png

Approve後にdigger applyが成功しました。

digger_yml__update_apply_requirements_for_production_project_to__appr…_by_msato0731_·_Pull_Request__25_·_msato0731_quickstart-actions-aws.png

CODEOWNERS統合

apply_requirements: [approved]を利用する方法だと、承認者の制御はできません。(PR作成者以外のだれが承認者してもApplyが可能。)

特定のユーザーの承認を必須にしたい場合は、以下のCODEOWNERS統合を利用するのがおすすめです。

https://dev.classmethod.jp/articles/opentaco-github-codeowners-terraform-apply/

[undiverged]

digger.ymlを変更して、PRを作成しました。

digger.yml
projects:
- name: production
  dir: prod
+  apply_requirements: [undiverged]

mainブランチにtest.mdファイルを追加して、PR作成後にmainブランチが変更されている状態にしました。

想定どおり以下のエラーが出て失敗します。

digger_yml__update_apply_requirements_for_production_project_to__appr…_by_msato0731_·_Pull_Request__25_·_msato0731_quickstart-actions-aws.png

解消するためにローカル環境の作業ブランチで以下の操作を実行しました。

git switch <作業ブランチ>
git rebase origin/main
git push --force-with-lease origin HEAD

再度、digger applyを実行して成功することを確認しました。

digger_yml__update_apply_requirements_for_production_project_to__appr…_by_msato0731_·_Pull_Request__25_·_msato0731_quickstart-actions-aws.png

[]

digger.ymlを変更して、PRを作成しました。

digger.yml
projects:
- name: production
  dir: prod
+  apply_requirements: []

[]はチェックをスキップします。

コンフリクトさせた状態で以下のようにdigger applyを試してみました。

本来ならスキップして、成功するはずです。

しかし、試した際は以下のようにエラーがでてスキップができていませんでした。

Update_tag__hoge__value_to__hogefuga__by_msato0731_·_Pull_Request__26_·_msato0731_quickstart-actions-aws.png

ワークフローレベルのスキップの場合は、スキップしてdigger applyが成功しました。

digger.yml
projects:
- name: production
  dir: prod
  workflow: myprod
-  apply_requirements: []
+workflows:
+  myprod:
+    workflow_configuration:
+      on_pull_request_pushed: ["digger plan"]
+      on_pull_request_closed: ["digger unlock"]
+      on_commit_to_default: ["digger unlock"]
+      skip_merge_check: true

Update_tag__hoge__value_to__hogefuga__by_msato0731_·_Pull_Request__26_·_msato0731_quickstart-actions-aws.png

おわりに

OpenTacoのapply_requirementsによる適用条件制御についてでした。

デフォルトはmergeableになっており、コンフリクト時にはdigger applyが失敗するようになっています。

意図しない上書きを防止する機能がデフォルトで入っているのは嬉しいですね。

この記事をシェアする

FacebookHatena blogX

関連記事