Repository: boozallen/aissemble
Pull request #702: [#697] update helmfile extension
Author: login: lemuelwatts
Created: 2025-05-14T14:51:52Z | Merged: 2025-05-14T18:41:41Z

Updating all references of `helmfile.yaml` and `helmfile-apps.yaml` to `helmfile.yaml.gotmpl` and `helmfile-apps.yaml.gotmpl`.

Also cleaned up some unused imports and small refactoring in helmfile migrations.


Diff:
diff --git a/DRAFT_RELEASE_NOTES.md b/DRAFT_RELEASE_NOTES.md
index c735961bb..645bf1984 100644
--- a/DRAFT_RELEASE_NOTES.md
+++ b/DRAFT_RELEASE_NOTES.md
@@ -88,11 +88,11 @@ To reduce burden of upgrading aiSSEMBLE, the Baton project is used to automate t
 | data-encryption-removal-pyproject-migration        | Remove the data encryption dependencies from the pyproject.toml file                                                                                                         |                                     |
 | fastapi-removal-yaml-migration                     | Unwrap aissemble-fastapi-chart values in Helm chart values files files                                                                                                     |                                     |
 | argocd-removal-migration                           | Remove the ArgoCD related application templates and values, Chart yaml files and etc.                                                                                        | aissemble.enable.helmfile.migration |
-| helmfile-generation-migration                      | Generates an initial helmfile.yaml for manual actions to be added to                                                                                                         | aissemble.enable.helmfile.migration |
+| helmfile-generation-migration                      | Generates an initial helmfile.yaml.gotmpl and helmfile-apps.yaml.gotmpl for manual actions to be added to                                                                                                         | aissemble.enable.helmfile.migration |
 | helmfile-deployment-script-migration               | Updated JenkinsfileDeploy.groovy to use helmfile. Also removes the jenkinsPipelineSteps.groovy file                                                                          | aissemble.enable.helmfile.migration |
 | helm-templates-migration                           | Move the non-argocd yaml files from the *-deploy/templates (root deploy) folder into the apps/common-infrastructure/templates directory                                      | aissemble.enable.helmfile.migration |
 | helm-root-chart-migration                          | Move the root Chart.yaml and values.yaml files into the apps/common-infrastructure directory                                                                                 | aissemble.enable.helmfile.migration |
-| helmfile-aissemble-version-migration               | Updates the aiSSEMBLE version in the deployment values file. This version is used by the helmfile.yaml                                                                       |                                     |
+| helmfile-aissemble-version-migration               | Updates the aiSSEMBLE version in the deployment values file. This version is used by the helmfile.yaml.gotmpl                                                                       |                                     |
 | spark-provided-dependency-migration                | Remove the Hadoop, Hive, and Spark dependencies from the pipeline shaded jar                                                                                                 |                                     |
 | maven-build-cache-migration                        | Updates build cache configuration to avoid stale Docker images                                                                                                               |                                     |
 | my-sql-connector-yaml-migration                    | Update the my-sql-connector package to use the version with no CVE issue                                                                                                     |                                     |
diff --git a/docs/modules/ROOT/pages/containers.adoc b/docs/modules/ROOT/pages/containers.adoc
index 52908337e..8dc775c3b 100644
--- a/docs/modules/ROOT/pages/containers.adoc
+++ b/docs/modules/ROOT/pages/containers.adoc
@@ -62,7 +62,7 @@ Once the build completes, check the logs for the following information:
 ** You must add the executions/plugins to your `<project-name>-deploy/pom.xml` to activate it in your build. This will ensure the proper generation of deployment resources for your application.
 
 * *Additions to the Helmfile*
-** You must add the appropriate configurations to `helmfile.yaml` to enable deployment of your application. This will include the chart reference, namespace configuration, dependencies, and value file paths.
+** You must add the appropriate configurations to `helmfile.yaml.gotmpl` to enable deployment of your application. This will include the chart reference, namespace configuration, dependencies, and value file paths.
 
 
 Be sure to add each artifact to the Helmfile and Deploy module as appropriate. Once completed, rerun the build with
diff --git a/foundation/foundation-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml b/foundation/foundation-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
index f98a9d826..5030580d4 100644
--- a/foundation/foundation-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ b/foundation/foundation-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -65,8 +65,8 @@
 			<includes>
 				<include>devops/**</include>
 				<include>jenkinsPipelineSteps.groovy</include>
-				<include>helmfile.yaml</include>
-				<include>helmfile-apps.yaml</include>
+				<include>helmfile.yaml.gotmpl</include>
+				<include>helmfile-apps.yaml.gotmpl</include>
 				<include>environments.yaml</include>
 				<include>README.md</include>
 			</includes>
diff --git a/foundation/foundation-archetype/src/main/resources/archetype-resources/README.md b/foundation/foundation-archetype/src/main/resources/archetype-resources/README.md
index 96cff7e40..bd9330b6f 100644
--- a/foundation/foundation-archetype/src/main/resources/archetype-resources/README.md
+++ b/foundation/foundation-archetype/src/main/resources/archetype-resources/README.md
@@ -4,7 +4,7 @@
 This project leverages [Helmfile](https://helmfile.readthedocs.io/en/latest/) for deployment. Follow the below commands
 to deploy or tear down the project/pipeline(s):
 
-- Deploy all project applications except pipeline: `helmfile apply -f helmfile-apps.yaml`
+- Deploy all project applications except pipeline: `helmfile apply -f helmfile-apps.yaml.gotmpl`
 - Deploy pipeline: `helmfile sync -l name=<pipeline-name>`
 - Tear down pipeline: `helmfile destroy -l name=<pipeline-name>`
 - Tear down project: `helmfile destroy`
diff --git a/foundation/foundation-archetype/src/main/resources/archetype-resources/helmfile-apps.yaml b/foundation/foundation-archetype/src/main/resources/archetype-resources/helmfile-apps.yaml.gotmpl
similarity index 100%
rename from foundation/foundation-archetype/src/main/resources/archetype-resources/helmfile-apps.yaml
rename to foundation/foundation-archetype/src/main/resources/archetype-resources/helmfile-apps.yaml.gotmpl
diff --git a/foundation/foundation-archetype/src/main/resources/archetype-resources/helmfile.yaml b/foundation/foundation-archetype/src/main/resources/archetype-resources/helmfile.yaml.gotmpl
similarity index 93%
rename from foundation/foundation-archetype/src/main/resources/archetype-resources/helmfile.yaml
rename to foundation/foundation-archetype/src/main/resources/archetype-resources/helmfile.yaml.gotmpl
index 60c4e002a..bccc68c5e 100644
--- a/foundation/foundation-archetype/src/main/resources/archetype-resources/helmfile.yaml
+++ b/foundation/foundation-archetype/src/main/resources/archetype-resources/helmfile.yaml.gotmpl
@@ -6,7 +6,7 @@ bases:
 ---
 
 helmfiles:
-  - path: ./helmfile-apps.yaml
+  - path: ./helmfile-apps.yaml.gotmpl
 missingFileHandler: Error
 
 templates:
diff --git a/foundation/foundation-archetype/test-project-archetype.sh b/foundation/foundation-archetype/test-project-archetype.sh
index c90d8f954..3210cc4a2 100755
--- a/foundation/foundation-archetype/test-project-archetype.sh
+++ b/foundation/foundation-archetype/test-project-archetype.sh
@@ -90,14 +90,14 @@ function updatePomBasedOnChildDirs {
 
 #---
 ## Runs maven build and captures any manual actions for adding Fermenter executions to the deploy POM and helmfile
-# release additions. It applies these manual actions to the deploy POM and the helmfile.yaml.
+# release additions. It applies these manual actions to the deploy POM and the helmfile.yaml.gotmpl.
 #---
 function runBuildAndApplyManualActions {
   deployInsert="<!-- Add executions for each deployment module -->"
   helmfileInsert="# Add deployment releases here"
   deployOutputStart='executions to test-generator-deploy'
-  helmfileOutputStart='add the following to helmfile.yaml'
-  helmfileAppsOutputStart='add the following to helmfile-apps.yaml'
+  helmfileOutputStart='add the following to helmfile.yaml.gotmpl'
+  helmfileAppsOutputStart='add the following to helmfile-apps.yaml.gotmpl'
   outputEnd='\[WARNING\]'
 
   # $deployOutputStart match at end ensures the match line isn't captured. NF ensures blank lines aren't captured.
@@ -127,13 +127,13 @@ function runBuildAndApplyManualActions {
     releases=$helmfileInsert$'\n'$releases
     releases=$(esc <<< "$releases")
     echo -e "\n INFO: Adding releases to helmfile: \n$releases"
-    sub "s/$helmfileInsert/$releases/" helmfile.yaml
+    sub "s/$helmfileInsert/$releases/" helmfile.yaml.gotmpl
   fi
   if [ -n "$apps" ]; then
     apps=$helmfileInsert$'\n'$apps
     apps=$(esc <<< "$apps")
     echo -e "\n INFO: Adding releases to helmfile-apps: \n$apps"
-    sub "s/$helmfileInsert/$apps/" helmfile-apps.yaml
+    sub "s/$helmfileInsert/$apps/" helmfile-apps.yaml.gotmpl
   fi
   return $updates
 }
diff --git a/foundation/foundation-mda/src/main/java/com/boozallen/aiops/mda/ManualActionNotificationService.java b/foundation/foundation-mda/src/main/java/com/boozallen/aiops/mda/ManualActionNotificationService.java
index 7b4a95d6e..f4cb97981 100644
--- a/foundation/foundation-mda/src/main/java/com/boozallen/aiops/mda/ManualActionNotificationService.java
+++ b/foundation/foundation-mda/src/main/java/com/boozallen/aiops/mda/ManualActionNotificationService.java
@@ -224,10 +224,10 @@ public void addHelmfileReleaseMessage(final GenerationContext context, final Str
 
         final File rootDir = context.getExecutionRootDirectory();
         if (!rootDir.exists() || !helmfileFound(rootDir, true)) {
-            logger.warn("Unable to find helmfile.yaml. Will not be able to direct manual release updates for " +
+            logger.warn("Unable to find helmfile.yaml.gotmpl. Will not be able to direct manual release updates for " +
                     "helmfile.");
         } else {
-            final String helmfilePath = rootDir.toPath().resolve("helmfile-apps.yaml").toString();
+            final String helmfilePath = rootDir.toPath().resolve("helmfile-apps.yaml.gotmpl").toString();
             final String text = "apps/" + appName;
 
             boolean helmfileContainsArtifact = existsInFile(helmfilePath, text);
@@ -281,10 +281,10 @@ public void addSparkWorkerHelmfileRelease(final GenerationContext context, final
 
         final File rootDir = context.getExecutionRootDirectory();
         if (!rootDir.exists() || !helmfileFound(rootDir, false)) {
-            logger.warn("Unable to find helmfile.yaml. Will not be able to direct Spark Worker manual release updates" +
+            logger.warn("Unable to find helmfile.yaml.gotmpl. Will not be able to direct Spark Worker manual release updates" +
                     " to for helmfile.");
         } else {
-            final String helmfilePath = rootDir.toPath().resolve("helmfile.yaml").toString();
+            final String helmfilePath = rootDir.toPath().resolve("helmfile.yaml.gotmpl").toString();
             final String text = parentArtifactId + "/" + pipelineArtifactId;
 
             boolean helmfileContainsArtifact = existsInFile(helmfilePath, text);
@@ -619,7 +619,7 @@ private boolean dockerModuleFoundPom(final File rootProjectDirectory) {
     }
 
     private boolean helmfileFound(final File rootProjectDirectory, final boolean isApps) {
-        String filename = isApps? "helmfile-apps.yaml": "helmfile.yaml";
+        String filename = isApps? "helmfile-apps.yaml.gotmpl": "helmfile.yaml.gotmpl";
         return MavenUtil.fileExists(rootProjectDirectory, filename);
     }
 
diff --git a/foundation/foundation-mda/src/main/resources/templates/notifications/group-helmfile-apps.vm b/foundation/foundation-mda/src/main/resources/templates/notifications/group-helmfile-apps.vm
index 18f69e0c9..1ce8ed675 100644
--- a/foundation/foundation-mda/src/main/resources/templates/notifications/group-helmfile-apps.vm
+++ b/foundation/foundation-mda/src/main/resources/templates/notifications/group-helmfile-apps.vm
@@ -1,4 +1,4 @@
-You must add the following to helmfile-apps.yaml to configure it for deployment!
+You must add the following to helmfile-apps.yaml.gotmpl to configure it for deployment!
 
 #foreach ($item in $items)
 ${item}
diff --git a/foundation/foundation-mda/src/main/resources/templates/notifications/group-helmfile.vm b/foundation/foundation-mda/src/main/resources/templates/notifications/group-helmfile.vm
index 2a5ea7858..c2b3e7a4b 100644
--- a/foundation/foundation-mda/src/main/resources/templates/notifications/group-helmfile.vm
+++ b/foundation/foundation-mda/src/main/resources/templates/notifications/group-helmfile.vm
@@ -1,4 +1,4 @@
-You must add the following to helmfile.yaml to configure it for deployment!
+You must add the following to helmfile.yaml.gotmpl to configure it for deployment!
 
 #foreach ($item in $items)
 ${item}
diff --git a/foundation/foundation-mda/src/test/java/com/boozallen/aiops/mda/generator/HelmfileManualActionsSteps.java b/foundation/foundation-mda/src/test/java/com/boozallen/aiops/mda/generator/HelmfileManualActionsSteps.java
index a7a354da2..80662ede1 100644
--- a/foundation/foundation-mda/src/test/java/com/boozallen/aiops/mda/generator/HelmfileManualActionsSteps.java
+++ b/foundation/foundation-mda/src/test/java/com/boozallen/aiops/mda/generator/HelmfileManualActionsSteps.java
@@ -74,7 +74,7 @@ public void theIsGenerated(String profile) throws Exception {
     public void theManualActionToAddTheHelmfileChartReleaseIsDisplayed() {
         Map<String, Map<String, Notification>> notifications = NotificationCollector.getNotifications();
 
-        String file = this.projectDir.resolve("helmfile-apps.yaml").toString();
+        String file = this.projectDir.resolve("helmfile-apps.yaml.gotmpl").toString();
         assertTrue("No notifications for helmfile.", notifications.containsKey(file));
         Map<String, Notification> fileNotifications = notifications.get(file);
         assertTrue("Failed to generate the helmfile release notification.", fileNotifications.containsKey(
@@ -85,7 +85,7 @@ public void theManualActionToAddTheHelmfileChartReleaseIsDisplayed() {
     public void theManualActionToAddTheHelmfileChartReleaseForThePipelineIsDisplayed() {
         Map<String, Map<String, Notification>> notifications = NotificationCollector.getNotifications();
 
-        String file = this.projectDir.resolve("helmfile.yaml").toString();
+        String file = this.projectDir.resolve("helmfile.yaml.gotmpl").toString();
         assertTrue("No notifications for helmfile.", notifications.containsKey(file));
         Map<String, Notification> fileNotifications = notifications.get(file);
         assertTrue("Failed to generate the helmfile release notification for the pipeline.",
diff --git a/foundation/foundation-mda/src/test/java/com/boozallen/aiops/mda/metamodel/element/AbstractModelInstanceSteps.java b/foundation/foundation-mda/src/test/java/com/boozallen/aiops/mda/metamodel/element/AbstractModelInstanceSteps.java
index d22702f61..057d7e413 100644
--- a/foundation/foundation-mda/src/test/java/com/boozallen/aiops/mda/metamodel/element/AbstractModelInstanceSteps.java
+++ b/foundation/foundation-mda/src/test/java/com/boozallen/aiops/mda/metamodel/element/AbstractModelInstanceSteps.java
@@ -311,7 +311,7 @@ protected PipelineElement createPipeline(String name, String typeName, String im
     }
 
     protected void createHelmfile(boolean isApps) throws IOException {
-        String filename = isApps? "helmfile-apps.yaml": "helmfile.yaml";
+        String filename = isApps? "helmfile-apps.yaml.gotmpl": "helmfile.yaml.gotmpl";
         if (this.projectDir == null) {
             if(scenario != null) {
                 this.projectDir = Paths.get("target", unique(scenario), this.projectName);
diff --git a/foundation/foundation-upgrade/src/main/java/com/boozallen/aissemble/upgrade/migration/HelmFileVersionMigration.java b/foundation/foundation-upgrade/src/main/java/com/boozallen/aissemble/upgrade/migration/HelmFileVersionMigration.java
index ea2e49d2c..893f86729 100644
--- a/foundation/foundation-upgrade/src/main/java/com/boozallen/aissemble/upgrade/migration/HelmFileVersionMigration.java
+++ b/foundation/foundation-upgrade/src/main/java/com/boozallen/aissemble/upgrade/migration/HelmFileVersionMigration.java
@@ -10,7 +10,6 @@
  * #L%
  */
 
-import static org.technologybrewery.baton.util.CommonUtils.isLessThanVersion;
 import static org.technologybrewery.baton.util.FileUtils.replaceInFile;
 
 import java.io.BufferedReader;
@@ -59,7 +58,7 @@ protected boolean shouldExecuteOnFile(File file) {
                     Semver semver = new Semver(currentAissembleVersion);
 
                     if (!semver.isEqualTo(getAissembleVersion())) {
-                        logger.info("Found aiSSEMBLE version in the helmfile that is not equal to the project " +
+                        logger.info("Found aiSSEMBLE version in the helmfile environments file that is not equal to the project " +
                                 "aiSSEMBLE version.");
                         shouldExecute = true;
                     }
diff --git a/foundation/foundation-upgrade/src/main/java/com/boozallen/aissemble/upgrade/migration/version_specific/HelmRootChartMigration.java b/foundation/foundation-upgrade/src/main/java/com/boozallen/aissemble/upgrade/migration/version_specific/HelmRootChartMigration.java
index f1ca1d02d..fae4dbb40 100644
--- a/foundation/foundation-upgrade/src/main/java/com/boozallen/aissemble/upgrade/migration/version_specific/HelmRootChartMigration.java
+++ b/foundation/foundation-upgrade/src/main/java/com/boozallen/aissemble/upgrade/migration/version_specific/HelmRootChartMigration.java
@@ -15,7 +15,6 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 
@@ -45,7 +44,7 @@ protected boolean performMigration(File file) {
 
             // After migrating the Chart.yaml we need to change the name property to common-infrastructure
             if (file.getName().equalsIgnoreCase(CHART_YAML)){
-                Path migratedChartFile = Paths.get(targetPath.toString(), "Chart.yaml");
+                Path migratedChartFile = Paths.get(targetPath.toString(), CHART_YAML);
                 changeChartNameProperty(migratedChartFile.toFile());
             }
         } catch (IOException e) {
diff --git a/foundation/foundation-upgrade/src/main/java/com/boozallen/aissemble/upgrade/migration/version_specific/HelmTemplatesMigration.java b/foundation/foundation-upgrade/src/main/java/com/boozallen/aissemble/upgrade/migration/version_specific/HelmTemplatesMigration.java
index 69d0943f4..ab84a05a3 100644
--- a/foundation/foundation-upgrade/src/main/java/com/boozallen/aissemble/upgrade/migration/version_specific/HelmTemplatesMigration.java
+++ b/foundation/foundation-upgrade/src/main/java/com/boozallen/aissemble/upgrade/migration/version_specific/HelmTemplatesMigration.java
@@ -11,8 +11,6 @@
  */
 
 import org.apache.commons.io.FileUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.technologybrewery.baton.BatonException;
 
 import java.io.File;
diff --git a/foundation/foundation-upgrade/src/main/java/com/boozallen/aissemble/upgrade/migration/version_specific/HelmfileGenerationMigration.java b/foundation/foundation-upgrade/src/main/java/com/boozallen/aissemble/upgrade/migration/version_specific/HelmfileGenerationMigration.java
index 5c318f3ac..0f5587bea 100644
--- a/foundation/foundation-upgrade/src/main/java/com/boozallen/aissemble/upgrade/migration/version_specific/HelmfileGenerationMigration.java
+++ b/foundation/foundation-upgrade/src/main/java/com/boozallen/aissemble/upgrade/migration/version_specific/HelmfileGenerationMigration.java
@@ -38,7 +38,7 @@ public class HelmfileGenerationMigration extends AbstractHelmfileMigration {
     private static final Logger logger = LoggerFactory.getLogger(HelmfileGenerationMigration.class);
     private static final String VERSION_TAG_REGEX = "(.*)(\\$\\{archetypeVersion})";
     private static final String ARTIFACT_ID_TAG_REGEX = "(.*)(\\$\\{artifactId})(.*)";
-    public static final List<String> HELMFILE_TEMPLATES = List.of("helmfile.yaml", "helmfile-apps.yaml", "environments.yaml");
+    public static final List<String> HELMFILE_TEMPLATES = List.of("helmfile.yaml.gotmpl", "helmfile-apps.yaml.gotmpl", "environments.yaml");
 
     /**
      * Determines whether the migration should execute.
diff --git a/foundation/foundation-upgrade/src/main/resources/migrations.json b/foundation/foundation-upgrade/src/main/resources/migrations.json
index a44df2e1a..9088fb550 100644
--- a/foundation/foundation-upgrade/src/main/resources/migrations.json
+++ b/foundation/foundation-upgrade/src/main/resources/migrations.json
@@ -149,7 +149,7 @@
         "implementation": "com.boozallen.aissemble.upgrade.migration.HelmFileVersionMigration",
         "fileSets": [
           {
-            "includes": ["helmfile.yaml"]
+            "includes": ["environments.yaml"]
           }
         ]
       },
diff --git a/foundation/foundation-upgrade/src/main/resources/version_specific/helmfile-apps.yaml b/foundation/foundation-upgrade/src/main/resources/version_specific/helmfile-apps.yaml.gotmpl
similarity index 100%
rename from foundation/foundation-upgrade/src/main/resources/version_specific/helmfile-apps.yaml
rename to foundation/foundation-upgrade/src/main/resources/version_specific/helmfile-apps.yaml.gotmpl
diff --git a/foundation/foundation-upgrade/src/main/resources/version_specific/helmfile.yaml b/foundation/foundation-upgrade/src/main/resources/version_specific/helmfile.yaml.gotmpl
similarity index 93%
rename from foundation/foundation-upgrade/src/main/resources/version_specific/helmfile.yaml
rename to foundation/foundation-upgrade/src/main/resources/version_specific/helmfile.yaml.gotmpl
index 60c4e002a..bccc68c5e 100644
--- a/foundation/foundation-upgrade/src/main/resources/version_specific/helmfile.yaml
+++ b/foundation/foundation-upgrade/src/main/resources/version_specific/helmfile.yaml.gotmpl
@@ -6,7 +6,7 @@ bases:
 ---
 
 helmfiles:
-  - path: ./helmfile-apps.yaml
+  - path: ./helmfile-apps.yaml.gotmpl
 missingFileHandler: Error
 
 templates:
diff --git a/foundation/foundation-upgrade/src/test/java/com/boozallen/aissemble/upgrade/migration/HelmFileVersionMigrationSteps.java b/foundation/foundation-upgrade/src/test/java/com/boozallen/aissemble/upgrade/migration/HelmFileVersionMigrationSteps.java
index f0e0f547e..e79da61c3 100644
--- a/foundation/foundation-upgrade/src/test/java/com/boozallen/aissemble/upgrade/migration/HelmFileVersionMigrationSteps.java
+++ b/foundation/foundation-upgrade/src/test/java/com/boozallen/aissemble/upgrade/migration/HelmFileVersionMigrationSteps.java
@@ -20,12 +20,12 @@ public class HelmFileVersionMigrationSteps extends AbstractMigrationTest {
 
     @Given("a projects helmfile values has an out of date aissemble version")
     public void aProjectsHelmfileValuesHasAnOutOfDateAissembleVersion() {
-        setTestFileToBaseMigration("HelmfileVersionMigration", "values-helmfile.yaml");
+        setTestFileToBaseMigration("HelmfileVersionMigration", "values-helmfile.yaml.gotmpl");
     }
 
     @Given("a projects helmfile values has the desired aissemble version")
     public void aProjectsHelmfileValuesHasTheDesiredAissembleVersion() {
-        setTestFileToBaseMigration("HelmfileVersionMigration", "values-skip-helmfile.yaml");
+        setTestFileToBaseMigration("HelmfileVersionMigration", "values-skip-helmfile.yaml.gotmpl");
     }
 
     @When("the helmfile version migration is performed")
diff --git a/foundation/foundation-upgrade/src/test/resources/test-files/HelmfileVersionMigration/migration/values-helmfile.yaml b/foundation/foundation-upgrade/src/test/resources/test-files/HelmfileVersionMigration/migration/values-helmfile.yaml.gotmpl
similarity index 100%
rename from foundation/foundation-upgrade/src/test/resources/test-files/HelmfileVersionMigration/migration/values-helmfile.yaml
rename to foundation/foundation-upgrade/src/test/resources/test-files/HelmfileVersionMigration/migration/values-helmfile.yaml.gotmpl
diff --git a/foundation/foundation-upgrade/src/test/resources/test-files/HelmfileVersionMigration/migration/values-skip-helmfile.yaml b/foundation/foundation-upgrade/src/test/resources/test-files/HelmfileVersionMigration/migration/values-skip-helmfile.yaml.gotmpl
similarity index 100%
rename from foundation/foundation-upgrade/src/test/resources/test-files/HelmfileVersionMigration/migration/values-skip-helmfile.yaml
rename to foundation/foundation-upgrade/src/test/resources/test-files/HelmfileVersionMigration/migration/values-skip-helmfile.yaml.gotmpl
diff --git a/foundation/foundation-upgrade/src/test/resources/test-files/HelmfileVersionMigration/validation/values-helmfile.yaml b/foundation/foundation-upgrade/src/test/resources/test-files/HelmfileVersionMigration/validation/values-helmfile.yaml.gotmpl
similarity index 100%
rename from foundation/foundation-upgrade/src/test/resources/test-files/HelmfileVersionMigration/validation/values-helmfile.yaml
rename to foundation/foundation-upgrade/src/test/resources/test-files/HelmfileVersionMigration/validation/values-helmfile.yaml.gotmpl


Reviews:
user: login: aaron-gary
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T15:50:59Z
user: login: epwilkins
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T16:32:38Z
user: login: epwilkins
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T16:34:43Z
user: login: epwilkins
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T16:37:30Z
user: login: lemuelwatts
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T16:43:35Z
user: login: lemuelwatts
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T17:08:15Z
user: login: lemuelwatts
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T17:08:42Z

Review comments:
diff_hunk: @@ -65,8 +65,8 @@
 			<includes>
 				<include>devops/**</include>
 				<include>jenkinsPipelineSteps.groovy</include>
-				<include>helmfile.yaml</include>
-				<include>helmfile-apps.yaml</include>
+				<include>helmfile.yaml.gotmpl</include>
path: foundation/foundation-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
user: login: epwilkins
body: C: It should be `helmfile.gotmpl` not `helmfile.yaml.gotmpl`
created_at: 2025-05-14T16:32:38Z
author_association: CONTRIBUTOR
diff_hunk: @@ -149,7 +149,7 @@
         "implementation": "com.boozallen.aissemble.upgrade.migration.HelmFileVersionMigration",
         "fileSets": [
           {
-            "includes": ["helmfile.yaml"]
+            "includes": ["helmfile.yaml.gotmpl"]
path: foundation/foundation-upgrade/src/main/resources/migrations.json
user: login: epwilkins
body: S: This was a pre-existing bug, but this should be the `environments.yaml` file
created_at: 2025-05-14T16:34:43Z
author_association: CONTRIBUTOR
diff_hunk: @@ -83,11 +83,11 @@ To reduce burden of upgrading aiSSEMBLE, the Baton project is used to automate t
 | data-encryption-removal-pyproject-migration        | Remove the data encryption dependencies from the pyproject.toml file                                                                                                         |                                     |
 | fastapi-removal-yaml-migration                     | Unwrap aissemble-fastapi-chart values in Helm chart values files files                                                                                                     |                                     |
 | argocd-removal-migration                           | Remove the ArgoCD related application templates and values, Chart yaml files and etc.                                                                                        | aissemble.enable.helmfile.migration |
-| helmfile-generation-migration                      | Generates an initial helmfile.yaml for manual actions to be added to                                                                                                         | aissemble.enable.helmfile.migration |
+| helmfile-generation-migration                      | Generates an initial helmfile.yaml.gotmpl for manual actions to be added to                                                                                                         | aissemble.enable.helmfile.migration |
path: DRAFT_RELEASE_NOTES.md
user: login: epwilkins
body: Q: Does this need to generate both helmfile.gotmpl and helmfile-apps.gotmpl?
created_at: 2025-05-14T16:37:30Z
author_association: CONTRIBUTOR
diff_hunk: @@ -65,8 +65,8 @@
 			<includes>
 				<include>devops/**</include>
 				<include>jenkinsPipelineSteps.groovy</include>
-				<include>helmfile.yaml</include>
-				<include>helmfile-apps.yaml</include>
+				<include>helmfile.yaml.gotmpl</include>
path: foundation/foundation-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
user: login: lemuelwatts
body: After reading [this section](https://helmfile.readthedocs.io/en/latest/writing-helmfile/#layering-state-template-files) in the best practices and the [helmfile 1.0 proposal docs](https://github.com/helmfile/helmfile/blob/84bc0965766e4d36e738ef7bb09e680c4b408e84/docs/proposals/towards-1.0.md#force-gotmpl-file-extension-for-helmfileyaml-in-case-you-want-helmfile-to-render-it-as-a-go-template-before-yaml-parsing) I was led to believe that the recommended naming style should be `helmfile.yaml.gotmpl` signaling that "this is a yaml file that will first be processed as a Go template"

Additionally when running `helmfile destroy` the command will by default not look for `helmfile.gotmpl`. When I attempted that approach I got this error further reinforcing the `helmfile.yaml.gotmpl` naming convention.
```
$ helmfile destroy
no state file found. It must be named helmfile.d/*.{yaml,yml,yaml.gotmpl,yml.gotmpl}, helmfile.yaml, or helmfile.yaml.gotmpl, otherwise specified with the --file flag or HELMFILE_FILE_PATH environment variable
```
created_at: 2025-05-14T16:43:35Z
author_association: CONTRIBUTOR
diff_hunk: @@ -83,11 +83,11 @@ To reduce burden of upgrading aiSSEMBLE, the Baton project is used to automate t
 | data-encryption-removal-pyproject-migration        | Remove the data encryption dependencies from the pyproject.toml file                                                                                                         |                                     |
 | fastapi-removal-yaml-migration                     | Unwrap aissemble-fastapi-chart values in Helm chart values files files                                                                                                     |                                     |
 | argocd-removal-migration                           | Remove the ArgoCD related application templates and values, Chart yaml files and etc.                                                                                        | aissemble.enable.helmfile.migration |
-| helmfile-generation-migration                      | Generates an initial helmfile.yaml for manual actions to be added to                                                                                                         | aissemble.enable.helmfile.migration |
+| helmfile-generation-migration                      | Generates an initial helmfile.yaml.gotmpl for manual actions to be added to                                                                                                         | aissemble.enable.helmfile.migration |
path: DRAFT_RELEASE_NOTES.md
user: login: lemuelwatts
body: Updated release notes to include `helmfile-apps` in addition to `helmfile` (migration is already adding both files)
created_at: 2025-05-14T17:08:15Z
author_association: CONTRIBUTOR
diff_hunk: @@ -149,7 +149,7 @@
         "implementation": "com.boozallen.aissemble.upgrade.migration.HelmFileVersionMigration",
         "fileSets": [
           {
-            "includes": ["helmfile.yaml"]
+            "includes": ["helmfile.yaml.gotmpl"]
path: foundation/foundation-upgrade/src/main/resources/migrations.json
user: login: lemuelwatts
body: Changed to `environments.yaml`
created_at: 2025-05-14T17:08:42Z
author_association: CONTRIBUTOR

PR comments:
user: login: chang-annie
created_at: 2025-05-14T16:44:39Z
body: q: are we going to use the enforcer to enforce a specific version of helmfile (v1.0+?)
author_association: CONTRIBUTOR
user: login: lemuelwatts
created_at: 2025-05-14T16:47:57Z
body: > q: are we going to use the enforcer to enforce a specific version of helmfile (v1.0+?)

This new naming convention will still be compatible with older versions of helmfile so I think we'll be fine.
author_association: CONTRIBUTOR