Skip to content

Commit

Permalink
Feature/add pipeline variables (#11) (#35)
Browse files Browse the repository at this point in the history
* 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]>
  • Loading branch information
3 people committed Jan 28, 2022
1 parent 5a926bd commit fac7336
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 6 deletions.
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,9 @@ Action takes Project URl, pipeline name and a [Personal Access Token (PAT)](http
- uses: Azure/pipelines@v1
with:
azure-devops-project-url: 'https://dev.azure.com/organization/project-name'
azure-pipeline-name: 'pipeline-name' # name of the Azure pipeline to be triggered
azure-devops-token: '${{ secrets.AZURE_DEVOPS_TOKEN }}'
azure-pipeline-name: 'pipeline-name' # name of the Azure pipeline to be triggered, required
azure-devops-token: '${{ secrets.AZURE_DEVOPS_TOKEN }}' # required field
azure-pipeline-variables: '{"variable1": "value1", "variable2": "value2"}' # optional stringified json
```
# Contributing
Expand Down
3 changes: 3 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ inputs:
azure-pipeline-name:
description: 'Name of the Azure Pipline to be triggered'
required: true
azure-pipeline-variables:
description: 'Set/Overwrite pipeline variables'
required: false
azure-devops-token:
description: 'Paste personal access token of the user as value of secret variable:AZURE_DEVOPS_TOKEN'
required: true
Expand Down
15 changes: 13 additions & 2 deletions lib/pipeline.runner.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,8 @@ class PipelineRunner {
},
sourceBranch: sourceBranch,
sourceVersion: sourceVersion,
reason: BuildInterfaces.BuildReason.Triggered
reason: BuildInterfaces.BuildReason.Triggered,
parameters: this.taskParameters.azurePipelineVariables
};
logger_1.Logger.LogPipelineTriggerInput(build);
// Queue build
Expand Down Expand Up @@ -131,6 +132,15 @@ class PipelineRunner {
pipeline_helper_1.PipelineHelper.EnsureValidPipeline(projectName, pipelineName, releaseDefinitions);
let releaseDefinition = releaseDefinitions[0];
logger_1.Logger.LogPipelineObject(releaseDefinition);
// Create ConfigurationVariableValue objects from the input variables
let variables = undefined;
if (this.taskParameters.azurePipelineVariables) {
variables = JSON.parse(this.taskParameters.azurePipelineVariables);
Object.keys(variables).map(function (key, index) {
let oldValue = variables[key];
variables[key] = { value: oldValue };
});
}
// Filter Github artifacts from release definition
let gitHubArtifacts = releaseDefinition.artifacts.filter(pipeline_helper_1.PipelineHelper.isGitHubArtifact);
let artifacts = new Array();
Expand Down Expand Up @@ -162,7 +172,8 @@ class PipelineRunner {
let releaseStartMetadata = {
definitionId: releaseDefinition.id,
reason: ReleaseInterfaces.ReleaseReason.ContinuousIntegration,
artifacts: artifacts
artifacts: artifacts,
variables: variables
};
logger_1.Logger.LogPipelineTriggerInput(releaseStartMetadata);
// create release
Expand Down
4 changes: 4 additions & 0 deletions lib/task.parameters.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ class TaskParameters {
this._azureDevopsProjectUrl = core.getInput('azure-devops-project-url', { required: true });
this._azurePipelineName = core.getInput('azure-pipeline-name', { required: true });
this._azureDevopsToken = core.getInput('azure-devops-token', { required: true });
this._azurePipelineVariables = core.getInput('azure-pipeline-variables', { required: false });
}
static getTaskParams() {
if (!this.taskparams) {
Expand All @@ -29,5 +30,8 @@ class TaskParameters {
get azureDevopsToken() {
return this._azureDevopsToken;
}
get azurePipelineVariables() {
return this._azurePipelineVariables;
}
}
exports.TaskParameters = TaskParameters;
16 changes: 14 additions & 2 deletions src/pipeline.runner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,8 @@ export class PipelineRunner {
},
sourceBranch: sourceBranch,
sourceVersion: sourceVersion,
reason: BuildInterfaces.BuildReason.Triggered
reason: BuildInterfaces.BuildReason.Triggered,
parameters: this.taskParameters.azurePipelineVariables
} as BuildInterfaces.Build;

log.LogPipelineTriggerInput(build);
Expand Down Expand Up @@ -127,6 +128,16 @@ export class PipelineRunner {

log.LogPipelineObject(releaseDefinition);

// Create ConfigurationVariableValue objects from the input variables
let variables = undefined
if (this.taskParameters.azurePipelineVariables) {
variables = JSON.parse(this.taskParameters.azurePipelineVariables);
Object.keys(variables).map(function (key, index) {
let oldValue = variables[key]
variables[key] = { value: oldValue }
});
}

// Filter Github artifacts from release definition
let gitHubArtifacts = releaseDefinition.artifacts.filter(p.isGitHubArtifact);
let artifacts: ReleaseInterfaces.ArtifactMetadata[] = new Array();
Expand Down Expand Up @@ -159,7 +170,8 @@ export class PipelineRunner {
let releaseStartMetadata: ReleaseInterfaces.ReleaseStartMetadata = <ReleaseInterfaces.ReleaseStartMetadata>{
definitionId: releaseDefinition.id,
reason: ReleaseInterfaces.ReleaseReason.ContinuousIntegration,
artifacts: artifacts
artifacts: artifacts,
variables: variables
};

log.LogPipelineTriggerInput(releaseStartMetadata);
Expand Down
6 changes: 6 additions & 0 deletions src/task.parameters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@ export class TaskParameters {
private _azureDevopsProjectUrl: string;
private _azurePipelineName: string;
private _azureDevopsToken: string;
private _azurePipelineVariables: string;

private constructor() {
this._azureDevopsProjectUrl = core.getInput('azure-devops-project-url', { required: true });
this._azurePipelineName = core.getInput('azure-pipeline-name', { required: true });
this._azureDevopsToken = core.getInput('azure-devops-token', { required: true });
this._azurePipelineVariables = core.getInput('azure-pipeline-variables', { required: false });
}

public static getTaskParams() {
Expand All @@ -31,4 +33,8 @@ export class TaskParameters {
public get azureDevopsToken() {
return this._azureDevopsToken;
}

public get azurePipelineVariables() {
return this._azurePipelineVariables;
}
}

0 comments on commit fac7336

Please sign in to comment.