create action for GRM (2)
This commit is contained in:
108
dist/azure/gitreleasemanager/create/bundle.js
vendored
108
dist/azure/gitreleasemanager/create/bundle.js
vendored
File diff suppressed because one or more lines are too long
108
dist/azure/gitreleasemanager/setup/bundle.js
vendored
108
dist/azure/gitreleasemanager/setup/bundle.js
vendored
File diff suppressed because one or more lines are too long
6
dist/azure/gitversion/execute/bundle.js
vendored
6
dist/azure/gitversion/execute/bundle.js
vendored
File diff suppressed because one or more lines are too long
6
dist/azure/gitversion/setup/bundle.js
vendored
6
dist/azure/gitversion/setup/bundle.js
vendored
File diff suppressed because one or more lines are too long
113
dist/github/gitreleasemanager/create/bundle.js
vendored
113
dist/github/gitreleasemanager/create/bundle.js
vendored
File diff suppressed because one or more lines are too long
113
dist/github/gitreleasemanager/setup/bundle.js
vendored
113
dist/github/gitreleasemanager/setup/bundle.js
vendored
File diff suppressed because one or more lines are too long
11
dist/github/gitversion/execute/bundle.js
vendored
11
dist/github/gitversion/execute/bundle.js
vendored
File diff suppressed because one or more lines are too long
11
dist/github/gitversion/setup/bundle.js
vendored
11
dist/github/gitversion/setup/bundle.js
vendored
File diff suppressed because one or more lines are too long
108
dist/mock/gitreleasemanager/create/bundle.js
vendored
108
dist/mock/gitreleasemanager/create/bundle.js
vendored
File diff suppressed because one or more lines are too long
108
dist/mock/gitreleasemanager/setup/bundle.js
vendored
108
dist/mock/gitreleasemanager/setup/bundle.js
vendored
File diff suppressed because one or more lines are too long
6
dist/mock/gitversion/execute/bundle.js
vendored
6
dist/mock/gitversion/execute/bundle.js
vendored
File diff suppressed because one or more lines are too long
6
dist/mock/gitversion/setup/bundle.js
vendored
6
dist/mock/gitversion/setup/bundle.js
vendored
File diff suppressed because one or more lines are too long
@@ -6,4 +6,41 @@ branding:
|
||||
icon: git-pull-request
|
||||
runs:
|
||||
using: node12
|
||||
main: ../../dist/github/gitreleasemanager/create/bundle.js
|
||||
main: ../../dist/github/gitreleasemanager/create/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: false
|
||||
default: ''
|
||||
name:
|
||||
description: The name of the release
|
||||
required: false
|
||||
default: ''
|
||||
inputFilePath:
|
||||
description: The path to the file to be used as the content of the release notes
|
||||
required: false
|
||||
default: ''
|
||||
pre:
|
||||
description: Creates the release as a pre-release
|
||||
required: false
|
||||
default: ''
|
||||
targetcommitish:
|
||||
description: The commit to tag. Can be a branch or SHA. Defaults to repository's default branch
|
||||
required: false
|
||||
default: ''
|
||||
targetDirectory:
|
||||
description: The directory on which GitReleaseManager should be executed. Defaults to current directory
|
||||
required: false
|
||||
default: ''
|
||||
@@ -2,6 +2,7 @@ import { IBuildAgent, TYPES, SetupOptions } from "../../core/common";
|
||||
import { IGitReleaseManagerTool, GitReleaseManagerTool } from "../../tools/gitreleasemanager/gitreleasemanager-tool";
|
||||
|
||||
import container from "../../core/ioc";
|
||||
import { Settings } from "../../tools/gitreleasemanager/settings";
|
||||
|
||||
container.bind<IGitReleaseManagerTool>(TYPES.IGitReleaseManagerTool).to(GitReleaseManagerTool);
|
||||
|
||||
@@ -29,6 +30,10 @@ export async function create() {
|
||||
|
||||
buildAgent.exportVariable("DOTNET_CLI_TELEMETRY_OPTOUT", "1");
|
||||
|
||||
const settings = Settings.getCreateSettings(buildAgent);
|
||||
|
||||
await gitReleaseManagerTool.create(settings);
|
||||
|
||||
buildAgent.setSucceeded("GitVersionManager created release successfully", true);
|
||||
} catch (error) {
|
||||
buildAgent.setFailed(error.message, true);
|
||||
|
||||
@@ -1,14 +1,19 @@
|
||||
import { TYPES, IBuildAgent } from "../../core/common";
|
||||
import path = require("path");
|
||||
|
||||
import { TYPES, IBuildAgent, IExecResult } from "../../core/common";
|
||||
import { injectable, inject } from "inversify";
|
||||
import { IDotnetTool } from "../../core/dotnet-tool";
|
||||
import { GitReleaseManagerCreateSettings, GitReleaseManagerSettings, CreateFields, CommonFields } from "./models";
|
||||
|
||||
export interface IGitReleaseManagerTool {
|
||||
install(versionSpec: string, includePrerelease: boolean): Promise<void>;
|
||||
create(settings: GitReleaseManagerCreateSettings): Promise<IExecResult>;
|
||||
}
|
||||
|
||||
@injectable()
|
||||
export class GitReleaseManagerTool implements IGitReleaseManagerTool {
|
||||
|
||||
private buildAgent: IBuildAgent;
|
||||
private dotnetTool: IDotnetTool;
|
||||
|
||||
constructor(
|
||||
@@ -21,4 +26,44 @@ export class GitReleaseManagerTool implements IGitReleaseManagerTool {
|
||||
public async install(versionSpec: string, includePrerelease: boolean): Promise<void> {
|
||||
await this.dotnetTool.toolInstall("GitReleaseManager.Tool", versionSpec, false, includePrerelease);
|
||||
}
|
||||
|
||||
public create(settings: GitReleaseManagerCreateSettings): Promise<IExecResult> {
|
||||
const args = this.getCreateArguments(settings);
|
||||
|
||||
console.log(args);
|
||||
|
||||
return Promise.resolve(null);
|
||||
|
||||
// return this.buildAgent.exec("dotnet-gitreleasemanager", args);
|
||||
}
|
||||
|
||||
getCommonArguments(settings: GitReleaseManagerSettings): string[] {
|
||||
const args: string[] = [];
|
||||
|
||||
args.push("--owner", settings.owner);
|
||||
args.push("--repository", settings.repository);
|
||||
args.push("--token", settings.token);
|
||||
|
||||
return args;
|
||||
}
|
||||
|
||||
getCreateArguments(settings: GitReleaseManagerCreateSettings): string[] {
|
||||
const args: string[] = [...this.getCommonArguments(settings)];
|
||||
|
||||
args.push("--milestone", settings.milestone);
|
||||
args.push("--name", settings.releaseName);
|
||||
args.push("--targetcommitish", settings.commit);
|
||||
args.push("--targetDirectory", settings.targetDirectory);
|
||||
|
||||
if (this.buildAgent.fileExists(settings.inputFileName)) {
|
||||
args.push("--inputFilePath", settings.inputFileName);
|
||||
} else {
|
||||
throw new Error("GitReleaseManager inputFilePath not found at " + settings.inputFileName);
|
||||
}
|
||||
if (settings.isPreRelease) {
|
||||
args.push("--pre");
|
||||
}
|
||||
|
||||
return args;
|
||||
}
|
||||
}
|
||||
|
||||
31
src/tools/gitreleasemanager/models.ts
Normal file
31
src/tools/gitreleasemanager/models.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
export enum CommonFields {
|
||||
repository = "repository",
|
||||
owner = "owner",
|
||||
token = "token",
|
||||
}
|
||||
|
||||
export enum CreateFields {
|
||||
milestone = "milestone",
|
||||
releaseName = "releaseName",
|
||||
inputFileName = "inputFileName",
|
||||
isPreRelease = "isPreRelease",
|
||||
commit = "commit",
|
||||
targetDirectory = "targetDirectory",
|
||||
assets = "assets",
|
||||
}
|
||||
|
||||
export interface GitReleaseManagerSettings {
|
||||
[CommonFields.repository]: string;
|
||||
[CommonFields.owner]: string;
|
||||
[CommonFields.token]: string;
|
||||
}
|
||||
|
||||
export interface GitReleaseManagerCreateSettings extends GitReleaseManagerSettings {
|
||||
[CreateFields.milestone]: string;
|
||||
[CreateFields.releaseName]: string;
|
||||
[CreateFields.inputFileName]: string;
|
||||
[CreateFields.isPreRelease]: boolean;
|
||||
[CreateFields.commit]: string;
|
||||
[CreateFields.targetDirectory]: string;
|
||||
[CreateFields.assets]?: string[];
|
||||
}
|
||||
36
src/tools/gitreleasemanager/settings.ts
Normal file
36
src/tools/gitreleasemanager/settings.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import { IBuildAgent } from "../../core/common";
|
||||
import { GitReleaseManagerSettings, CommonFields, CreateFields } from "./models";
|
||||
|
||||
export class Settings {
|
||||
public static getCreateSettings(buildAgent: IBuildAgent) {
|
||||
const milestone = buildAgent.getInput(CreateFields.milestone);
|
||||
const releaseName = buildAgent.getInput(CreateFields.releaseName);
|
||||
const inputFileName = buildAgent.getInput(CreateFields.inputFileName);
|
||||
const isPreRelease = buildAgent.getBooleanInput(CreateFields.isPreRelease);
|
||||
const commit = buildAgent.getInput(CreateFields.commit);
|
||||
const targetDirectory = buildAgent.getInput(CreateFields.targetDirectory);
|
||||
|
||||
const commonSettings = Settings.getCommonSettings(buildAgent);
|
||||
return {
|
||||
...commonSettings,
|
||||
milestone,
|
||||
releaseName,
|
||||
inputFileName,
|
||||
isPreRelease,
|
||||
commit,
|
||||
targetDirectory
|
||||
}
|
||||
}
|
||||
|
||||
private static getCommonSettings(buildAgent: IBuildAgent): GitReleaseManagerSettings {
|
||||
const owner = buildAgent.getInput(CommonFields.owner, true);
|
||||
const repository = buildAgent.getInput(CommonFields.repository, true);
|
||||
const token = buildAgent.getInput(CommonFields.token, true);
|
||||
|
||||
return {
|
||||
owner,
|
||||
repository,
|
||||
token
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user