From 49bf23c65b4e978760a6b71dc0b843f63447f2ae Mon Sep 17 00:00:00 2001
From: Timo Furrer <tuxtimo@gmail.com>
Date: Tue, 18 Mar 2025 09:02:17 +0100
Subject: [PATCH] Support `fmt_allow_failure` input in all opinionated pipeline
 templates

Closes https://gitlab.com/components/opentofu/-/issues/121

Changelog: added
---
 templates/full-pipeline.yml         | 6 ++++++
 templates/validate-plan-apply.yml   | 6 ++++++
 templates/validate-plan-destroy.yml | 6 ++++++
 templates/validate-plan.yml         | 6 ++++++
 4 files changed, 24 insertions(+)

diff --git a/templates/full-pipeline.yml b/templates/full-pipeline.yml
index 98403b1..7530d15 100644
--- a/templates/full-pipeline.yml
+++ b/templates/full-pipeline.yml
@@ -100,6 +100,10 @@ spec:
       default: ''
       type: string
       description: 'Path to a variables files relative to root_dir.'
+    fmt_allow_failure:
+      default: true
+      type: boolean
+      description: 'Whether the fmt job is allowed to fail or not.'
     fmt_rules:
       default:
         - if: $CI_PIPELINE_SOURCE == "merge_request_event"
@@ -238,6 +242,7 @@ include:
       image_digest: $[[ inputs.image_digest ]]
       root_dir: $[[ inputs.root_dir ]]
       needs: []
+      allow_failure: $[[ inputs.fmt_allow_failure ]]
       rules: $[[ inputs.fmt_rules ]]
   - local: '/templates/validate.yml'
     rules:
@@ -439,6 +444,7 @@ stages:
           plan_name: $[[ inputs.plan_name ]]
           plan_artifacts_access: $[[ inputs.plan_artifacts_access ]]
           var_file: $[[ inputs.var_file ]]
+          fmt_allow_failure: $[[ inputs.fmt_allow_failure ]]
           fmt_rules: $[[ inputs.fmt_rules ]]
           validate_rules: $[[ inputs.validate_rules ]]
           plan_rules: $[[ inputs.plan_rules ]]
diff --git a/templates/validate-plan-apply.yml b/templates/validate-plan-apply.yml
index f72f9c9..3abadd3 100644
--- a/templates/validate-plan-apply.yml
+++ b/templates/validate-plan-apply.yml
@@ -87,6 +87,10 @@ spec:
       default: ''
       type: string
       description: 'Path to a variables files relative to root_dir.'
+    fmt_allow_failure:
+      default: true
+      type: boolean
+      description: 'Whether the fmt job is allowed to fail or not.'
     fmt_rules:
       default:
         - if: $CI_PIPELINE_SOURCE == "merge_request_event"
@@ -202,6 +206,7 @@ include:
       image_digest: $[[ inputs.image_digest ]]
       root_dir: $[[ inputs.root_dir ]]
       needs: []
+      allow_failure: $[[ inputs.fmt_allow_failure ]]
       rules: $[[ inputs.fmt_rules ]]
   - local: '/templates/validate.yml'
     rules:
@@ -329,6 +334,7 @@ stages:
           plan_artifacts_access: $[[ inputs.plan_artifacts_access ]]
           var_file: $[[ inputs.var_file ]]
           fmt_rules: $[[ inputs.fmt_rules ]]
+          fmt_allow_failure: $[[ inputs.fmt_allow_failure ]]
           validate_rules: $[[ inputs.validate_rules ]]
           plan_rules: $[[ inputs.plan_rules ]]
           apply_rules: $[[ inputs.apply_rules ]]
diff --git a/templates/validate-plan-destroy.yml b/templates/validate-plan-destroy.yml
index b21f69b..c3def63 100644
--- a/templates/validate-plan-destroy.yml
+++ b/templates/validate-plan-destroy.yml
@@ -87,6 +87,10 @@ spec:
       default: ''
       type: string
       description: 'Path to a variables files relative to root_dir.'
+    fmt_allow_failure:
+      default: true
+      type: boolean
+      description: 'Whether the fmt job is allowed to fail or not.'
     fmt_rules:
       default:
         - if: $CI_PIPELINE_SOURCE == "merge_request_event"
@@ -208,6 +212,7 @@ include:
       image_digest: $[[ inputs.image_digest ]]
       root_dir: $[[ inputs.root_dir ]]
       needs: []
+      allow_failure: $[[ inputs.fmt_allow_failure ]]
       rules: $[[ inputs.fmt_rules ]]
   - local: '/templates/validate.yml'
     rules:
@@ -360,6 +365,7 @@ stages:
           plan_name: $[[ inputs.plan_name ]]
           plan_artifacts_access: $[[ inputs.plan_artifacts_access ]]
           var_file: $[[ inputs.var_file ]]
+          fmt_allow_failure: $[[ inputs.fmt_allow_failure ]]
           fmt_rules: $[[ inputs.fmt_rules ]]
           validate_rules: $[[ inputs.validate_rules ]]
           plan_rules: $[[ inputs.plan_rules ]]
diff --git a/templates/validate-plan.yml b/templates/validate-plan.yml
index 136e9d7..8621206 100644
--- a/templates/validate-plan.yml
+++ b/templates/validate-plan.yml
@@ -77,6 +77,10 @@ spec:
       default: ''
       type: string
       description: 'Path to a variables files relative to root_dir.'
+    fmt_allow_failure:
+      default: true
+      type: boolean
+      description: 'Whether the fmt job is allowed to fail or not.'
     fmt_rules:
       default:
         - if: $CI_PIPELINE_SOURCE == "merge_request_event"
@@ -187,6 +191,7 @@ include:
       root_dir: $[[ inputs.root_dir ]]
       needs: []
       rules: $[[ inputs.fmt_rules ]]
+      allow_failure: $[[ inputs.fmt_allow_failure ]]
   - local: '/templates/validate.yml'
     rules:
       - if: '"$[[ inputs.trigger_in_child_pipeline ]]" == "false"'
@@ -285,6 +290,7 @@ stages:
           plan_name: $[[ inputs.plan_name ]]
           artifacts_access: $[[ inputs.artifacts_access ]]
           var_file: $[[ inputs.var_file ]]
+          fmt_allow_failure: $[[ inputs.fmt_allow_failure ]]
           fmt_rules: $[[ inputs.fmt_rules ]]
           validate_rules: $[[ inputs.validate_rules ]]
           plan_rules: $[[ inputs.plan_rules ]]
-- 
GitLab