mirror of
https://github.com/helmfile/helmfile.git
synced 2026-10-19 11:30:31 +02:00
Make release template to work on needs (#2099)
It turned out that Helmfile has never had support for release template on `needs`. This adds that, along with the new end-to-end test suite to verify helmfile template output with snapshot testing involving a real `helmfile build` command. Ref #2098
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
package helmfile
|
||||
|
||||
import (
|
||||
"context"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestHelmfileTemplateWithBuildCommand(t *testing.T) {
|
||||
_, filename, _, _ := runtime.Caller(0)
|
||||
projectRoot := filepath.Join(filepath.Dir(filename), "..", "..", "..", "..")
|
||||
helmfileBin := filepath.Join(projectRoot, "helmfile")
|
||||
testdataDir := "testdata"
|
||||
|
||||
entries, err := os.ReadDir(testdataDir)
|
||||
require.NoError(t, err)
|
||||
|
||||
for _, e := range entries {
|
||||
if !e.IsDir() {
|
||||
t.Fatalf("Unexpected type of entry at %s", e.Name())
|
||||
}
|
||||
|
||||
name := e.Name()
|
||||
|
||||
t.Run(name, func(t *testing.T) {
|
||||
inputFile := filepath.Join(testdataDir, name, "input.yaml")
|
||||
|
||||
want, err := os.ReadFile(filepath.Join(testdataDir, name, "output.yaml"))
|
||||
require.NoError(t, err)
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||
defer cancel()
|
||||
|
||||
cmd := exec.CommandContext(ctx, helmfileBin, "-f", inputFile, "build")
|
||||
got, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
t.Logf("%s", string(got))
|
||||
}
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, string(want), string(got))
|
||||
})
|
||||
}
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
repositories:
|
||||
- name: aservo
|
||||
url: https://aservo.github.io/charts
|
||||
|
||||
environments:
|
||||
default:
|
||||
|
||||
---
|
||||
|
||||
templates:
|
||||
defaults: &defaults
|
||||
name: "{{ .Environment.Name }}-{{`{{ .Release.Labels.service }}`}}"
|
||||
namespace: "{{ .Environment.Name }}"
|
||||
|
||||
releases:
|
||||
- chart: aservo/util
|
||||
version: 0.0.1
|
||||
labels:
|
||||
service: shared-resources
|
||||
<<: *defaults
|
||||
- chart: aservo/util
|
||||
version: 0.0.1
|
||||
labels:
|
||||
service: release-resources
|
||||
<<: *defaults
|
||||
needs:
|
||||
- "{{`{{ .Release.Namespace }}`}}-shared-resources"
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
---
|
||||
# Source: input.yaml
|
||||
|
||||
filepath: input.yaml
|
||||
helmBinary: helm
|
||||
environments:
|
||||
default: {}
|
||||
repositories:
|
||||
- name: aservo
|
||||
url: https://aservo.github.io/charts
|
||||
releases:
|
||||
- chart: aservo/util
|
||||
version: 0.0.1
|
||||
name: default-shared-resources
|
||||
namespace: default
|
||||
labels:
|
||||
service: shared-resources
|
||||
- chart: aservo/util
|
||||
version: 0.0.1
|
||||
needs:
|
||||
- default-shared-resources
|
||||
name: default-release-resources
|
||||
namespace: default
|
||||
labels:
|
||||
service: release-resources
|
||||
templates:
|
||||
defaults:
|
||||
name: default-{{ .Release.Labels.service }}
|
||||
namespace: default
|
||||
renderedvalues: {}
|
||||
Reference in New Issue
Block a user