Skip to content

Commit fac7336

Browse files
thesattirajuionutlecaJosh-01
authored
Feature/add pipeline variables (#11) (#35)
* Feature/add pipeline variables (#11) * Add pipeline variables * Better variables handling * Update README.md * Update README.md Co-authored-by: ionutleca <[email protected]> Co-authored-by: Jyotsna <[email protected]>
1 parent 5a926bd commit fac7336

6 files changed

+43
-6
lines changed

README.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ Action takes Project URl, pipeline name and a [Personal Access Token (PAT)](http
1717
- uses: Azure/pipelines@v1
1818
with:
1919
azure-devops-project-url: 'https://dev.azure.com/organization/project-name'
20-
azure-pipeline-name: 'pipeline-name' # name of the Azure pipeline to be triggered
21-
azure-devops-token: '${{ secrets.AZURE_DEVOPS_TOKEN }}'
20+
azure-pipeline-name: 'pipeline-name' # name of the Azure pipeline to be triggered, required
21+
azure-devops-token: '${{ secrets.AZURE_DEVOPS_TOKEN }}' # required field
22+
azure-pipeline-variables: '{"variable1": "value1", "variable2": "value2"}' # optional stringified json
2223
```
2324
2425
# Contributing

action.yml

+3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ inputs:
77
azure-pipeline-name:
88
description: 'Name of the Azure Pipline to be triggered'
99
required: true
10+
azure-pipeline-variables:
11+
description: 'Set/Overwrite pipeline variables'
12+
required: false
1013
azure-devops-token:
1114
description: 'Paste personal access token of the user as value of secret variable:AZURE_DEVOPS_TOKEN'
1215
required: true

lib/pipeline.runner.js

+13-2
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,8 @@ class PipelineRunner {
100100
},
101101
sourceBranch: sourceBranch,
102102
sourceVersion: sourceVersion,
103-
reason: BuildInterfaces.BuildReason.Triggered
103+
reason: BuildInterfaces.BuildReason.Triggered,
104+
parameters: this.taskParameters.azurePipelineVariables
104105
};
105106
logger_1.Logger.LogPipelineTriggerInput(build);
106107
// Queue build
@@ -131,6 +132,15 @@ class PipelineRunner {
131132
pipeline_helper_1.PipelineHelper.EnsureValidPipeline(projectName, pipelineName, releaseDefinitions);
132133
let releaseDefinition = releaseDefinitions[0];
133134
logger_1.Logger.LogPipelineObject(releaseDefinition);
135+
// Create ConfigurationVariableValue objects from the input variables
136+
let variables = undefined;
137+
if (this.taskParameters.azurePipelineVariables) {
138+
variables = JSON.parse(this.taskParameters.azurePipelineVariables);
139+
Object.keys(variables).map(function (key, index) {
140+
let oldValue = variables[key];
141+
variables[key] = { value: oldValue };
142+
});
143+
}
134144
// Filter Github artifacts from release definition
135145
let gitHubArtifacts = releaseDefinition.artifacts.filter(pipeline_helper_1.PipelineHelper.isGitHubArtifact);
136146
let artifacts = new Array();
@@ -162,7 +172,8 @@ class PipelineRunner {
162172
let releaseStartMetadata = {
163173
definitionId: releaseDefinition.id,
164174
reason: ReleaseInterfaces.ReleaseReason.ContinuousIntegration,
165-
artifacts: artifacts
175+
artifacts: artifacts,
176+
variables: variables
166177
};
167178
logger_1.Logger.LogPipelineTriggerInput(releaseStartMetadata);
168179
// create release

lib/task.parameters.js

+4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class TaskParameters {
1313
this._azureDevopsProjectUrl = core.getInput('azure-devops-project-url', { required: true });
1414
this._azurePipelineName = core.getInput('azure-pipeline-name', { required: true });
1515
this._azureDevopsToken = core.getInput('azure-devops-token', { required: true });
16+
this._azurePipelineVariables = core.getInput('azure-pipeline-variables', { required: false });
1617
}
1718
static getTaskParams() {
1819
if (!this.taskparams) {
@@ -29,5 +30,8 @@ class TaskParameters {
2930
get azureDevopsToken() {
3031
return this._azureDevopsToken;
3132
}
33+
get azurePipelineVariables() {
34+
return this._azurePipelineVariables;
35+
}
3236
}
3337
exports.TaskParameters = TaskParameters;

src/pipeline.runner.ts

+14-2
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ export class PipelineRunner {
9191
},
9292
sourceBranch: sourceBranch,
9393
sourceVersion: sourceVersion,
94-
reason: BuildInterfaces.BuildReason.Triggered
94+
reason: BuildInterfaces.BuildReason.Triggered,
95+
parameters: this.taskParameters.azurePipelineVariables
9596
} as BuildInterfaces.Build;
9697

9798
log.LogPipelineTriggerInput(build);
@@ -127,6 +128,16 @@ export class PipelineRunner {
127128

128129
log.LogPipelineObject(releaseDefinition);
129130

131+
// Create ConfigurationVariableValue objects from the input variables
132+
let variables = undefined
133+
if (this.taskParameters.azurePipelineVariables) {
134+
variables = JSON.parse(this.taskParameters.azurePipelineVariables);
135+
Object.keys(variables).map(function (key, index) {
136+
let oldValue = variables[key]
137+
variables[key] = { value: oldValue }
138+
});
139+
}
140+
130141
// Filter Github artifacts from release definition
131142
let gitHubArtifacts = releaseDefinition.artifacts.filter(p.isGitHubArtifact);
132143
let artifacts: ReleaseInterfaces.ArtifactMetadata[] = new Array();
@@ -159,7 +170,8 @@ export class PipelineRunner {
159170
let releaseStartMetadata: ReleaseInterfaces.ReleaseStartMetadata = <ReleaseInterfaces.ReleaseStartMetadata>{
160171
definitionId: releaseDefinition.id,
161172
reason: ReleaseInterfaces.ReleaseReason.ContinuousIntegration,
162-
artifacts: artifacts
173+
artifacts: artifacts,
174+
variables: variables
163175
};
164176

165177
log.LogPipelineTriggerInput(releaseStartMetadata);

src/task.parameters.ts

+6
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ export class TaskParameters {
55
private _azureDevopsProjectUrl: string;
66
private _azurePipelineName: string;
77
private _azureDevopsToken: string;
8+
private _azurePipelineVariables: string;
89

910
private constructor() {
1011
this._azureDevopsProjectUrl = core.getInput('azure-devops-project-url', { required: true });
1112
this._azurePipelineName = core.getInput('azure-pipeline-name', { required: true });
1213
this._azureDevopsToken = core.getInput('azure-devops-token', { required: true });
14+
this._azurePipelineVariables = core.getInput('azure-pipeline-variables', { required: false });
1315
}
1416

1517
public static getTaskParams() {
@@ -31,4 +33,8 @@ export class TaskParameters {
3133
public get azureDevopsToken() {
3234
return this._azureDevopsToken;
3335
}
36+
37+
public get azurePipelineVariables() {
38+
return this._azurePipelineVariables;
39+
}
3440
}

0 commit comments

Comments
 (0)