parent
							
								
									b6d2ee9d43
								
							
						
					
					
						commit
						cfcafa2e46
					
				| 
						 | 
					@ -70,9 +70,14 @@ releases:
 | 
				
			||||||
          domain: {{ requiredEnv "PLATFORM_ID" }}.my-domain.com
 | 
					          domain: {{ requiredEnv "PLATFORM_ID" }}.my-domain.com
 | 
				
			||||||
          scheme: {{ env "SCHEME" | default "https" }}
 | 
					          scheme: {{ env "SCHEME" | default "https" }}
 | 
				
			||||||
    set:
 | 
					    set:
 | 
				
			||||||
    # single value load from a local file, --set-file foo.config=path/to/file
 | 
					    # single value loaded from a local file, translates to --set-file foo.config=path/to/file
 | 
				
			||||||
    - name: foo.config
 | 
					    - name: foo.config
 | 
				
			||||||
      file: path/to/file
 | 
					      file: path/to/file
 | 
				
			||||||
 | 
					    # set a single array value in an array, translates to --set bar[0]={1,2}
 | 
				
			||||||
 | 
					    - name: bar[0]
 | 
				
			||||||
 | 
					      values:
 | 
				
			||||||
 | 
					      - 1
 | 
				
			||||||
 | 
					      - 2
 | 
				
			||||||
    # will attempt to decrypt it using helm-secrets plugin
 | 
					    # will attempt to decrypt it using helm-secrets plugin
 | 
				
			||||||
    secrets:
 | 
					    secrets:
 | 
				
			||||||
      - vault_secret.yaml
 | 
					      - vault_secret.yaml
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -82,6 +82,7 @@ type SetValue struct {
 | 
				
			||||||
	Name   string   `yaml:"name"`
 | 
						Name   string   `yaml:"name"`
 | 
				
			||||||
	Value  string   `yaml:"value"`
 | 
						Value  string   `yaml:"value"`
 | 
				
			||||||
	File   string   `yaml:"file"`
 | 
						File   string   `yaml:"file"`
 | 
				
			||||||
 | 
						Values []string `yaml:"values"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CreateFromTemplateFile loads the helmfile from disk and processes the template
 | 
					// CreateFromTemplateFile loads the helmfile from disk and processes the template
 | 
				
			||||||
| 
						 | 
					@ -753,6 +754,13 @@ func (state *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, basePat
 | 
				
			||||||
				flags = append(flags, "--set", fmt.Sprintf("%s=%s", escape(set.Name), escape(set.Value)))
 | 
									flags = append(flags, "--set", fmt.Sprintf("%s=%s", escape(set.Name), escape(set.Value)))
 | 
				
			||||||
			} else if set.File != "" {
 | 
								} else if set.File != "" {
 | 
				
			||||||
				flags = append(flags, "--set-file", fmt.Sprintf("%s=%s", escape(set.Name), set.File))
 | 
									flags = append(flags, "--set-file", fmt.Sprintf("%s=%s", escape(set.Name), set.File))
 | 
				
			||||||
 | 
								} else if len(set.Values) > 0 {
 | 
				
			||||||
 | 
									items := make([]string, len(set.Values))
 | 
				
			||||||
 | 
									for i, raw := range set.Values {
 | 
				
			||||||
 | 
										items[i] = escape(raw)
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									v := strings.Join(items, ",")
 | 
				
			||||||
 | 
									flags = append(flags, "--set", fmt.Sprintf("%s={%s}", escape(set.Name), v))
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -708,6 +708,26 @@ func TestHelmState_SyncReleases(t *testing.T) {
 | 
				
			||||||
			helm:         &mockHelmExec{},
 | 
								helm:         &mockHelmExec{},
 | 
				
			||||||
			wantReleases: []mockRelease{{"releaseName", []string{"--set", "foo=FOO", "--set-file", "bar=path/to/bar", "--set", "baz=BAZ"}}},
 | 
								wantReleases: []mockRelease{{"releaseName", []string{"--set", "foo=FOO", "--set-file", "bar=path/to/bar", "--set", "baz=BAZ"}}},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name: "set single array value in an array",
 | 
				
			||||||
 | 
								releases: []ReleaseSpec{
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										Name:  "releaseName",
 | 
				
			||||||
 | 
										Chart: "foo",
 | 
				
			||||||
 | 
										SetValues: []SetValue{
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
												Name: "foo.bar[0]",
 | 
				
			||||||
 | 
												Values: []string{
 | 
				
			||||||
 | 
													"A",
 | 
				
			||||||
 | 
													"B",
 | 
				
			||||||
 | 
												},
 | 
				
			||||||
 | 
											},
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								helm:         &mockHelmExec{},
 | 
				
			||||||
 | 
								wantReleases: []mockRelease{{"releaseName", []string{"--set", "foo.bar[0]={A,B}"}}},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	for _, tt := range tests {
 | 
						for _, tt := range tests {
 | 
				
			||||||
		t.Run(tt.name, func(t *testing.T) {
 | 
							t.Run(tt.name, func(t *testing.T) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue