Skip to content

Commit d3d33f3

Browse files
authored
Allowing override Release.Name for manifest bake (#10311)
* Allowing override Release.Name for manifest bake * adding L0s * Reset task version
1 parent 606c8a0 commit d3d33f3

File tree

8 files changed

+78
-9
lines changed

8 files changed

+78
-9
lines changed

Tasks/Common/utility-common/helm-object-model.ts renamed to Tasks/Common/kubernetes-common/helm-object-model.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,13 @@ export class Helm {
2020
}
2121
}
2222

23-
public template(chartPath: string, overrideFiles: string[], overrideValues: NameValuePair[]): IExecSyncResult {
23+
public template(releaseName: string, chartPath: string, overrideFiles: string[], overrideValues: NameValuePair[]): IExecSyncResult {
2424
var command = tl.tool(this.helmPath);
2525
command.arg("template");
26-
command.arg(chartPath)
26+
command.arg(chartPath);
27+
if (releaseName) {
28+
command.arg(["--name", releaseName]);
29+
}
2730
command.arg(["--namespace", this.namespace]);
2831
if (overrideFiles.length > 0) {
2932
overrideFiles.forEach(file => {

Tasks/KubernetesManifestV0/Strings/resources.resjson/en-US/resources.resjson

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
"loc.input.help.renderType": "Tool to generate manifest",
2323
"loc.input.label.helmChart": "Helm Chart",
2424
"loc.input.help.helmChart": "Helm chart path to bake",
25+
"loc.input.label.releaseName": "Helm Release Name",
26+
"loc.input.help.releaseName": "Helm release name to use",
2527
"loc.input.label.overrideFiles": "Override Files",
2628
"loc.input.help.overrideFiles": "Override files to set",
2729
"loc.input.label.overrides": "Overrides",

Tasks/KubernetesManifestV0/Tests/L0.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,4 +128,28 @@ describe('Kubernetes Manifests Suite', function () {
128128
assert(tr.failed, 'task should have failed');
129129
done();
130130
});
131+
it('Run should succeed with helm bake', (done: MochaDone) => {
132+
let tp = path.join(__dirname, 'TestSetup.js');
133+
let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp);
134+
process.env[shared.TestEnvVars.action] = shared.Actions.bake;
135+
process.env[shared.TestEnvVars.helmChart] = "helmChart";
136+
process.env[shared.TestEnvVars.renderType] = "helm2";
137+
tr.run();
138+
assert(tr.succeeded, 'task should have succeeded');
139+
assert(tr.stdout.indexOf("set manifestsBundle") > -1, 'task should have set manifestsBundle output variable');
140+
done();
141+
});
142+
it('Run should succeed with helm bake overriding release name', (done: MochaDone) => {
143+
let tp = path.join(__dirname, 'TestSetup.js');
144+
let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp);
145+
process.env[shared.TestEnvVars.action] = shared.Actions.bake;
146+
process.env[shared.TestEnvVars.helmChart] = "helmChart";
147+
process.env[shared.TestEnvVars.renderType] = "helm2";
148+
process.env[shared.TestEnvVars.releaseName] = "newReleaseName";
149+
tr.run();
150+
assert(tr.succeeded, 'task should have succeeded');
151+
assert(tr.stdout.indexOf("set manifestsBundle") > -1, 'task should have set manifestsBundle output variable');
152+
assert(tr.stdout.indexOf("--name newReleaseName") > -1, 'bake should have overriden release name');
153+
done();
154+
});
131155
});

Tasks/KubernetesManifestV0/Tests/TestSetup.ts

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ tr.setInput('containers', process.env[shared.TestEnvVars.containers] || '');
2828
tr.setInput('imagePullSecrets', process.env[shared.TestEnvVars.imagePullSecrets] || '');
2929
tr.setInput('renderType', process.env[shared.TestEnvVars.renderType] || '');
3030
tr.setInput('helmChart', process.env[shared.TestEnvVars.helmChart] || '');
31+
tr.setInput('releaseName', process.env[shared.TestEnvVars.releaseName] || '');
3132
tr.setInput('overrideFiles', process.env[shared.TestEnvVars.overrideFiles] || '');
3233
tr.setInput('overrides', process.env[shared.TestEnvVars.overrides] || '');
3334
tr.setInput('resourceToPatch', process.env[shared.TestEnvVars.resourceToPatch] || '');
@@ -57,12 +58,31 @@ process.env["ENDPOINT_DATA_kubernetesConnection_AUTHORIZATIONTYPE"] = process.en
5758
process.env["ENDPOINT_AUTH_PARAMETER_kubernetesConnection_KUBECONFIG"] = "{\"apiVersion\":\"v1\", \"clusters\": [{\"cluster\": {\"insecure-skip-tls-verify\":\"true\", \"server\":\"https://5.6.7.8\", \"name\" : \"scratch\"}}], \"contexts\": [{\"context\" : {\"cluster\": \"scratch\", \"namespace\" : \"default\", \"user\": \"experimenter\", \"name\" : \"exp-scratch\"}], \"current-context\" : \"exp-scratch\", \"kind\": \"Config\", \"users\" : [{\"user\": {\"password\": \"regpassword\", \"username\" : \"test\"}]}";
5859

5960
let a: ma.TaskLibAnswers = <ma.TaskLibAnswers>{
60-
"checkPath": {},
61-
"exec": {},
61+
"checkPath": {
62+
"helm": true
63+
},
64+
"exec": {
65+
},
6266
"findMatch": {},
63-
"which": {}
67+
"which": {
68+
"helm": "helm"
69+
}
6470
};
6571

72+
if (process.env[shared.TestEnvVars.action] === "bake") {
73+
const command = `helm template ${process.env[shared.TestEnvVars.helmChart]} --namespace ${process.env[shared.TestEnvVars.namespace] || 'default'}`;
74+
const commandWithReleaseNameOverride = `helm template ${process.env[shared.TestEnvVars.helmChart]} --name ${process.env[shared.TestEnvVars.releaseName]} --namespace ${process.env[shared.TestEnvVars.namespace] || 'default'}`;
75+
76+
a.exec[command] = {
77+
"code": 0,
78+
stdout: "some yaml"
79+
};
80+
a.exec[commandWithReleaseNameOverride] = {
81+
"code": 0,
82+
stdout: "some yaml"
83+
};
84+
}
85+
6686
if (process.env[shared.TestEnvVars.isKubectlPresentOnMachine] && JSON.parse(process.env[shared.TestEnvVars.isKubectlPresentOnMachine])) {
6787
a.which["kubectl"] = KubectlPath;
6888
}

Tasks/KubernetesManifestV0/Tests/TestShared.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export let TestEnvVars = {
1313
containers: "__containers__",
1414
imagePullSecrets: "__imagePullSecrets__",
1515
renderType: "__renderType__",
16+
releaseName: "__releaseName__",
1617
helmChart: "__helmChart__",
1718
secretName: "__secretName__",
1819
overrideFiles: "__overrideFiles__",

Tasks/KubernetesManifestV0/src/actions/bake.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import path = require('path');
55
import fs = require('fs');
66
import { getTempDirectory } from "../utils/FileHelper";
77
import helmutility = require("utility-common/helmutility");
8-
import { Helm, NameValuePair } from "utility-common/helm-object-model";
8+
import { Helm, NameValuePair } from "kubernetes-common/helm-object-model";
99

1010
const uuidV4 = require('uuid/v4');
1111

@@ -24,7 +24,8 @@ class HelmRenderEngine {
2424
public static async bake() {
2525
let helmPath = await helmutility.getHelm();
2626
let helmCommand = new Helm(helmPath, tl.getInput("namespace"));
27-
var result = helmCommand.template(tl.getPathInput("helmChart", true), tl.getDelimitedInput("overrideFiles", "\n"), this.getOverrideValues());
27+
let helmReleaseName = tl.getInput("releaseName", false);
28+
var result = helmCommand.template(helmReleaseName, tl.getPathInput("helmChart", true), tl.getDelimitedInput("overrideFiles", "\n"), this.getOverrideValues());
2829
if (result.stderr) {
2930
tl.setResult(tl.TaskResult.Failed, result.stderr);
3031
return;

Tasks/KubernetesManifestV0/task.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"version": {
1616
"Major": 0,
1717
"Minor": 151,
18-
"Patch": 7
18+
"Patch": 8
1919
},
2020
"demands": [],
2121
"groups": [],
@@ -129,6 +129,15 @@
129129
"helpMarkDown": "Helm chart path to bake",
130130
"visibleRule": "action = bake && renderType = helm2"
131131
},
132+
{
133+
"name": "releaseName",
134+
"type": "string",
135+
"label": "Helm Release Name",
136+
"required": false,
137+
"defaultValue": "",
138+
"helpMarkDown": "Helm release name to use",
139+
"visibleRule": "action = bake && renderType = helm2"
140+
},
132141
{
133142
"name": "overrideFiles",
134143
"type": "multiLine",

Tasks/KubernetesManifestV0/task.loc.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"version": {
1616
"Major": 0,
1717
"Minor": 151,
18-
"Patch": 7
18+
"Patch": 8
1919
},
2020
"demands": [],
2121
"groups": [],
@@ -129,6 +129,15 @@
129129
"helpMarkDown": "ms-resource:loc.input.help.helmChart",
130130
"visibleRule": "action = bake && renderType = helm2"
131131
},
132+
{
133+
"name": "releaseName",
134+
"type": "string",
135+
"label": "ms-resource:loc.input.label.releaseName",
136+
"required": false,
137+
"defaultValue": "",
138+
"helpMarkDown": "ms-resource:loc.input.help.releaseName",
139+
"visibleRule": "action = bake && renderType = helm2"
140+
},
132141
{
133142
"name": "overrideFiles",
134143
"type": "multiLine",

0 commit comments

Comments
 (0)