added 'add asset' GRM command

added 'add asset' GRM command
This commit is contained in:
Artur Stolear
2020-02-10 16:44:25 +02:00
parent 2d2a17becd
commit 7514ca5282
11 changed files with 227 additions and 1 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -0,0 +1,46 @@
{
"messages": {
"LIB_UnhandledEx": "Unhandled: %s",
"LIB_FailOnCode": "Failure return code: %d",
"LIB_MkdirFailed": "Unable to create directory '%s'. %s",
"LIB_MkdirFailedFileExists": "Unable to create directory '%s'. Conflicting file exists: '%s'",
"LIB_MkdirFailedInvalidDriveRoot": "Unable to create directory '%s'. Root directory does not exist: '%s'",
"LIB_MkdirFailedInvalidShare": "Unable to create directory '%s'. Unable to verify the directory exists: '%s'. If directory is a file share, please verify the share name is correct, the share is online, and the current process has permission to access the share.",
"LIB_MultilineSecret": "Secrets cannot contain multiple lines",
"LIB_ProcessError": "There was an error when attempting to execute the process '%s'. This may indicate the process failed to start. Error: %s",
"LIB_ProcessExitCode": "The process '%s' failed with exit code %s",
"LIB_ProcessStderr": "The process '%s' failed because one or more lines were written to the STDERR stream",
"LIB_ReturnCode": "Return code: %d",
"LIB_ResourceFileNotExist": "Resource file doesn\\'t exist: %s",
"LIB_ResourceFileAlreadySet": "Resource file has already set to: %s",
"LIB_ResourceFileNotSet": "Resource file haven\\'t set, can\\'t find loc string for key: %s",
"LIB_StdioNotClosed": "The STDIO streams did not close within %s seconds of the exit event from process '%s'. This may indicate a child process inherited the STDIO streams and has not yet exited.",
"LIB_WhichNotFound_Linux": "Unable to locate executable file: '%s'. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.",
"LIB_WhichNotFound_Win": "Unable to locate executable file: '%s'. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.",
"LIB_LocStringNotFound": "Can\\'t find loc string for key: %s",
"LIB_ParameterIsRequired": "%s not supplied",
"LIB_InputRequired": "Input required: %s",
"LIB_InvalidPattern": "Invalid pattern: '%s'",
"LIB_EndpointNotExist": "Endpoint not present: %s",
"LIB_EndpointDataNotExist": "Endpoint data parameter %s not present: %s",
"LIB_EndpointAuthNotExist": "Endpoint auth data not present: %s",
"LIB_InvalidEndpointAuth": "Invalid endpoint auth: %s",
"LIB_InvalidSecureFilesInput": "Invalid secure file input: %s",
"LIB_PathNotFound": "Not found %s: %s",
"LIB_PathHasNullByte": "Path cannot contain null bytes",
"LIB_OperationFailed": "Failed %s: %s",
"LIB_UseFirstGlobMatch": "Multiple workspace matches. using first.",
"LIB_MergeTestResultNotSupported": "Merging test results from multiple files to one test run is not supported on this version of build agent for OSX/Linux, each test result file will be published as a separate test run in VSO/TFS.",
"LIB_PlatformNotSupported": "Platform not supported: %s",
"TOOL_LIB_CachingTool": "Caching tool: %s %s %s",
"_TOOL_LIB_CachingTool.comment": "This informational log message indicates that a tool, that was just downloaded, is being copied into the cache directory. %s %s %s represent the tool name, version information, and processor architecture.",
"TOOL_LIB_Downloading": "Downloading: %s",
"_TOOL_LIB_Downloading.comment": "This information log message indicates that a file is being downloaded. %s represents the URL being downloaded.",
"TOOL_LIB_ExtractingArchive": "Extracting archive",
"_TOOL_LIB_ExtractingArchive.comment": "This informational log message indicates that an archive file is being extracted. For example, a .zip file, .7z file, or .tar.gz file.",
"TOOL_LIB_FoundInCache": "Found tool in cache: %s %s %s",
"_TOOL_LIB_FoundInCache.comment": "This informational log message indicates that the request tool is already cached, and does not need to be downloaded again. %s %s %s represent the tool name, version information, and processor architecture.",
"TOOL_LIB_PrependPath": "Prepending PATH environment variable with directory: %s",
"_TOOL_LIB_PrependPath.comment": "This informational log message indicates that a directory is being prepended to the front of the PATH environment variable. The directories specified by the PATH environment variable are used to resolve the location of command line tools."
}
}

View File

@@ -0,0 +1,67 @@
{
"id": "b803651c-21ac-4851-9fbf-c75b0e82e4c5",
"name": "gitreleasemanager/addasset",
"friendlyName": "Add Asset GitReleaseManager Task",
"description": "Tool for creating and exporting releases for software applications hosted on GitHub",
"author": "GitTools Contributors",
"helpMarkDown": "See the [documentation](https://gittools.github.io/GitReleaseManager/docs/) for help",
"category": "Build",
"demands": [],
"version": {
"Major": "1",
"Minor": "0",
"Patch": "0"
},
"minimumAgentVersion": "2.115.0",
"execution": {
"Node": {
"target": "bundle.js",
"argumentFormat": "",
"workingDirectory": "."
}
},
"instanceNameFormat": "gitreleasemanager/addasset",
"inputs": [{
"name": "owner",
"type": "string",
"label": "The owner of the repository",
"defaultValue": "",
"required": true,
"helpMarkDown": "The owner of the repository"
}, {
"name": "repository",
"type": "string",
"label": "The name of the repository",
"defaultValue": "",
"required": true,
"helpMarkDown": "The name of the repository"
}, {
"name": "token",
"type": "string",
"label": "The access token to access GitHub with",
"defaultValue": "",
"required": true,
"helpMarkDown": "The access token to access GitHub with"
}, {
"name": "tagName",
"type": "string",
"label": "The name of the release",
"defaultValue": "",
"required": true,
"helpMarkDown": "The name of the release"
}, {
"name": "assets",
"type": "multiLine",
"label": "Path(s) to the file(s) to include in the release",
"defaultValue": "",
"required": false,
"helpMarkDown": "Path(s) to the file(s) to include in the release. Separated by newline"
}, {
"name": "targetDirectory",
"type": "string",
"label": "The directory on which GitReleaseManager should be executed. Defaults to current directory",
"defaultValue": "",
"required": false,
"helpMarkDown": "The directory on which GitReleaseManager should be executed. Defaults to current directory"
}]
}

View File

@@ -18,7 +18,8 @@
{ "path": "gitreleasemanager/discard" },
{ "path": "gitreleasemanager/close" },
{ "path": "gitreleasemanager/open" },
{ "path": "gitreleasemanager/publish" }
{ "path": "gitreleasemanager/publish" },
{ "path": "gitreleasemanager/addasset" }
],
"categories": [
"Azure Pipelines"
@@ -138,5 +139,14 @@
"properties": {
"name": "gitreleasemanager/publish"
}
}, {
"id": "addasset-gitreleasemanager-task",
"type": "ms.vss-distributed-task.task",
"targets": [
"ms.vss-distributed-task.tasks"
],
"properties": {
"name": "gitreleasemanager/addasset"
}
}]
}

View File

@@ -0,0 +1,34 @@
name: gitreleasemanager-addasset
description: GitHub Action for creating and exporting releases for software applications hosted on GitHub. Adds assets to a release
author: GitTools
branding:
color: gray-dark
icon: git-pull-request
runs:
using: node12
main: ../../dist/github/gitreleasemanager/addasset/bundle.js
inputs:
owner:
description: The owner of the repository
required: true
default: ''
repository:
description: The name of the repository
required: true
default: ''
token:
description: The access token to access GitHub with
required: true
default: ''
milestone:
description: The milestone to use
required: true
default: ''
assets:
description: Path(s) to the file(s) to include in the release
required: true
default: ''
targetDirectory:
description: The directory on which GitReleaseManager should be executed. Defaults to current directory
required: false
default: ''

View File

@@ -0,0 +1,4 @@
import "reflect-metadata";
import { addAsset } from "./main";
addAsset();

View File

@@ -98,4 +98,19 @@ export async function publish() {
} catch (error) {
buildAgent.setFailed(error.message, true);
}
}
export async function addAsset() {
try {
gitReleaseManagerTool.disableTelemetry();
const settings = Settings.getAddAssetSettings(buildAgent);
await gitReleaseManagerTool.addAsset(settings);
buildAgent.setSucceeded("GitVersionManager added assets to release successfully", true);
} catch (error) {
buildAgent.setFailed(error.message, true);
}
}

View File

@@ -30,6 +30,11 @@ export enum PublishFields {
tagName = "tagName",
}
export enum AddAssetFields {
tagName = "tagName",
assets = "assets",
}
export interface GitReleaseManagerSettings {
[CommonFields.repository]: string;
[CommonFields.owner]: string;
@@ -60,4 +65,9 @@ export interface GitReleaseManagerOpenSettings extends GitReleaseManagerSettings
export interface GitReleaseManagerPublishSettings extends GitReleaseManagerSettings {
[PublishFields.tagName]: string;
}
export interface GitReleaseManagerAddAssetSettings extends GitReleaseManagerSettings {
[AddAssetFields.tagName]: string;
[AddAssetFields.assets]: string[];
}

View File

@@ -3,12 +3,14 @@ import {
GitReleaseManagerSettings,
CommonFields, CreateFields, DiscardFields,
CloseFields, OpenFields, PublishFields,
AddAssetFields,
GitReleaseManagerCreateSettings,
GitReleaseManagerDiscardSettings,
GitReleaseManagerCloseSettings,
GitReleaseManagerOpenSettings,
GitReleaseManagerPublishSettings,
GitReleaseManagerAddAssetSettings,
} from "./models";
export class Settings {
@@ -73,6 +75,18 @@ export class Settings {
}
}
public static getAddAssetSettings(buildAgent: IBuildAgent): GitReleaseManagerAddAssetSettings {
const tagName = buildAgent.getInput(AddAssetFields.tagName);
const assets = buildAgent.getListInput(AddAssetFields.assets);
const commonSettings = Settings.getCommonSettings(buildAgent);
return {
...commonSettings,
tagName,
assets
}
}
private static getCommonSettings(buildAgent: IBuildAgent): GitReleaseManagerSettings {
const owner = buildAgent.getInput(CommonFields.owner, true);
const repository = buildAgent.getInput(CommonFields.repository, true);

View File

@@ -12,6 +12,7 @@ import {
GitReleaseManagerCloseSettings,
GitReleaseManagerOpenSettings,
GitReleaseManagerPublishSettings,
GitReleaseManagerAddAssetSettings,
} from "./models";
export interface IGitReleaseManagerTool extends IDotnetTool {
@@ -21,6 +22,7 @@ export interface IGitReleaseManagerTool extends IDotnetTool {
close(settings: GitReleaseManagerCloseSettings): Promise<IExecResult>;
open(settings: GitReleaseManagerOpenSettings): Promise<IExecResult>;
publish(settings: GitReleaseManagerPublishSettings): Promise<IExecResult>;
addAsset(settings: GitReleaseManagerAddAssetSettings): Promise<IExecResult>;
}
@injectable()
@@ -67,6 +69,12 @@ export class GitReleaseManagerTool extends DotnetTool implements IGitReleaseMana
return this.execute("dotnet-gitreleasemanager", args);
}
public addAsset(settings: GitReleaseManagerAddAssetSettings): Promise<IExecResult> {
const args = this.getAddAssetArguments(settings);
return this.execute("dotnet-gitreleasemanager", args);
}
private getCommonArguments(settings: GitReleaseManagerSettings): string[] {
const args: string[] = [];
@@ -155,6 +163,23 @@ export class GitReleaseManagerTool extends DotnetTool implements IGitReleaseMana
return args;
}
private getAddAssetArguments(settings: GitReleaseManagerAddAssetSettings): string[] {
const args: string[] = ['addasset', ...this.getCommonArguments(settings)];
if (settings.tagName) {
args.push("--tagName", settings.tagName);
}
if (settings.assets && settings.assets.length > 0) {
settings.assets = settings.assets.map(asset => {
return path.join(settings.targetDirectory, asset)
})
args.push("--assets", settings.assets.join(","));
}
return args;
}
private getRepoDir(targetPath: string): string {
let workDir: string;
const srcDir = this.buildAgent.getSourceDir();

View File

@@ -56,6 +56,7 @@ const entryPoints = [
'gitreleasemanager/close',
'gitreleasemanager/open',
'gitreleasemanager/publish',
'gitreleasemanager/addasset',
];
module.exports = (env) => {