Compare commits
72 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4bda6b5eba | ||
|
|
edd278e744 | ||
|
|
c7eb02e614 | ||
|
|
6cbe5073c3 | ||
|
|
0e2e93e6aa | ||
|
|
274c9b2e99 | ||
|
|
dab6b01596 | ||
|
|
b98ee9d8b2 | ||
|
|
aba63c943d | ||
|
|
1be05ba386 | ||
|
|
632a7fdad0 | ||
|
|
b677d43869 | ||
|
|
1c5c0557da | ||
|
|
f17101e556 | ||
|
|
7dee6ba225 | ||
|
|
237764149f | ||
|
|
5021e6bca9 | ||
|
|
b541d2f286 | ||
|
|
2e93547963 | ||
|
|
22c25b670a | ||
|
|
32247c8ed9 | ||
|
|
b882929b02 | ||
|
|
18ac32b856 | ||
|
|
57e92d55a3 | ||
|
|
ad52a31bda | ||
|
|
b8df3542ce | ||
|
|
4090f70509 | ||
|
|
5f2a8b7486 | ||
|
|
9a0c41862a | ||
|
|
12398bf4da | ||
|
|
969586f961 | ||
|
|
0df4aab1a8 | ||
|
|
ca2c8097d2 | ||
|
|
300345b152 | ||
|
|
ef8d92d27a | ||
|
|
5e98e2ad3c | ||
|
|
1e937858a2 | ||
|
|
0eae1609b6 | ||
|
|
ee69b451cc | ||
|
|
5ed9f1a870 | ||
|
|
8c92ba9adb | ||
|
|
df7bec89f0 | ||
|
|
b9310160df | ||
|
|
0dc080dece | ||
|
|
e15823128e | ||
|
|
43b2de33fa | ||
|
|
ab48b3cddc | ||
|
|
3f6597b086 | ||
|
|
65b3a90f3f | ||
|
|
88007cb218 | ||
|
|
036fb8fb1d | ||
|
|
019e954030 | ||
|
|
f09d4de93d | ||
|
|
af8f283fe6 | ||
|
|
8e8806b8a9 | ||
|
|
28adff5627 | ||
|
|
6465152ce9 | ||
|
|
bba2ce73bc | ||
|
|
c9f6b4a624 | ||
|
|
8d2218c621 | ||
|
|
c43caa6782 | ||
|
|
bbb232759a | ||
|
|
ba00901a2e | ||
|
|
fea9a70a36 | ||
|
|
64f41a665b | ||
|
|
b1d05d399b | ||
|
|
29d3a7a7ad | ||
|
|
58ad325b1e | ||
|
|
e701a20249 | ||
|
|
643b30de7b | ||
|
|
eb233b1b34 | ||
|
|
dd89dbaaec |
14
.eslintrc.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
parser: '@typescript-eslint/parser',
|
||||||
|
plugins: [
|
||||||
|
'@typescript-eslint',
|
||||||
|
'sort-keys-fix'
|
||||||
|
],
|
||||||
|
extends: [
|
||||||
|
'eslint:recommended',
|
||||||
|
'plugin:@typescript-eslint/eslint-recommended',
|
||||||
|
'plugin:@typescript-eslint/recommended',
|
||||||
|
'prettier/@typescript-eslint',
|
||||||
|
],
|
||||||
|
};
|
||||||
19
.github/workflows/ci.yml
vendored
@@ -8,18 +8,23 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [windows-latest, ubuntu-latest, macos-latest]
|
os: [windows-latest, ubuntu-latest, macos-latest]
|
||||||
|
fail-fast: false
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v2
|
||||||
- name: Fetch tags and master for GitVersion
|
- name: Fetch all history for all tags and branches
|
||||||
run: |
|
run: |
|
||||||
git fetch --tags
|
git fetch --prune --unshallow
|
||||||
git branch --create-reflog master origin/master
|
- run: |
|
||||||
|
npm install
|
||||||
|
npm run build:github
|
||||||
|
npm run build:azure
|
||||||
|
name: Build code
|
||||||
- name: Install GitVersion
|
- name: Install GitVersion
|
||||||
uses: ./setup
|
uses: ./gitversion/setup
|
||||||
with:
|
with:
|
||||||
versionSpec: '5.1.x'
|
versionSpec: '5.1.2'
|
||||||
- name: Use GitVersion
|
- name: Use GitVersion
|
||||||
id: gitversion # step id used as reference for output values
|
id: gitversion # step id used as reference for output values
|
||||||
uses: ./execute
|
uses: ./gitversion/execute
|
||||||
- run: |
|
- run: |
|
||||||
echo "FullSemVer: ${{ steps.gitversion.outputs.fullSemVer }}"
|
echo "FullSemVer: ${{ steps.gitversion.outputs.fullSemVer }}"
|
||||||
|
|||||||
42
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
name: release
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-latest]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Fetch all history for all tags and branches
|
||||||
|
run: |
|
||||||
|
git fetch --prune --unshallow
|
||||||
|
- run: |
|
||||||
|
npm install
|
||||||
|
npm run build:github
|
||||||
|
npm run build:azure
|
||||||
|
name: Build code
|
||||||
|
- name: Install GitVersion
|
||||||
|
uses: ./gitversion/setup
|
||||||
|
with:
|
||||||
|
versionSpec: '5.1.2'
|
||||||
|
- name: Use GitVersion
|
||||||
|
id: gitversion # step id used as reference for output values
|
||||||
|
uses: ./gitversion/execute
|
||||||
|
- run: |
|
||||||
|
$date = Get-Date -format "yyMMddHHmm"
|
||||||
|
$version = "${{steps.gitversion.outputs.majorMinorPatch}}.$date"
|
||||||
|
$major = "${{steps.gitversion.outputs.major}}"
|
||||||
|
$minor = "${{steps.gitversion.outputs.minor}}"
|
||||||
|
|
||||||
|
. .\dist\azure\update-version.ps1
|
||||||
|
update-manifest .\dist\azure\vss-extension.json -Version $version
|
||||||
|
dir -r .\dist\**\task.json | % { update-task $_ -Major $major -Minor $minor }
|
||||||
|
|
||||||
|
npm run publish:azure -- --token ${{ secrets.TFX_TOKEN }}
|
||||||
|
shell: pwsh
|
||||||
|
name: Publish Azure extension
|
||||||
3
.gitignore
vendored
@@ -2,4 +2,5 @@ node_modules/
|
|||||||
|
|
||||||
.taskkey
|
.taskkey
|
||||||
*.js
|
*.js
|
||||||
!dist/**/*.js
|
!dist/**/*.js
|
||||||
|
*.vsix
|
||||||
|
|||||||
54
.vscode/launch.json
vendored
@@ -5,40 +5,52 @@
|
|||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"configurations": [
|
"configurations": [
|
||||||
{
|
{
|
||||||
|
|
||||||
"type": "node",
|
"type": "node",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"preLaunchTask": "tsc: build - src/azure/tsconfig.json",
|
"preLaunchTask": "Build-Mock",
|
||||||
"name": "Run Azure Pipeline (setup) Task",
|
"name": "Debug Mock Setup GitVersion",
|
||||||
"program": "${workspaceFolder}/src/azure/setup.ts",
|
"program": "${workspaceFolder}/dist/mock/gitversion/setup/bundle.js",
|
||||||
"outFiles": ["${workspaceFolder}/**/*.js"]
|
"outFiles": [ "${workspaceFolder}/**/*.js" ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
||||||
"type": "node",
|
"type": "node",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"preLaunchTask": "tsc: build - src/github/tsconfig.json",
|
"preLaunchTask": "Build-Azure",
|
||||||
"name": "Run GitHub Actions (setup)",
|
"name": "Debug Azure Setup GitVersion",
|
||||||
"program": "${workspaceFolder}/src/github/setup.ts",
|
"program": "${workspaceFolder}/dist/azure/gitversion/setup/bundle.js",
|
||||||
"outFiles": ["${workspaceFolder}/**/*.js"]
|
"outFiles": [ "${workspaceFolder}/**/*.js" ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
||||||
"type": "node",
|
"type": "node",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"preLaunchTask": "tsc: build - src/azure/tsconfig.json",
|
"preLaunchTask": "Build-GitHub",
|
||||||
"name": "Run Azure Pipeline (execute) Task",
|
"name": "Debug GitHub Setup GitVersion",
|
||||||
"program": "${workspaceFolder}/src/azure/execute.ts",
|
"program": "${workspaceFolder}/dist/github/gitversion/setup/bundle.js",
|
||||||
"outFiles": ["${workspaceFolder}/**/*.js"]
|
"outFiles": [ "${workspaceFolder}/**/*.js" ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
||||||
"type": "node",
|
"type": "node",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"preLaunchTask": "tsc: build - src/github/tsconfig.json",
|
"preLaunchTask": "Build-Mock",
|
||||||
"name": "Run GitHub Actions (execute)",
|
"name": "Debug Mock Execute GitVersion",
|
||||||
"program": "${workspaceFolder}/src/github/execute.ts",
|
"program": "${workspaceFolder}/dist/mock/gitversion/execute/bundle.js",
|
||||||
"outFiles": ["${workspaceFolder}/**/*.js"]
|
"outFiles": [ "${workspaceFolder}/**/*.js" ]
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"preLaunchTask": "Build-Azure",
|
||||||
|
"name": "Debug Azure Execute GitVersion",
|
||||||
|
"program": "${workspaceFolder}/dist/azure/gitversion/execute/bundle.js",
|
||||||
|
"outFiles": [ "${workspaceFolder}/**/*.js" ]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"preLaunchTask": "Build-GitHub",
|
||||||
|
"name": "Debug GitHub Execute GitVersion",
|
||||||
|
"program": "${workspaceFolder}/dist/github/gitversion/execute/bundle.js",
|
||||||
|
"outFiles": [ "${workspaceFolder}/**/*.js" ]
|
||||||
|
},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
22
.vscode/tasks.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
||||||
|
// for the documentation about the tasks.json format
|
||||||
|
"version": "2.0.0",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"label": "Build-Mock",
|
||||||
|
"type": "npm",
|
||||||
|
"script": "build:mock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Build-Azure",
|
||||||
|
"type": "npm",
|
||||||
|
"script": "build:azure"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Build-GitHub",
|
||||||
|
"type": "npm",
|
||||||
|
"script": "build:github"
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2019 Git Tools
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
79
README.md
@@ -1,13 +1,17 @@
|
|||||||
# use-gitversion
|
# GitTools actions
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
GitHub Action that installs and uses the GitVersion tool
|
GitHub Actions that allow to install and use the GitVersion and GitReleaseManager tools
|
||||||
|
|
||||||
|
[](https://github.com/GitTools/actions/actions)
|
||||||
|
[](https://github.com/GitTools/actions/actions)
|
||||||
|
|
||||||
[](https://github.com/GitTools/use-gitversion/actions)
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
See [setup](setup/action.yml) and [usage](execute/action.yml)
|
See [setup](gitversion/setup/action.yml) and [usage](gitversion/execute/action.yml) for GitVersion
|
||||||
|
|
||||||
|
and [setup](gitreleasemanager/setup/action.yml) for GitReleaseManager
|
||||||
|
|
||||||
## Dependency
|
## Dependency
|
||||||
|
|
||||||
@@ -16,29 +20,70 @@ There are two step dependencies that are required in your workflow before runnin
|
|||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v1
|
uses: actions/checkout@v2
|
||||||
- name: Fetch tags and master for GitVersion
|
- name: Fetch all history for all tags and branches
|
||||||
run: |
|
run: git fetch --prune --unshallow
|
||||||
git fetch --tags
|
|
||||||
git branch --create-reflog master origin/master
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Basic:
|
Basic:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- name: Checkout
|
||||||
- name: Fetch tags and master for GitVersion
|
uses: actions/checkout@v2
|
||||||
run: |
|
- name: Fetch all history for all tags and branches
|
||||||
git fetch --tags
|
run: git fetch --prune --unshallow
|
||||||
git branch --create-reflog master origin/master
|
|
||||||
- name: Install GitVersion
|
- name: Install GitVersion
|
||||||
uses: gittools/use-gitversion/setup@v0.2
|
uses: gittools/actions/gitversion/setup@v0.6.1
|
||||||
with:
|
with:
|
||||||
versionSpec: '5.1.x'
|
versionSpec: '5.1.x'
|
||||||
- name: Use GitVersion
|
- name: Use GitVersion
|
||||||
id: gitversion # step id used as reference for output values
|
id: gitversion # step id used as reference for output values
|
||||||
uses: gittools/use-gitversion/execute@v0.2
|
uses: gittools/actions/gitversion/execute@v0.6.1
|
||||||
- run: |
|
- run: |
|
||||||
|
echo "Major: ${{ steps.gitversion.outputs.major }}"
|
||||||
|
echo "Minor: ${{ steps.gitversion.outputs.minor }}"
|
||||||
|
echo "Patch: ${{ steps.gitversion.outputs.patch }}"
|
||||||
|
echo "PreReleaseTag: ${{ steps.gitversion.outputs.preReleaseTag }}"
|
||||||
|
echo "PreReleaseTagWithDash: ${{ steps.gitversion.outputs.preReleaseTagWithDash }}"
|
||||||
|
echo "PreReleaseLabel: ${{ steps.gitversion.outputs.preReleaseLabel }}"
|
||||||
|
echo "PreReleaseNumber: ${{ steps.gitversion.outputs.preReleaseNumber }}"
|
||||||
|
echo "WeightedPreReleaseNumber: ${{ steps.gitversion.outputs.weightedPreReleaseNumber }}"
|
||||||
|
echo "BuildMetaData: ${{ steps.gitversion.outputs.buildMetaData }}"
|
||||||
|
echo "BuildMetaDataPadded: ${{ steps.gitversion.outputs.buildMetaDataPadded }}"
|
||||||
|
echo "FullBuildMetaData: ${{ steps.gitversion.outputs.fullBuildMetaData }}"
|
||||||
|
echo "MajorMinorPatch: ${{ steps.gitversion.outputs.majorMinorPatch }}"
|
||||||
|
echo "SemVer: ${{ steps.gitversion.outputs.semVer }}"
|
||||||
|
echo "LegacySemVer: ${{ steps.gitversion.outputs.legacySemVer }}"
|
||||||
|
echo "LegacySemVerPadded: ${{ steps.gitversion.outputs.legacySemVerPadded }}"
|
||||||
|
echo "AssemblySemVer: ${{ steps.gitversion.outputs.assemblySemVer }}"
|
||||||
|
echo "AssemblySemFileVer: ${{ steps.gitversion.outputs.assemblySemFileVer }}"
|
||||||
echo "FullSemVer: ${{ steps.gitversion.outputs.fullSemVer }}"
|
echo "FullSemVer: ${{ steps.gitversion.outputs.fullSemVer }}"
|
||||||
|
echo "InformationalVersion: ${{ steps.gitversion.outputs.informationalVersion }}"
|
||||||
|
echo "BranchName: ${{ steps.gitversion.outputs.branchName }}"
|
||||||
|
echo "Sha: ${{ steps.gitversion.outputs.sha }}"
|
||||||
|
echo "ShortSha: ${{ steps.gitversion.outputs.shortSha }}"
|
||||||
|
echo "NuGetVersionV2: ${{ steps.gitversion.outputs.nuGetVersionV2 }}"
|
||||||
|
echo "NuGetVersion: ${{ steps.gitversion.outputs.nuGetVersion }}"
|
||||||
|
echo "NuGetPreReleaseTagV2: ${{ steps.gitversion.outputs.nuGetPreReleaseTagV2 }}"
|
||||||
|
echo "NuGetPreReleaseTag: ${{ steps.gitversion.outputs.nuGetPreReleaseTag }}"
|
||||||
|
echo "VersionSourceSha: ${{ steps.gitversion.outputs.versionSourceSha }}"
|
||||||
|
echo "CommitsSinceVersionSource: ${{ steps.gitversion.outputs.commitsSinceVersionSource }}"
|
||||||
|
echo "CommitsSinceVersionSourcePadded: ${{ steps.gitversion.outputs.commitsSinceVersionSourcePadded }}"
|
||||||
|
echo "CommitDate: ${{ steps.gitversion.outputs.commitDate }}"
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### Private Repositories
|
||||||
|
|
||||||
|
Private repos require credentials before you can fetch the master branch and tags.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Fetch all history for all tags and branches
|
||||||
|
run: |
|
||||||
|
git config remote.origin.url https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
|
||||||
|
git fetch --prune --unshallow
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
name: use-gitversion
|
name: use-actions
|
||||||
description: GitHub Action for Easy Semantic Versioning with GitVersion. Installs the specific version of GitVersion.Tool
|
description: GitHub Action for Easy Semantic Versioning with GitVersion. Installs the specific version of GitVersion.Tool
|
||||||
author: GitTools
|
author: GitTools
|
||||||
branding:
|
branding:
|
||||||
@@ -15,4 +15,4 @@ inputs:
|
|||||||
default: false
|
default: false
|
||||||
runs:
|
runs:
|
||||||
using: node12
|
using: node12
|
||||||
main: dist/github/setup/index.js
|
main: dist/github/setup/index.js
|
||||||
|
|||||||
16726
dist/azure/execute/index.js
vendored
14
dist/azure/execute/lib.json
vendored
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"messages": {
|
|
||||||
"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."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
36
dist/azure/execute/lib1.json
vendored
@@ -1,36 +0,0 @@
|
|||||||
{
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
18460
dist/azure/gitreleasemanager/create/bundle.js
vendored
Normal file
BIN
dist/azure/gitreleasemanager/create/icon.png
vendored
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
46
dist/azure/gitreleasemanager/create/lib.json
vendored
Normal 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."
|
||||||
|
}
|
||||||
|
}
|
||||||
95
dist/azure/gitreleasemanager/create/task.json
vendored
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
{
|
||||||
|
"id": "c77d38be-46a9-4ef1-a181-2d6050ed23d2",
|
||||||
|
"name": "gitreleasemanager/create",
|
||||||
|
"friendlyName": "Create 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/create",
|
||||||
|
"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": "milestone",
|
||||||
|
"type": "string",
|
||||||
|
"label": "The milestone to use",
|
||||||
|
"defaultValue": "",
|
||||||
|
"required": false,
|
||||||
|
"helpMarkDown": "The milestone to use"
|
||||||
|
}, {
|
||||||
|
"name": "name",
|
||||||
|
"type": "string",
|
||||||
|
"label": "The name of the release",
|
||||||
|
"defaultValue": "",
|
||||||
|
"required": false,
|
||||||
|
"helpMarkDown": "The name of the release"
|
||||||
|
}, {
|
||||||
|
"name": "inputFilePath",
|
||||||
|
"type": "string",
|
||||||
|
"label": "The path to the file to be used as the content of the release notes",
|
||||||
|
"defaultValue": "",
|
||||||
|
"required": false,
|
||||||
|
"helpMarkDown": "The path to the file to be used as the content of the release notes"
|
||||||
|
}, {
|
||||||
|
"name": "pre",
|
||||||
|
"type": "boolean",
|
||||||
|
"label": "Creates the release as a pre-release",
|
||||||
|
"defaultValue": "false",
|
||||||
|
"required": false,
|
||||||
|
"helpMarkDown": "Creates the release as a pre-release"
|
||||||
|
}, {
|
||||||
|
"name": "targetcommitish",
|
||||||
|
"type": "string",
|
||||||
|
"label": "The commit to tag. Can be a branch or SHA. Defaults to repository's default branch",
|
||||||
|
"defaultValue": "",
|
||||||
|
"required": false,
|
||||||
|
"helpMarkDown": "The commit to tag. Can be a branch or SHA. Defaults to repository's default branch"
|
||||||
|
}, {
|
||||||
|
"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"
|
||||||
|
}, {
|
||||||
|
"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"
|
||||||
|
}]
|
||||||
|
}
|
||||||
18460
dist/azure/gitreleasemanager/discard/bundle.js
vendored
Normal file
BIN
dist/azure/gitreleasemanager/discard/icon.png
vendored
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
46
dist/azure/gitreleasemanager/discard/lib.json
vendored
Normal 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."
|
||||||
|
}
|
||||||
|
}
|
||||||
60
dist/azure/gitreleasemanager/discard/task.json
vendored
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
{
|
||||||
|
"id": "9ae78b66-6100-4522-8106-b7ae00bbfcdf",
|
||||||
|
"name": "gitreleasemanager/discard",
|
||||||
|
"friendlyName": "Discard 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/discard",
|
||||||
|
"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": "milestone",
|
||||||
|
"type": "string",
|
||||||
|
"label": "The milestone to use",
|
||||||
|
"defaultValue": "",
|
||||||
|
"required": true,
|
||||||
|
"helpMarkDown": "The milestone to use"
|
||||||
|
}, {
|
||||||
|
"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"
|
||||||
|
}]
|
||||||
|
}
|
||||||
18460
dist/azure/gitreleasemanager/setup/bundle.js
vendored
Normal file
BIN
dist/azure/gitreleasemanager/setup/icon.png
vendored
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
46
dist/azure/gitreleasemanager/setup/lib.json
vendored
Normal 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."
|
||||||
|
}
|
||||||
|
}
|
||||||
41
dist/azure/gitreleasemanager/setup/task.json
vendored
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"id": "e3022448-b00d-4b57-b504-606a0bcf8279",
|
||||||
|
"name": "gitreleasemanager/setup",
|
||||||
|
"friendlyName": "Setup 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/setup",
|
||||||
|
"inputs": [{
|
||||||
|
"name": "versionSpec",
|
||||||
|
"type": "string",
|
||||||
|
"label": "The version spec",
|
||||||
|
"defaultValue": "",
|
||||||
|
"required": true,
|
||||||
|
"helpMarkDown": "Required version in the form of 0.10.x or exact version like 0.10.2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "includePrerelease",
|
||||||
|
"type": "boolean",
|
||||||
|
"label": "Include pre-release versions",
|
||||||
|
"defaultValue": "false",
|
||||||
|
"required": false,
|
||||||
|
"helpMarkDown": "Include pre-release versions when matching a version"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
18435
dist/azure/gitversion/execute/bundle.js
vendored
Normal file
BIN
dist/azure/gitversion/execute/icon.png
vendored
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
46
dist/azure/gitversion/execute/lib.json
vendored
Normal 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."
|
||||||
|
}
|
||||||
|
}
|
||||||
88
dist/azure/gitversion/execute/task.json
vendored
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
{
|
||||||
|
"id": "9013cf7f-ee8d-49f4-a39b-db244928d391",
|
||||||
|
"name": "gitversion/execute",
|
||||||
|
"friendlyName": "Execute GitVersion Task",
|
||||||
|
"description": "Easy Semantic Versioning (http://semver.org) for projects using Git",
|
||||||
|
"author": "GitTools Contributors",
|
||||||
|
"helpMarkDown": "See the [documentation](https://gitversion.net/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": "gitversion/execute",
|
||||||
|
"groups": [{
|
||||||
|
"name": "gitversionDetails",
|
||||||
|
"displayName": "GitVersion details",
|
||||||
|
"isExpanded": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "additional",
|
||||||
|
"displayName": "Additional Options",
|
||||||
|
"isExpanded": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"inputs": [{
|
||||||
|
"name": "targetPath",
|
||||||
|
"type": "string",
|
||||||
|
"label": "Working directory path",
|
||||||
|
"defaultValue": "",
|
||||||
|
"required": false,
|
||||||
|
"helpMarkDown": "Optionally supply the path to the working directory",
|
||||||
|
"groupName": "gitversionDetails"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "useConfigFile",
|
||||||
|
"type": "boolean",
|
||||||
|
"label": "Specify Configuration file",
|
||||||
|
"defaultValue": "false",
|
||||||
|
"required": false,
|
||||||
|
"helpMarkDown": "Whether to use a custom configuration file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "configFilePath",
|
||||||
|
"type": "filePath",
|
||||||
|
"label": "Configuration file",
|
||||||
|
"defaultValue": "",
|
||||||
|
"required": false,
|
||||||
|
"helpMarkDown": "Optional path to config file (defaults to GitVersion.yml)",
|
||||||
|
"visibleRule": "useConfigFile = true"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "updateAssemblyInfo",
|
||||||
|
"type": "boolean",
|
||||||
|
"label": "Update AssemblyInfo files",
|
||||||
|
"defaultValue": "false",
|
||||||
|
"required": false,
|
||||||
|
"helpMarkDown": "Whether to update versions in the AssemblyInfo files"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "updateAssemblyInfoFilename",
|
||||||
|
"type": "string",
|
||||||
|
"label": "Update Assembly File",
|
||||||
|
"defaultValue": "",
|
||||||
|
"required": false,
|
||||||
|
"helpMarkDown": "Update versions in specified file",
|
||||||
|
"visibleRule": "updateAssemblyInfo = true"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "additionalArguments",
|
||||||
|
"type": "string",
|
||||||
|
"label": "Additional GitVersion arguments",
|
||||||
|
"defaultValue": "",
|
||||||
|
"required": false,
|
||||||
|
"helpMarkDown": "Additional arguments to send to GitVersion",
|
||||||
|
"groupName": "additional"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
18435
dist/azure/gitversion/setup/bundle.js
vendored
Normal file
BIN
dist/azure/gitversion/setup/icon.png
vendored
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
46
dist/azure/gitversion/setup/lib.json
vendored
Normal 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."
|
||||||
|
}
|
||||||
|
}
|
||||||
41
dist/azure/gitversion/setup/task.json
vendored
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"id": "a06c02ae-7b9a-4082-90dc-fe27b500e54f",
|
||||||
|
"name": "gitversion/setup",
|
||||||
|
"friendlyName": "Setup GitVersion Task",
|
||||||
|
"description": "Easy Semantic Versioning (http://semver.org) for projects using Git",
|
||||||
|
"author": "GitTools Contributors",
|
||||||
|
"helpMarkDown": "See the [documentation](https://gitversion.net/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": "gitversion/setup",
|
||||||
|
"inputs": [{
|
||||||
|
"name": "versionSpec",
|
||||||
|
"type": "string",
|
||||||
|
"label": "The version spec",
|
||||||
|
"defaultValue": "",
|
||||||
|
"required": true,
|
||||||
|
"helpMarkDown": "Required version in the form of 5.x or exact version like 5.0.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "includePrerelease",
|
||||||
|
"type": "boolean",
|
||||||
|
"label": "Include pre-release versions",
|
||||||
|
"defaultValue": "false",
|
||||||
|
"required": false,
|
||||||
|
"helpMarkDown": "Include pre-release versions when matching a version"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
dist/azure/images/build-task.png
vendored
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
dist/azure/images/builds.png
vendored
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
dist/azure/images/icon.png
vendored
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
16558
dist/azure/index.js
vendored
14
dist/azure/lib.json
vendored
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"messages": {
|
|
||||||
"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."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
36
dist/azure/lib1.json
vendored
@@ -1,36 +0,0 @@
|
|||||||
{
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
6
dist/azure/overview.md
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
Versioning when using Git, solved. GitVersion looks at your Git history and works out the [semantic version](http://semver.org) of the commit being built.
|
||||||
|
|
||||||
|
It works with most branching strategies but has been designed mainly around GitFlow and GitHubFlow (pull request workflow). The calculated version numbers can then be accessed through variables such as `$(GitVersion.NuGetVersion)` and `$(GitVersion.SemVer)`. It is also very configurable to allow it to work with most release workflows!
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
16726
dist/azure/setup/index.js
vendored
14
dist/azure/setup/lib.json
vendored
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"messages": {
|
|
||||||
"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."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
36
dist/azure/setup/lib1.json
vendored
@@ -1,36 +0,0 @@
|
|||||||
{
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
38
dist/azure/update-version.ps1
vendored
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
function update-task() {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory=$True, Position=0, ValueFromPipeline=$true)]
|
||||||
|
[System.String]
|
||||||
|
$file,
|
||||||
|
|
||||||
|
[Parameter(Mandatory=$True, Position=1, ValueFromPipeline=$false)]
|
||||||
|
[System.String]
|
||||||
|
$major,
|
||||||
|
|
||||||
|
[Parameter(Mandatory=$True, Position=2, ValueFromPipeline=$false)]
|
||||||
|
[System.String]
|
||||||
|
$minor
|
||||||
|
)
|
||||||
|
$file = Resolve-Path $file
|
||||||
|
$jqMajor = '.version.Major=\"' + $major +'\"';
|
||||||
|
$jqMinor = '.version.Minor=\"' + $minor +'\"';
|
||||||
|
Write-Host "Update task from $file to version $major.$minor"
|
||||||
|
|
||||||
|
Get-Content $file | jq $jqMajor | jq $jqMinor | Set-Content $file
|
||||||
|
}
|
||||||
|
|
||||||
|
function update-manifest() {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory=$True, Position=0, ValueFromPipeline=$true)]
|
||||||
|
[System.String]
|
||||||
|
$file,
|
||||||
|
|
||||||
|
[Parameter(Mandatory=$True, Position=1, ValueFromPipeline=$false)]
|
||||||
|
[System.String]
|
||||||
|
$version
|
||||||
|
)
|
||||||
|
$file = Resolve-Path $file
|
||||||
|
$jqVersion = '.version=\"' + $version +'\"';
|
||||||
|
Write-Host "Update manifest version to $version"
|
||||||
|
|
||||||
|
Get-Content $file | jq $jqVersion | Set-Content $file
|
||||||
|
}
|
||||||
111
dist/azure/vss-extension.json
vendored
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
{
|
||||||
|
"manifestVersion": 1,
|
||||||
|
"id": "gittools",
|
||||||
|
"name": "GitTools",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"publisher": "gittools",
|
||||||
|
"public": true,
|
||||||
|
"author": "GitTools Contributors",
|
||||||
|
"description": "Build tasks for easy semantic versioning for projects using Git and release management.",
|
||||||
|
"targets": [{
|
||||||
|
"id": "Microsoft.VisualStudio.Services"
|
||||||
|
}],
|
||||||
|
"files": [
|
||||||
|
{ "path": "gitversion/setup" },
|
||||||
|
{ "path": "gitversion/execute" },
|
||||||
|
{ "path": "gitreleasemanager/setup" },
|
||||||
|
{ "path": "gitreleasemanager/create" },
|
||||||
|
{ "path": "gitreleasemanager/discard" }
|
||||||
|
],
|
||||||
|
"categories": [
|
||||||
|
"Azure Pipelines"
|
||||||
|
],
|
||||||
|
"galleryFlags": [
|
||||||
|
"Public"
|
||||||
|
],
|
||||||
|
"icons": {
|
||||||
|
"default": "images/icon.png"
|
||||||
|
},
|
||||||
|
"tags": [
|
||||||
|
"semver",
|
||||||
|
"git",
|
||||||
|
"versioning",
|
||||||
|
"gitflow",
|
||||||
|
"githubflow"
|
||||||
|
],
|
||||||
|
"links": {
|
||||||
|
"learn": {
|
||||||
|
"uri": "https://github.com/GitTools/actions"
|
||||||
|
},
|
||||||
|
"getstarted": {
|
||||||
|
"uri": "https://github.com/GitTools/actions"
|
||||||
|
},
|
||||||
|
"license": {
|
||||||
|
"uri": "https://github.com/GitTools/actions/blob/master/LICENSE"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"uri": "https://github.com/GitTools/actions.git"
|
||||||
|
},
|
||||||
|
"support": {
|
||||||
|
"uri": "https://github.com/GitTools/actions/issues"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"screenshots": [{
|
||||||
|
"path": "images/builds.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "images/build-task.png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"content": {
|
||||||
|
"details": {
|
||||||
|
"path": "overview.md"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contributions": [{
|
||||||
|
"id": "setup-gitversion-task",
|
||||||
|
"type": "ms.vss-distributed-task.task",
|
||||||
|
"targets": [
|
||||||
|
"ms.vss-distributed-task.tasks"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"name": "gitversion/setup"
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"id": "execute-gitversion-task",
|
||||||
|
"type": "ms.vss-distributed-task.task",
|
||||||
|
"targets": [
|
||||||
|
"ms.vss-distributed-task.tasks"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"name": "gitversion/execute"
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"id": "setup-gitreleasemanager-task",
|
||||||
|
"type": "ms.vss-distributed-task.task",
|
||||||
|
"targets": [
|
||||||
|
"ms.vss-distributed-task.tasks"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"name": "gitreleasemanager/setup"
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"id": "create-gitreleasemanager-task",
|
||||||
|
"type": "ms.vss-distributed-task.task",
|
||||||
|
"targets": [
|
||||||
|
"ms.vss-distributed-task.tasks"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"name": "gitreleasemanager/create"
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"id": "discard-gitreleasemanager-task",
|
||||||
|
"type": "ms.vss-distributed-task.task",
|
||||||
|
"targets": [
|
||||||
|
"ms.vss-distributed-task.tasks"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"name": "gitreleasemanager/discard"
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
9949
dist/github/execute/index.js
vendored
12504
dist/github/gitreleasemanager/create/bundle.js
vendored
Normal file
12504
dist/github/gitreleasemanager/discard/bundle.js
vendored
Normal file
12504
dist/github/gitreleasemanager/setup/bundle.js
vendored
Normal file
12479
dist/github/gitversion/execute/bundle.js
vendored
Normal file
12479
dist/github/gitversion/setup/bundle.js
vendored
Normal file
9949
dist/github/setup/index.js
vendored
7865
dist/mock/gitreleasemanager/create/bundle.js
vendored
Normal file
7865
dist/mock/gitreleasemanager/discard/bundle.js
vendored
Normal file
7865
dist/mock/gitreleasemanager/setup/bundle.js
vendored
Normal file
7840
dist/mock/gitversion/execute/bundle.js
vendored
Normal file
7840
dist/mock/gitversion/setup/bundle.js
vendored
Normal file
BIN
docs/icon.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
46
gitreleasemanager/create/action.yml
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
name: gitreleasemanager-create
|
||||||
|
description: GitHub Action for creating and exporting releases for software applications hosted on GitHub. Creates the release
|
||||||
|
author: GitTools
|
||||||
|
branding:
|
||||||
|
color: gray-dark
|
||||||
|
icon: git-pull-request
|
||||||
|
runs:
|
||||||
|
using: node12
|
||||||
|
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: 'false'
|
||||||
|
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: ''
|
||||||
30
gitreleasemanager/discard/action.yml
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
name: gitreleasemanager-discard
|
||||||
|
description: GitHub Action for creating and exporting releases for software applications hosted on GitHub. Discards a release
|
||||||
|
author: GitTools
|
||||||
|
branding:
|
||||||
|
color: gray-dark
|
||||||
|
icon: git-pull-request
|
||||||
|
runs:
|
||||||
|
using: node12
|
||||||
|
main: ../../dist/github/gitreleasemanager/discard/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: ''
|
||||||
|
targetDirectory:
|
||||||
|
description: The directory on which GitReleaseManager should be executed. Defaults to current directory
|
||||||
|
required: false
|
||||||
|
default: ''
|
||||||
18
gitreleasemanager/setup/action.yml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
name: gitreleasemanager-setup
|
||||||
|
description: GitHub Action for creating and exporting releases for software applications hosted on GitHub. Installs the specific version of GitReleaseManager.Tool
|
||||||
|
author: GitTools
|
||||||
|
branding:
|
||||||
|
color: gray-dark
|
||||||
|
icon: git-pull-request
|
||||||
|
runs:
|
||||||
|
using: node12
|
||||||
|
main: ../../dist/github/gitreleasemanager/setup/bundle.js
|
||||||
|
inputs:
|
||||||
|
versionSpec:
|
||||||
|
description: Required version in the form of 0.10.x or exact version like 0.10.2
|
||||||
|
required: true
|
||||||
|
default: ''
|
||||||
|
includePrerelease:
|
||||||
|
description: Include pre-release versions when matching a version
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
@@ -4,6 +4,9 @@ author: GitTools
|
|||||||
branding:
|
branding:
|
||||||
color: gray-dark
|
color: gray-dark
|
||||||
icon: git-pull-request
|
icon: git-pull-request
|
||||||
|
runs:
|
||||||
|
using: node12
|
||||||
|
main: ../../dist/github/gitversion/execute/bundle.js
|
||||||
inputs:
|
inputs:
|
||||||
targetPath:
|
targetPath:
|
||||||
description: Optionally supply the path to the working directory
|
description: Optionally supply the path to the working directory
|
||||||
@@ -89,7 +92,4 @@ outputs:
|
|||||||
commitsSinceVersionSourcePadded:
|
commitsSinceVersionSourcePadded:
|
||||||
description: 'The CommitsSinceVersionSourcePadded value'
|
description: 'The CommitsSinceVersionSourcePadded value'
|
||||||
commitDate:
|
commitDate:
|
||||||
description: 'The CommitDate value'
|
description: 'The CommitDate value'
|
||||||
runs:
|
|
||||||
using: node12
|
|
||||||
main: ../dist/github/execute/index.js
|
|
||||||
@@ -4,6 +4,9 @@ author: GitTools
|
|||||||
branding:
|
branding:
|
||||||
color: gray-dark
|
color: gray-dark
|
||||||
icon: git-pull-request
|
icon: git-pull-request
|
||||||
|
runs:
|
||||||
|
using: node12
|
||||||
|
main: ../../dist/github/gitversion/setup/bundle.js
|
||||||
inputs:
|
inputs:
|
||||||
versionSpec:
|
versionSpec:
|
||||||
description: Required version in the form of 5.x or exact version like 5.0.0
|
description: Required version in the form of 5.x or exact version like 5.0.0
|
||||||
@@ -12,7 +15,4 @@ inputs:
|
|||||||
includePrerelease:
|
includePrerelease:
|
||||||
description: Include pre-release versions when matching a version
|
description: Include pre-release versions when matching a version
|
||||||
required: false
|
required: false
|
||||||
default: false
|
default: false
|
||||||
runs:
|
|
||||||
using: node12
|
|
||||||
main: ../dist/github/setup/index.js
|
|
||||||
5840
package-lock.json
generated
53
package.json
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "use-gitversion",
|
"name": "gittools-actions",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "Easy Semantic Versioning (http://semver.org) for projects using Git",
|
"description": "Easy Semantic Versioning (http://semver.org) for projects using Git",
|
||||||
"repository": {
|
"repository": {
|
||||||
@@ -8,13 +8,15 @@
|
|||||||
},
|
},
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"package": "npm run package-github && npm run package-azure",
|
"build:mock": "webpack --config webpack.config.js --env.agent=mock",
|
||||||
"package-azure": "npm run package-azure-setup && npm run package-azure-execute",
|
"build:azure": "webpack --config webpack.config.js --env.agent=azure",
|
||||||
"package-github": "npm run package-github-setup && npm run package-github-execute",
|
"build:github": "webpack --config webpack.config.js --env.agent=github",
|
||||||
"package-azure-setup": "ncc build src/azure/setup.ts -o dist/azure/setup",
|
"build:mock:prod": "npm run build:mock -- --env.mode=production",
|
||||||
"package-azure-execute": "ncc build src/azure/execute.ts -o dist/azure/execute",
|
"build:azure:prod": "npm run build:azure -- --env.mode=production",
|
||||||
"package-github-setup": "ncc build src/github/setup.ts -o dist/github/setup",
|
"build:github:prod": "npm run build:github -- --env.mode=production",
|
||||||
"package-github-execute": "ncc build src/github/execute.ts -o dist/github/execute"
|
"build": "npm run build:mock && npm run build:azure && npm run build:github",
|
||||||
|
"build:prod": "npm run build:mock:prod && npm run build:azure:prod && npm run build:github:prod",
|
||||||
|
"publish:azure": "tfx extension publish --root ./dist/azure --no-wait-validation --auth-type pat"
|
||||||
},
|
},
|
||||||
"author": "GitTools",
|
"author": "GitTools",
|
||||||
"contributors": [
|
"contributors": [
|
||||||
@@ -22,22 +24,29 @@
|
|||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.2.0",
|
"@actions/core": "^1.2.2",
|
||||||
"@actions/exec": "^1.0.1",
|
"@actions/exec": "^1.0.3",
|
||||||
"@actions/io": "^1.0.1",
|
"@actions/io": "^1.0.2",
|
||||||
"@actions/tool-cache": "^1.1.2",
|
"@actions/tool-cache": "^1.3.1",
|
||||||
"azure-pipelines-task-lib": "2.9.3",
|
"azure-pipelines-task-lib": "^2.9.3",
|
||||||
"azure-pipelines-tool-lib": "0.12.0",
|
"azure-pipelines-tool-lib": "^0.12.0",
|
||||||
"inversify": "^5.0.1",
|
"inversify": "^5.0.1",
|
||||||
"typed-rest-client": "1.5.0",
|
"typed-rest-client": "^1.7.1",
|
||||||
"uuid": "^3.3.3"
|
"uuid": "^3.4.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "12.12.11",
|
"@types/node": "^13.7.0",
|
||||||
"@types/q": "1.5.2",
|
"@types/q": "^1.5.2",
|
||||||
|
"@types/semver-compare": "^1.0.1",
|
||||||
|
"@types/uuid": "^3.4.7",
|
||||||
|
"json-update": "^5.3.0",
|
||||||
"reflect-metadata": "^0.1.13",
|
"reflect-metadata": "^0.1.13",
|
||||||
"tslint": "^5.20.1",
|
"replace-in-file-webpack-plugin": "^1.0.6",
|
||||||
"typescript": "^3.7.2",
|
"tfx-cli": "^0.7.11",
|
||||||
"@zeit/ncc": "^0.20.5"
|
"ts-loader": "^6.2.1",
|
||||||
|
"tslint": "^6.0.0",
|
||||||
|
"typescript": "^3.7.5",
|
||||||
|
"webpack": "^4.41.5",
|
||||||
|
"webpack-cli": "^3.3.10"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,11 +3,15 @@ import { injectable } from "inversify";
|
|||||||
import * as taskLib from "azure-pipelines-task-lib/task";
|
import * as taskLib from "azure-pipelines-task-lib/task";
|
||||||
import * as toolLib from "azure-pipelines-tool-lib/tool";
|
import * as toolLib from "azure-pipelines-tool-lib/tool";
|
||||||
|
|
||||||
import { IBuildAgent, IExecResult } from "../interfaces";
|
import { IBuildAgent, IExecResult } from "../../core/models";
|
||||||
|
|
||||||
@injectable()
|
@injectable()
|
||||||
class BuildAgent implements IBuildAgent {
|
class BuildAgent implements IBuildAgent {
|
||||||
|
|
||||||
|
public get agentName(): string {
|
||||||
|
return "Azure Pipelines";
|
||||||
|
}
|
||||||
|
|
||||||
public find(toolName: string, versionSpec: string, arch?: string): string {
|
public find(toolName: string, versionSpec: string, arch?: string): string {
|
||||||
return toolLib.findLocalTool(toolName, versionSpec, arch);
|
return toolLib.findLocalTool(toolName, versionSpec, arch);
|
||||||
}
|
}
|
||||||
@@ -73,19 +77,26 @@ class BuildAgent implements IBuildAgent {
|
|||||||
return taskLib.getInput(input, required);
|
return taskLib.getInput(input, required);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public getListInput(input: string, required?: boolean): string[] {
|
||||||
|
return taskLib
|
||||||
|
.getInput(input, required)
|
||||||
|
.split("\n")
|
||||||
|
.filter(x => x !== "");
|
||||||
|
}
|
||||||
|
|
||||||
public getBooleanInput(input: string, required?: boolean): boolean {
|
public getBooleanInput(input: string, required?: boolean): boolean {
|
||||||
return taskLib.getBoolInput(input, required);
|
return taskLib.getBoolInput(input, required);
|
||||||
}
|
}
|
||||||
|
|
||||||
public isValidInputFile(input: string, file: string) {
|
public isValidInputFile(input: string, file: string): boolean {
|
||||||
return taskLib.filePathSupplied(input) && this.fileExists(file);
|
return taskLib.filePathSupplied(input) && this.fileExists(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
public fileExists(file: string) {
|
public fileExists(file: string): boolean {
|
||||||
return taskLib.exist(file) && taskLib.stats(file).isFile();
|
return taskLib.exist(file) && taskLib.stats(file).isFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
public directoryExists(file: string) {
|
public directoryExists(file: string): boolean {
|
||||||
return taskLib.exist(file) && taskLib.stats(file).isDirectory();
|
return taskLib.exist(file) && taskLib.stats(file).isDirectory();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
import * as fs from "fs";
|
import * as fs from "fs";
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
import * as uuidV4 from "uuid/v4";
|
|
||||||
|
import uuidv4 from "uuid";
|
||||||
|
|
||||||
import * as core from "@actions/core";
|
import * as core from "@actions/core";
|
||||||
import * as exe from "@actions/exec";
|
import * as exe from "@actions/exec";
|
||||||
@@ -9,11 +10,14 @@ import * as toolCache from "@actions/tool-cache";
|
|||||||
|
|
||||||
import { injectable } from "inversify";
|
import { injectable } from "inversify";
|
||||||
|
|
||||||
import { IBuildAgent, IExecResult } from "../interfaces";
|
import { IBuildAgent, IExecResult } from "../../core/models";
|
||||||
|
|
||||||
@injectable()
|
@injectable()
|
||||||
class BuildAgent implements IBuildAgent {
|
class BuildAgent implements IBuildAgent {
|
||||||
public Stats;
|
|
||||||
|
public get agentName(): string {
|
||||||
|
return "GitHub Actions";
|
||||||
|
}
|
||||||
|
|
||||||
public find(toolName: string, versionSpec: string, arch?: string): string {
|
public find(toolName: string, versionSpec: string, arch?: string): string {
|
||||||
return toolCache.find(toolName, versionSpec, arch);
|
return toolCache.find(toolName, versionSpec, arch);
|
||||||
@@ -42,7 +46,7 @@ public Stats;
|
|||||||
}
|
}
|
||||||
tempDirectory = path.join(baseLocation, "actions", "temp");
|
tempDirectory = path.join(baseLocation, "actions", "temp");
|
||||||
}
|
}
|
||||||
const dest = path.join(tempDirectory, uuidV4());
|
const dest = path.join(tempDirectory, uuidv4());
|
||||||
await io.mkdirP(dest);
|
await io.mkdirP(dest);
|
||||||
return dest;
|
return dest;
|
||||||
}
|
}
|
||||||
@@ -113,22 +117,33 @@ public Stats;
|
|||||||
return core.getInput(input, { required } as core.InputOptions);
|
return core.getInput(input, { required } as core.InputOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public getListInput(input: string, required?: boolean): string[] {
|
||||||
|
return core
|
||||||
|
.getInput(input, { required } as core.InputOptions)
|
||||||
|
.split("\n")
|
||||||
|
.filter(x => x !== "");
|
||||||
|
}
|
||||||
|
|
||||||
public getBooleanInput(input: string, required?: boolean): boolean {
|
public getBooleanInput(input: string, required?: boolean): boolean {
|
||||||
const inputValue = this.getInput(input, required);
|
const inputValue = this.getInput(input, required);
|
||||||
return (inputValue || "false").toLowerCase() === "true";
|
return (inputValue || "false").toLowerCase() === "true";
|
||||||
}
|
}
|
||||||
|
|
||||||
public isValidInputFile(input: string, file: string) {
|
public isValidInputFile(input: string, file: string): boolean {
|
||||||
const pathValue = path.resolve(this.getInput(input) || "");
|
return this.filePathSupplied(input) && this.fileExists(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
public filePathSupplied(file: string): boolean {
|
||||||
|
const pathValue = path.resolve(this.getInput(file) || "");
|
||||||
const repoRoot = this.getSourceDir();
|
const repoRoot = this.getSourceDir();
|
||||||
return pathValue !== repoRoot;
|
return pathValue !== repoRoot;
|
||||||
}
|
}
|
||||||
|
|
||||||
public fileExists(file: string) {
|
public fileExists(file: string): boolean {
|
||||||
return this._exist(file) && this._stats(file).isFile();
|
return this._exist(file) && this._stats(file).isFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
public directoryExists(file: string) {
|
public directoryExists(file: string): boolean {
|
||||||
return this._exist(file) && this._stats(file).isDirectory();
|
return this._exist(file) && this._stats(file).isDirectory();
|
||||||
}
|
}
|
||||||
|
|
||||||
109
src/agent/mock/build-agent.ts
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
import { injectable } from "inversify";
|
||||||
|
|
||||||
|
import { IBuildAgent, IExecResult } from "../../core/models";
|
||||||
|
|
||||||
|
@injectable()
|
||||||
|
class BuildAgent implements IBuildAgent {
|
||||||
|
|
||||||
|
public get agentName(): string {
|
||||||
|
console.log("getAgentName");
|
||||||
|
return "Mock";
|
||||||
|
}
|
||||||
|
|
||||||
|
public find(toolName: string, versionSpec: string, arch?: string): string {
|
||||||
|
console.log("find");
|
||||||
|
return "find";
|
||||||
|
}
|
||||||
|
|
||||||
|
public cacheDir(sourceDir: string, tool: string, version: string, arch?: string): Promise<string> {
|
||||||
|
console.log("cacheDir");
|
||||||
|
return Promise.resolve("cacheDir");
|
||||||
|
}
|
||||||
|
|
||||||
|
public createTempDir(): Promise<string> {
|
||||||
|
console.log("createTempDir");
|
||||||
|
return Promise.resolve("createTempDir");
|
||||||
|
}
|
||||||
|
|
||||||
|
public debug(message: string): void {
|
||||||
|
console.log("debug");
|
||||||
|
}
|
||||||
|
|
||||||
|
public setFailed(message: string, done?: boolean): void {
|
||||||
|
console.log("setFailed");
|
||||||
|
}
|
||||||
|
|
||||||
|
public setSucceeded(message: string, done?: boolean): void {
|
||||||
|
console.log("setSucceeded");
|
||||||
|
}
|
||||||
|
|
||||||
|
public exportVariable(name: string, val: string): void {
|
||||||
|
console.log("exportVariable");
|
||||||
|
}
|
||||||
|
|
||||||
|
public getVariable(name: string): string {
|
||||||
|
console.log("getVariable");
|
||||||
|
return "getVariable";
|
||||||
|
}
|
||||||
|
|
||||||
|
public addPath(inputPath: string): void {
|
||||||
|
console.log("addPath");
|
||||||
|
}
|
||||||
|
|
||||||
|
public which(tool: string, check?: boolean): Promise<string> {
|
||||||
|
console.log("which");
|
||||||
|
return Promise.resolve("which");
|
||||||
|
}
|
||||||
|
|
||||||
|
public exec(exec: string, args: string[]): Promise<IExecResult> {
|
||||||
|
return Promise.resolve({
|
||||||
|
code: 0,
|
||||||
|
error: null,
|
||||||
|
stderr: "result.stderr",
|
||||||
|
stdout: "result.stdout",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public getSourceDir(): string {
|
||||||
|
console.log("getSourceDir");
|
||||||
|
return "getSourceDir";
|
||||||
|
}
|
||||||
|
|
||||||
|
public setOutput(name: string, value: string): void {
|
||||||
|
console.log("setOutput");
|
||||||
|
}
|
||||||
|
|
||||||
|
public getInput(input: string, required?: boolean): string {
|
||||||
|
console.log("getInput");
|
||||||
|
return "getInput";
|
||||||
|
}
|
||||||
|
|
||||||
|
public getListInput(input: string, required?: boolean): string[] {
|
||||||
|
console.log("getListInput");
|
||||||
|
return ["getInput"];
|
||||||
|
}
|
||||||
|
|
||||||
|
public getBooleanInput(input: string, required?: boolean): boolean {
|
||||||
|
console.log("getBooleanInput");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public isValidInputFile(input: string, file: string) {
|
||||||
|
console.log("isValidInputFile");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public fileExists(file: string) {
|
||||||
|
console.log("fileExists");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public directoryExists(file: string) {
|
||||||
|
console.log("directoryExists");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export {
|
||||||
|
BuildAgent,
|
||||||
|
};
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
import "reflect-metadata";
|
|
||||||
|
|
||||||
import { IBuildAgent, IGitVersionTool } from "../interfaces";
|
|
||||||
import { ioc } from "../ioc";
|
|
||||||
import { run } from "../main";
|
|
||||||
import { TYPES } from "../types";
|
|
||||||
import { BuildAgent } from "./build-agent";
|
|
||||||
|
|
||||||
ioc.bind<IBuildAgent>(TYPES.IBuildAgent).to(BuildAgent);
|
|
||||||
|
|
||||||
const gitVersionTool = ioc.get<IGitVersionTool>(TYPES.IGitVersionTool);
|
|
||||||
const buildAgent = ioc.get<IBuildAgent>(TYPES.IBuildAgent);
|
|
||||||
|
|
||||||
run(buildAgent, gitVersionTool);
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
import "reflect-metadata";
|
|
||||||
|
|
||||||
import { IBuildAgent, IGitVersionTool } from "../interfaces";
|
|
||||||
import { ioc } from "../ioc";
|
|
||||||
import { setup } from "../main";
|
|
||||||
import { TYPES } from "../types";
|
|
||||||
import { BuildAgent } from "./build-agent";
|
|
||||||
|
|
||||||
ioc.bind<IBuildAgent>(TYPES.IBuildAgent).to(BuildAgent);
|
|
||||||
|
|
||||||
const gitVersionTool = ioc.get<IGitVersionTool>(TYPES.IGitVersionTool);
|
|
||||||
const buildAgent = ioc.get<IBuildAgent>(TYPES.IBuildAgent);
|
|
||||||
|
|
||||||
setup(buildAgent, gitVersionTool);
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": "../tsconfig.json"
|
|
||||||
}
|
|
||||||
@@ -1,20 +1,22 @@
|
|||||||
|
|
||||||
import * as fs from "fs";
|
import * as fs from "fs";
|
||||||
import * as os from "os";
|
import * as os from "os";
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
import * as semver from "semver";
|
|
||||||
import * as http from "typed-rest-client/HttpClient";
|
import * as http from "typed-rest-client/HttpClient";
|
||||||
|
|
||||||
import { inject, injectable } from "inversify";
|
import { inject, injectable } from "inversify";
|
||||||
|
import { TYPES, IExecResult, IBuildAgent } from "./models";
|
||||||
|
import { IVersionManager } from "./versionManager";
|
||||||
|
|
||||||
import { IBuildAgent, IDotnetTool, IExecResult, IGitVersionOptions, IGitVersionTool, IVersionManager } from "./interfaces";
|
export interface IDotnetTool {
|
||||||
import { TYPES } from "./types";
|
disableTelemetry(): void;
|
||||||
|
toolInstall(toolName: string, versionSpec: string, checkLatest: boolean, includePre: boolean): Promise<string>;
|
||||||
|
}
|
||||||
|
|
||||||
@injectable()
|
@injectable()
|
||||||
class DotnetTool implements IDotnetTool {
|
export class DotnetTool implements IDotnetTool {
|
||||||
|
|
||||||
private buildAgent: IBuildAgent;
|
protected buildAgent: IBuildAgent;
|
||||||
private versionManager: IVersionManager;
|
protected versionManager: IVersionManager;
|
||||||
private httpClient: http.HttpClient;
|
private httpClient: http.HttpClient;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@@ -26,8 +28,13 @@ class DotnetTool implements IDotnetTool {
|
|||||||
this.httpClient = new http.HttpClient("dotnet");
|
this.httpClient = new http.HttpClient("dotnet");
|
||||||
}
|
}
|
||||||
|
|
||||||
public run(args: string[]): Promise<IExecResult> {
|
public disableTelemetry(): void {
|
||||||
return this.buildAgent.exec("dotnet", args);
|
this.buildAgent.exportVariable("DOTNET_CLI_TELEMETRY_OPTOUT", "1");
|
||||||
|
}
|
||||||
|
|
||||||
|
public execute(cmd: string, args: string[]): Promise<IExecResult> {
|
||||||
|
console.log(`Command: ${cmd} ${args.join(' ')}`);
|
||||||
|
return this.buildAgent.exec(cmd, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async toolInstall(toolName: string, versionSpec: string, checkLatest: boolean, includePre: boolean)
|
public async toolInstall(toolName: string, versionSpec: string, checkLatest: boolean, includePre: boolean)
|
||||||
@@ -109,7 +116,7 @@ class DotnetTool implements IDotnetTool {
|
|||||||
const body: string = await res.readBody();
|
const body: string = await res.readBody();
|
||||||
const data = JSON.parse(body).data;
|
const data = JSON.parse(body).data;
|
||||||
|
|
||||||
const versions = (data[0].versions as Array<{ version: string }>).map((x) => x.version);
|
const versions = (data[0].versions as { version: string }[]).map((x) => x.version);
|
||||||
if (!versions || !versions.length) {
|
if (!versions || !versions.length) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -129,7 +136,7 @@ class DotnetTool implements IDotnetTool {
|
|||||||
args = args.concat(["--version", version]);
|
args = args.concat(["--version", version]);
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = await this.run(args);
|
const result = await this.execute("dotnet", args);
|
||||||
const status = result.code === 0 ? "success" : "failure";
|
const status = result.code === 0 ? "success" : "failure";
|
||||||
const message = result.code === 0 ? result.stdout : result.stderr;
|
const message = result.code === 0 ? result.stdout : result.stderr;
|
||||||
|
|
||||||
@@ -141,137 +148,4 @@ class DotnetTool implements IDotnetTool {
|
|||||||
|
|
||||||
return await this.buildAgent.cacheDir(tempDirectory, toolName, version);
|
return await this.buildAgent.cacheDir(tempDirectory, toolName, version);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@injectable()
|
|
||||||
class GitVersionTool implements IGitVersionTool {
|
|
||||||
|
|
||||||
private buildAgent: IBuildAgent;
|
|
||||||
private dotnetTool: IDotnetTool;
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
@inject(TYPES.IBuildAgent) buildAgent: IBuildAgent,
|
|
||||||
@inject(TYPES.IDotnetTool) dotnetTool: IDotnetTool,
|
|
||||||
) {
|
|
||||||
this.buildAgent = buildAgent;
|
|
||||||
this.dotnetTool = dotnetTool;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async install(versionSpec: string, includePrerelease: boolean): Promise<void> {
|
|
||||||
await this.dotnetTool.toolInstall("GitVersion.Tool", versionSpec, false, includePrerelease);
|
|
||||||
}
|
|
||||||
|
|
||||||
public run(options: IGitVersionOptions): Promise<IExecResult> {
|
|
||||||
const workDir = this.getRepoDir(options.targetPath);
|
|
||||||
|
|
||||||
const args = this.getArguments(workDir, options);
|
|
||||||
|
|
||||||
return this.buildAgent.exec("dotnet-gitversion", args);
|
|
||||||
}
|
|
||||||
|
|
||||||
private getRepoDir(targetPath: string): string {
|
|
||||||
let workDir: string;
|
|
||||||
const srcDir = this.buildAgent.getSourceDir();
|
|
||||||
if (!targetPath) {
|
|
||||||
workDir = srcDir;
|
|
||||||
} else {
|
|
||||||
if (this.buildAgent.directoryExists(targetPath)) {
|
|
||||||
workDir = path.join(srcDir, targetPath);
|
|
||||||
} else {
|
|
||||||
throw new Error("Directory not found at " + targetPath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return workDir.replace(/\\/g, "/");
|
|
||||||
}
|
|
||||||
|
|
||||||
private getArguments(workDir: string, options: IGitVersionOptions) {
|
|
||||||
const args = [
|
|
||||||
workDir,
|
|
||||||
"/output",
|
|
||||||
"json", // need to use buildserver later
|
|
||||||
];
|
|
||||||
|
|
||||||
const {
|
|
||||||
useConfigFile,
|
|
||||||
configFilePath,
|
|
||||||
updateAssemblyInfo,
|
|
||||||
updateAssemblyInfoFilename,
|
|
||||||
additionalArguments,
|
|
||||||
} = options;
|
|
||||||
|
|
||||||
if (useConfigFile) {
|
|
||||||
if (this.buildAgent.isValidInputFile("configFilePath", configFilePath)) {
|
|
||||||
args.push("/config", configFilePath);
|
|
||||||
} else {
|
|
||||||
throw new Error("GitVersion configuration file not found at " + configFilePath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (updateAssemblyInfo) {
|
|
||||||
args.push("/updateassemblyinfo");
|
|
||||||
if (this.buildAgent.isValidInputFile("updateAssemblyInfoFilename", updateAssemblyInfoFilename)) {
|
|
||||||
args.push(updateAssemblyInfoFilename);
|
|
||||||
} else {
|
|
||||||
throw new Error("AssemblyInfoFilename file not found at " + updateAssemblyInfoFilename);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
args.push(additionalArguments);
|
|
||||||
return args;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const cmp = require("semver-compare");
|
|
||||||
|
|
||||||
@injectable()
|
|
||||||
class VersionManager implements IVersionManager {
|
|
||||||
|
|
||||||
private buildAgent: IBuildAgent;
|
|
||||||
constructor(
|
|
||||||
@inject(TYPES.IBuildAgent) buildAgent: IBuildAgent,
|
|
||||||
) {
|
|
||||||
this.buildAgent = buildAgent;
|
|
||||||
}
|
|
||||||
|
|
||||||
public isExplicitVersion(versionSpec: string): boolean {
|
|
||||||
const c = semver.clean(versionSpec);
|
|
||||||
this.buildAgent.debug("isExplicit: " + c);
|
|
||||||
|
|
||||||
const valid = semver.valid(c) != null;
|
|
||||||
this.buildAgent.debug("explicit? " + valid);
|
|
||||||
|
|
||||||
return valid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public evaluateVersions(versions: string[], versionSpec: string): string {
|
|
||||||
let version: string;
|
|
||||||
this.buildAgent.debug("evaluating " + versions.length + " versions");
|
|
||||||
versions = versions.sort(cmp);
|
|
||||||
for (let i = versions.length - 1; i >= 0; i--) {
|
|
||||||
const potential: string = versions[i];
|
|
||||||
const satisfied: boolean = semver.satisfies(potential, versionSpec);
|
|
||||||
if (satisfied) {
|
|
||||||
version = potential;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (version) {
|
|
||||||
this.buildAgent.debug("matched: " + version);
|
|
||||||
} else {
|
|
||||||
this.buildAgent.debug("match not found");
|
|
||||||
}
|
|
||||||
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public cleanVersion(version: string): string {
|
|
||||||
this.buildAgent.debug("cleaning: " + version);
|
|
||||||
return semver.clean(version);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export {
|
|
||||||
DotnetTool,
|
|
||||||
GitVersionTool,
|
|
||||||
VersionManager,
|
|
||||||
};
|
|
||||||
11
src/core/ioc.ts
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import { Container } from "inversify";
|
||||||
|
import { IVersionManager, VersionManager } from "./versionManager";
|
||||||
|
import { TYPES, IBuildAgent } from "./models";
|
||||||
|
import { BuildAgent } from "../agent/mock/build-agent";
|
||||||
|
|
||||||
|
const container = new Container();
|
||||||
|
|
||||||
|
container.bind<IVersionManager>(TYPES.IVersionManager).to(VersionManager);
|
||||||
|
container.bind<IBuildAgent>(TYPES.IBuildAgent).to(BuildAgent);
|
||||||
|
|
||||||
|
export default container;
|
||||||
49
src/core/models.ts
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
export const TYPES = {
|
||||||
|
IBuildAgent: Symbol.for("BuildAgent"),
|
||||||
|
IDotnetTool: Symbol.for("DotnetTool"),
|
||||||
|
IGitVersionTool: Symbol.for("GitVersionTool"),
|
||||||
|
IGitReleaseManagerTool: Symbol.for("GitReleaseManagerTool"),
|
||||||
|
IVersionManager: Symbol.for("VersionManager"),
|
||||||
|
};
|
||||||
|
|
||||||
|
export enum SetupFields {
|
||||||
|
includePrerelease = "includePrerelease",
|
||||||
|
versionSpec = "versionSpec",
|
||||||
|
};
|
||||||
|
|
||||||
|
export interface ISetupSettings {
|
||||||
|
[SetupFields.versionSpec]: string;
|
||||||
|
[SetupFields.includePrerelease]: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IExecResult {
|
||||||
|
stdout: string;
|
||||||
|
stderr: string;
|
||||||
|
code: number;
|
||||||
|
error: Error;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IBuildAgent {
|
||||||
|
agentName: string;
|
||||||
|
find(toolName: string, versionSpec: string, arch?: string): string;
|
||||||
|
cacheDir(sourceDir: string, tool: string, version: string, arch?: string): Promise<string>;
|
||||||
|
createTempDir(): Promise<string>;
|
||||||
|
debug(message: string): void;
|
||||||
|
setFailed(message: string, done?: boolean): void;
|
||||||
|
setSucceeded(message: string, done?: boolean): void;
|
||||||
|
exportVariable(name: string, val: string): void;
|
||||||
|
getVariable(name: string): string;
|
||||||
|
addPath(inputPath: string): void;
|
||||||
|
which(tool: string, check?: boolean): Promise<string>;
|
||||||
|
exec(exec: string, args: string[]): Promise<IExecResult>;
|
||||||
|
|
||||||
|
getSourceDir(): string;
|
||||||
|
isValidInputFile(input: string, file: string): boolean;
|
||||||
|
fileExists(file: string): boolean;
|
||||||
|
directoryExists(file: string): boolean;
|
||||||
|
|
||||||
|
setOutput(name: string, value: string): void;
|
||||||
|
getInput(input: string, required?: boolean): string;
|
||||||
|
getListInput(input: string, required?: boolean): string[];
|
||||||
|
getBooleanInput(input: string, required?: boolean): boolean;
|
||||||
|
}
|
||||||
14
src/core/settings.ts
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import { IBuildAgent, SetupFields, ISetupSettings } from "./models";
|
||||||
|
|
||||||
|
export class Settings {
|
||||||
|
|
||||||
|
public static getSetupSettings(buildAgent: IBuildAgent): ISetupSettings {
|
||||||
|
const versionSpec = buildAgent.getInput(SetupFields.versionSpec);
|
||||||
|
const includePrerelease = buildAgent.getBooleanInput(SetupFields.includePrerelease);
|
||||||
|
|
||||||
|
return {
|
||||||
|
versionSpec,
|
||||||
|
includePrerelease
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
59
src/core/versionManager.ts
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
import cmp from "semver-compare";
|
||||||
|
import * as semver from "semver";
|
||||||
|
import { injectable, inject } from "inversify";
|
||||||
|
|
||||||
|
import { IBuildAgent, TYPES } from "./models";
|
||||||
|
|
||||||
|
export interface IVersionManager {
|
||||||
|
isExplicitVersion(versionSpec: string): boolean;
|
||||||
|
evaluateVersions(versions: string[], versionSpec: string): string;
|
||||||
|
cleanVersion(version: string): string;
|
||||||
|
}
|
||||||
|
|
||||||
|
@injectable()
|
||||||
|
export class VersionManager implements IVersionManager {
|
||||||
|
|
||||||
|
private buildAgent: IBuildAgent;
|
||||||
|
constructor(
|
||||||
|
@inject(TYPES.IBuildAgent) buildAgent: IBuildAgent,
|
||||||
|
) {
|
||||||
|
this.buildAgent = buildAgent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public isExplicitVersion(versionSpec: string): boolean {
|
||||||
|
const c = semver.clean(versionSpec);
|
||||||
|
this.buildAgent.debug("isExplicit: " + c);
|
||||||
|
|
||||||
|
const valid = semver.valid(c) != null;
|
||||||
|
this.buildAgent.debug("explicit? " + valid);
|
||||||
|
|
||||||
|
return valid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public evaluateVersions(versions: string[], versionSpec: string): string {
|
||||||
|
let version: string;
|
||||||
|
this.buildAgent.debug("evaluating " + versions.length + " versions");
|
||||||
|
versions = versions.sort(cmp);
|
||||||
|
for (let i = versions.length - 1; i >= 0; i--) {
|
||||||
|
const potential: string = versions[i];
|
||||||
|
const satisfied: boolean = semver.satisfies(potential, versionSpec);
|
||||||
|
if (satisfied) {
|
||||||
|
version = potential;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (version) {
|
||||||
|
this.buildAgent.debug("matched: " + version);
|
||||||
|
} else {
|
||||||
|
this.buildAgent.debug("match not found");
|
||||||
|
}
|
||||||
|
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
|
||||||
|
public cleanVersion(version: string): string {
|
||||||
|
this.buildAgent.debug("cleaning: " + version);
|
||||||
|
return semver.clean(version);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
import "reflect-metadata";
|
|
||||||
|
|
||||||
import { IBuildAgent, IGitVersionTool } from "../interfaces";
|
|
||||||
import { ioc } from "../ioc";
|
|
||||||
import { run } from "../main";
|
|
||||||
import { TYPES } from "../types";
|
|
||||||
import { BuildAgent } from "./build-agent";
|
|
||||||
|
|
||||||
ioc.bind<IBuildAgent>(TYPES.IBuildAgent).to(BuildAgent);
|
|
||||||
|
|
||||||
const gitVersionTool = ioc.get<IGitVersionTool>(TYPES.IGitVersionTool);
|
|
||||||
const buildAgent = ioc.get<IBuildAgent>(TYPES.IBuildAgent);
|
|
||||||
|
|
||||||
run(buildAgent, gitVersionTool);
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
import "reflect-metadata";
|
|
||||||
|
|
||||||
import { IBuildAgent, IGitVersionTool } from "../interfaces";
|
|
||||||
import { ioc } from "../ioc";
|
|
||||||
import { setup } from "../main";
|
|
||||||
import { TYPES } from "../types";
|
|
||||||
import { BuildAgent } from "./build-agent";
|
|
||||||
|
|
||||||
ioc.bind<IBuildAgent>(TYPES.IBuildAgent).to(BuildAgent);
|
|
||||||
|
|
||||||
const gitVersionTool = ioc.get<IGitVersionTool>(TYPES.IGitVersionTool);
|
|
||||||
const buildAgent = ioc.get<IBuildAgent>(TYPES.IBuildAgent);
|
|
||||||
|
|
||||||
setup(buildAgent, gitVersionTool);
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": "../tsconfig.json"
|
|
||||||
}
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
export interface IVersionManager {
|
|
||||||
isExplicitVersion(versionSpec: string): boolean;
|
|
||||||
evaluateVersions(versions: string[], versionSpec: string): string;
|
|
||||||
cleanVersion(version: string): string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface IBuildAgent {
|
|
||||||
find(toolName: string, versionSpec: string, arch?: string): string;
|
|
||||||
cacheDir(sourceDir: string, tool: string, version: string, arch?: string): Promise<string>;
|
|
||||||
createTempDir(): Promise<string>;
|
|
||||||
debug(message: string): void;
|
|
||||||
setFailed(message: string, done?: boolean): void;
|
|
||||||
setSucceeded(message: string, done?: boolean): void;
|
|
||||||
exportVariable(name: string, val: string): void;
|
|
||||||
getVariable(name: string): string;
|
|
||||||
addPath(inputPath: string): void;
|
|
||||||
which(tool: string, check?: boolean): Promise<string>;
|
|
||||||
exec(exec: string, args: string[]): Promise<IExecResult>;
|
|
||||||
|
|
||||||
getSourceDir(): string;
|
|
||||||
isValidInputFile(input: string, file: string): boolean;
|
|
||||||
fileExists(file: string): boolean;
|
|
||||||
directoryExists(file: string): boolean;
|
|
||||||
|
|
||||||
setOutput(name: string, value: string): void;
|
|
||||||
getInput(input: string, required?: boolean): string;
|
|
||||||
getBooleanInput(input: string, required?: boolean): boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface IDotnetTool {
|
|
||||||
run(args: string[]): Promise<IExecResult>;
|
|
||||||
toolInstall(toolName: string, versionSpec: string, checkLatest: boolean, includePre: boolean): Promise<string>;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Argument {
|
|
||||||
constructor(public readonly name: string, public readonly value: string) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
export interface IGitVersionTool {
|
|
||||||
install(versionSpec: string, includePrerelease: boolean): Promise<void>;
|
|
||||||
run(options: IGitVersionOptions): Promise<IExecResult>;
|
|
||||||
}
|
|
||||||
export interface IExecResult {
|
|
||||||
stdout: string;
|
|
||||||
stderr: string;
|
|
||||||
code: number;
|
|
||||||
error: Error;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface IGitVersionOptions {
|
|
||||||
targetPath: string;
|
|
||||||
useConfigFile: boolean;
|
|
||||||
configFilePath: string;
|
|
||||||
updateAssemblyInfo: boolean;
|
|
||||||
updateAssemblyInfoFilename: string;
|
|
||||||
additionalArguments: string;
|
|
||||||
srcDir: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface IGitVersion {
|
|
||||||
Major: number;
|
|
||||||
Minor: number;
|
|
||||||
Patch: number;
|
|
||||||
PreReleaseTag: string;
|
|
||||||
PreReleaseTagWithDash: string;
|
|
||||||
PreReleaseLabel: string;
|
|
||||||
PreReleaseNumber: number;
|
|
||||||
WeightedPreReleaseNumber: number;
|
|
||||||
BuildMetaData: number;
|
|
||||||
BuildMetaDataPadded: string;
|
|
||||||
FullBuildMetaData: string;
|
|
||||||
MajorMinorPatch: string;
|
|
||||||
SemVer: string;
|
|
||||||
LegacySemVer: string;
|
|
||||||
LegacySemVerPadded: string;
|
|
||||||
AssemblySemVer: string;
|
|
||||||
AssemblySemFileVer: string;
|
|
||||||
FullSemVer: string;
|
|
||||||
InformationalVersion: string;
|
|
||||||
BranchName: string;
|
|
||||||
Sha: string;
|
|
||||||
ShortSha: string;
|
|
||||||
NuGetVersionV2: string;
|
|
||||||
NuGetVersion: string;
|
|
||||||
NuGetPreReleaseTagV2: string;
|
|
||||||
NuGetPreReleaseTag: string;
|
|
||||||
VersionSourceSha: string;
|
|
||||||
CommitsSinceVersionSource: number;
|
|
||||||
CommitsSinceVersionSourcePadded: string;
|
|
||||||
CommitDate: string;
|
|
||||||
}
|
|
||||||
13
src/ioc.ts
@@ -1,13 +0,0 @@
|
|||||||
import { Container } from "inversify";
|
|
||||||
|
|
||||||
import { DotnetTool, GitVersionTool, VersionManager } from "./common";
|
|
||||||
import { IDotnetTool, IGitVersionTool, IVersionManager } from "./interfaces";
|
|
||||||
import { TYPES } from "./types";
|
|
||||||
|
|
||||||
const ioc = new Container();
|
|
||||||
|
|
||||||
ioc.bind<IVersionManager>(TYPES.IVersionManager).to(VersionManager);
|
|
||||||
ioc.bind<IDotnetTool>(TYPES.IDotnetTool).to(DotnetTool);
|
|
||||||
ioc.bind<IGitVersionTool>(TYPES.IGitVersionTool).to(GitVersionTool);
|
|
||||||
|
|
||||||
export { ioc };
|
|
||||||
99
src/main.ts
@@ -1,99 +0,0 @@
|
|||||||
import { IBuildAgent, IGitVersion, IGitVersionOptions, IGitVersionTool } from "./interfaces";
|
|
||||||
|
|
||||||
import { RunOptions, SetupOptions } from "./types";
|
|
||||||
|
|
||||||
export async function setup(buildAgent: IBuildAgent, gitVersionTool: IGitVersionTool) {
|
|
||||||
try {
|
|
||||||
|
|
||||||
buildAgent.exportVariable("DOTNET_CLI_TELEMETRY_OPTOUT", "1");
|
|
||||||
|
|
||||||
const versionSpec = buildAgent.getInput(SetupOptions.versionSpec);
|
|
||||||
const includePrerelease = buildAgent.getBooleanInput(SetupOptions.includePrerelease);
|
|
||||||
|
|
||||||
await gitVersionTool.install(versionSpec, includePrerelease);
|
|
||||||
|
|
||||||
buildAgent.setSucceeded("GitVersion installed successfully", true);
|
|
||||||
} catch (error) {
|
|
||||||
buildAgent.setFailed(error.message, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function run(buildAgent: IBuildAgent, gitVersionTool: IGitVersionTool) {
|
|
||||||
try {
|
|
||||||
const inputOptions: IGitVersionOptions = getGitVersionOptions(buildAgent);
|
|
||||||
|
|
||||||
const result = await gitVersionTool.run(inputOptions);
|
|
||||||
|
|
||||||
const gitversion = JSON.parse(result.stdout) as IGitVersion;
|
|
||||||
writeGitVersionToAgent(buildAgent, gitversion);
|
|
||||||
|
|
||||||
if (result.code === 0) {
|
|
||||||
buildAgent.setSucceeded("GitVersion executed successfully", true);
|
|
||||||
} else {
|
|
||||||
buildAgent.setFailed(result.error.message, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (error) {
|
|
||||||
buildAgent.setFailed(error, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getGitVersionOptions(buildAgent: IBuildAgent): IGitVersionOptions {
|
|
||||||
|
|
||||||
const targetPath = buildAgent.getInput(RunOptions.targetPath);
|
|
||||||
|
|
||||||
const useConfigFile = buildAgent.getBooleanInput(RunOptions.useConfigFile);
|
|
||||||
const configFilePath = buildAgent.getInput(RunOptions.configFilePath);
|
|
||||||
|
|
||||||
const updateAssemblyInfo = buildAgent.getBooleanInput(RunOptions.updateAssemblyInfo);
|
|
||||||
const updateAssemblyInfoFilename = buildAgent.getInput(RunOptions.updateAssemblyInfoFilename);
|
|
||||||
|
|
||||||
const additionalArguments = buildAgent.getInput(RunOptions.additionalArguments);
|
|
||||||
|
|
||||||
const srcDir = buildAgent.getSourceDir().replace(/\\/g, "/");
|
|
||||||
|
|
||||||
return {
|
|
||||||
targetPath,
|
|
||||||
useConfigFile,
|
|
||||||
configFilePath,
|
|
||||||
updateAssemblyInfo,
|
|
||||||
updateAssemblyInfoFilename,
|
|
||||||
additionalArguments,
|
|
||||||
srcDir,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function writeGitVersionToAgent(buildAgent: IBuildAgent, gitversion: IGitVersion): void {
|
|
||||||
|
|
||||||
buildAgent.setOutput("major", gitversion.Major.toString());
|
|
||||||
buildAgent.setOutput("minor", gitversion.Minor.toString());
|
|
||||||
buildAgent.setOutput("patch", gitversion.Patch.toString());
|
|
||||||
buildAgent.setOutput("preReleaseTag", gitversion.PreReleaseTag);
|
|
||||||
buildAgent.setOutput("preReleaseTagWithDash", gitversion.PreReleaseTagWithDash);
|
|
||||||
buildAgent.setOutput("preReleaseLabel", gitversion.PreReleaseLabel);
|
|
||||||
buildAgent.setOutput("preReleaseNumber", gitversion.PreReleaseNumber.toString());
|
|
||||||
buildAgent.setOutput("weightedPreReleaseNumber", gitversion.WeightedPreReleaseNumber.toString());
|
|
||||||
buildAgent.setOutput("buildMetaData", gitversion.BuildMetaData.toString());
|
|
||||||
buildAgent.setOutput("buildMetaDataPadded", gitversion.BuildMetaDataPadded);
|
|
||||||
buildAgent.setOutput("fullBuildMetaData", gitversion.FullBuildMetaData);
|
|
||||||
buildAgent.setOutput("majorMinorPatch", gitversion.MajorMinorPatch);
|
|
||||||
buildAgent.setOutput("semVer", gitversion.SemVer);
|
|
||||||
buildAgent.setOutput("legacySemVer", gitversion.LegacySemVer);
|
|
||||||
buildAgent.setOutput("legacySemVerPadded", gitversion.LegacySemVerPadded);
|
|
||||||
buildAgent.setOutput("assemblySemVer", gitversion.AssemblySemVer);
|
|
||||||
buildAgent.setOutput("assemblySemFileVer", gitversion.AssemblySemFileVer);
|
|
||||||
buildAgent.setOutput("fullSemVer", gitversion.FullSemVer);
|
|
||||||
buildAgent.setOutput("informationalVersion", gitversion.InformationalVersion);
|
|
||||||
buildAgent.setOutput("branchName", gitversion.BranchName);
|
|
||||||
buildAgent.setOutput("sha", gitversion.Sha);
|
|
||||||
buildAgent.setOutput("shortSha", gitversion.ShortSha);
|
|
||||||
buildAgent.setOutput("nuGetVersionV2", gitversion.NuGetVersionV2);
|
|
||||||
buildAgent.setOutput("nuGetVersion", gitversion.NuGetVersion);
|
|
||||||
buildAgent.setOutput("nuGetPreReleaseTagV2", gitversion.NuGetPreReleaseTagV2);
|
|
||||||
buildAgent.setOutput("nuGetPreReleaseTag", gitversion.NuGetPreReleaseTag);
|
|
||||||
buildAgent.setOutput("versionSourceSha", gitversion.VersionSourceSha);
|
|
||||||
buildAgent.setOutput("commitsSinceVersionSource", gitversion.CommitsSinceVersionSource.toString());
|
|
||||||
buildAgent.setOutput("commitsSinceVersionSourcePadded", gitversion.CommitsSinceVersionSourcePadded);
|
|
||||||
buildAgent.setOutput("commitDate", gitversion.CommitDate);
|
|
||||||
|
|
||||||
}
|
|
||||||
4
src/tasks/gitreleasemanager/create.ts
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
import "reflect-metadata";
|
||||||
|
import { create } from "./main";
|
||||||
|
|
||||||
|
create();
|
||||||
4
src/tasks/gitreleasemanager/discard.ts
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
import "reflect-metadata";
|
||||||
|
import { discard } from "./main";
|
||||||
|
|
||||||
|
discard();
|
||||||
56
src/tasks/gitreleasemanager/main.ts
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
import { IBuildAgent, TYPES, SetupFields } from "../../core/models";
|
||||||
|
import { IGitReleaseManagerTool, GitReleaseManagerTool } from "../../tools/gitreleasemanager/tool";
|
||||||
|
import { Settings as CommonSettings } from "../../core/settings";
|
||||||
|
import { Settings } from "../../tools/gitreleasemanager/settings";
|
||||||
|
|
||||||
|
import container from "../../core/ioc";
|
||||||
|
|
||||||
|
container.bind<IGitReleaseManagerTool>(TYPES.IGitReleaseManagerTool).to(GitReleaseManagerTool);
|
||||||
|
|
||||||
|
const gitReleaseManagerTool = container.get<IGitReleaseManagerTool>(TYPES.IGitReleaseManagerTool);
|
||||||
|
const buildAgent = container.get<IBuildAgent>(TYPES.IBuildAgent);
|
||||||
|
|
||||||
|
export async function setup() {
|
||||||
|
try {
|
||||||
|
|
||||||
|
gitReleaseManagerTool.disableTelemetry();
|
||||||
|
|
||||||
|
const settings = CommonSettings.getSetupSettings(buildAgent);
|
||||||
|
|
||||||
|
await gitReleaseManagerTool.install(settings.versionSpec, settings.includePrerelease);
|
||||||
|
|
||||||
|
buildAgent.setSucceeded("GitVersionManager installed successfully", true);
|
||||||
|
} catch (error) {
|
||||||
|
buildAgent.setFailed(error.message, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function create() {
|
||||||
|
try {
|
||||||
|
|
||||||
|
gitReleaseManagerTool.disableTelemetry();
|
||||||
|
|
||||||
|
const settings = Settings.getCreateSettings(buildAgent);
|
||||||
|
|
||||||
|
await gitReleaseManagerTool.create(settings);
|
||||||
|
|
||||||
|
buildAgent.setSucceeded("GitVersionManager created release successfully", true);
|
||||||
|
} catch (error) {
|
||||||
|
buildAgent.setFailed(error.message, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function discard() {
|
||||||
|
try {
|
||||||
|
|
||||||
|
gitReleaseManagerTool.disableTelemetry();
|
||||||
|
|
||||||
|
const settings = Settings.getDiscardSettings(buildAgent);
|
||||||
|
|
||||||
|
await gitReleaseManagerTool.discard(settings);
|
||||||
|
|
||||||
|
buildAgent.setSucceeded("GitVersionManager discarded release successfully", true);
|
||||||
|
} catch (error) {
|
||||||
|
buildAgent.setFailed(error.message, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
4
src/tasks/gitreleasemanager/setup.ts
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
import "reflect-metadata";
|
||||||
|
import { setup } from "./main";
|
||||||
|
|
||||||
|
setup();
|
||||||
4
src/tasks/gitversion/execute.ts
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
import "reflect-metadata";
|
||||||
|
import { run } from "./main";
|
||||||
|
|
||||||
|
run();
|
||||||
50
src/tasks/gitversion/main.ts
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
import { IBuildAgent, TYPES, SetupFields } from "../../core/models";
|
||||||
|
import { Settings as CommonSettings } from "../../core/settings";
|
||||||
|
import { Settings } from "../../tools/gitversion/settings";
|
||||||
|
import { IGitVersionTool, GitVersionTool } from "../../tools/gitversion/tool";
|
||||||
|
import { GitVersionSettings, GitVersionOutput } from "../../tools/gitversion/models";
|
||||||
|
|
||||||
|
import container from "../../core/ioc";
|
||||||
|
|
||||||
|
container.bind<IGitVersionTool>(TYPES.IGitVersionTool).to(GitVersionTool);
|
||||||
|
|
||||||
|
const gitVersionTool = container.get<IGitVersionTool>(TYPES.IGitVersionTool);
|
||||||
|
const buildAgent = container.get<IBuildAgent>(TYPES.IBuildAgent);
|
||||||
|
|
||||||
|
export async function setup() {
|
||||||
|
try {
|
||||||
|
|
||||||
|
gitVersionTool.disableTelemetry();
|
||||||
|
|
||||||
|
const settings = CommonSettings.getSetupSettings(buildAgent);
|
||||||
|
|
||||||
|
await gitVersionTool.install(settings.versionSpec, settings.includePrerelease);
|
||||||
|
|
||||||
|
buildAgent.setSucceeded("GitVersion installed successfully", true);
|
||||||
|
} catch (error) {
|
||||||
|
buildAgent.setFailed(error.message, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function run() {
|
||||||
|
try {
|
||||||
|
|
||||||
|
gitVersionTool.disableTelemetry();
|
||||||
|
|
||||||
|
const settings: GitVersionSettings = Settings.getGitVersionSettings(buildAgent);
|
||||||
|
|
||||||
|
const result = await gitVersionTool.run(settings);
|
||||||
|
|
||||||
|
const gitversion = JSON.parse(result.stdout) as GitVersionOutput;
|
||||||
|
gitVersionTool.writeGitVersionToAgent(gitversion);
|
||||||
|
|
||||||
|
if (result.code === 0) {
|
||||||
|
buildAgent.setSucceeded("GitVersion executed successfully", true);
|
||||||
|
} else {
|
||||||
|
buildAgent.setFailed(result.error.message, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
buildAgent.setFailed(error, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
4
src/tasks/gitversion/setup.ts
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
import "reflect-metadata";
|
||||||
|
import { setup } from "./main";
|
||||||
|
|
||||||
|
setup();
|
||||||
41
src/tools/gitreleasemanager/models.ts
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
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 enum DiscardFields {
|
||||||
|
milestone = "milestone",
|
||||||
|
targetDirectory = "targetDirectory",
|
||||||
|
}
|
||||||
|
|
||||||
|
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[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface GitReleaseManagerDiscardSettings extends GitReleaseManagerSettings {
|
||||||
|
[DiscardFields.milestone]: string;
|
||||||
|
[DiscardFields.targetDirectory]: string;
|
||||||
|
}
|
||||||
51
src/tools/gitreleasemanager/settings.ts
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
import { IBuildAgent } from "../../core/models";
|
||||||
|
import { GitReleaseManagerSettings, CommonFields, CreateFields, GitReleaseManagerCreateSettings, DiscardFields, GitReleaseManagerDiscardSettings } from "./models";
|
||||||
|
|
||||||
|
export class Settings {
|
||||||
|
|
||||||
|
public static getCreateSettings(buildAgent: IBuildAgent) : GitReleaseManagerCreateSettings {
|
||||||
|
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 assets = buildAgent.getListInput(CreateFields.assets);
|
||||||
|
|
||||||
|
const commonSettings = Settings.getCommonSettings(buildAgent);
|
||||||
|
return {
|
||||||
|
...commonSettings,
|
||||||
|
milestone,
|
||||||
|
releaseName,
|
||||||
|
inputFileName,
|
||||||
|
isPreRelease,
|
||||||
|
commit,
|
||||||
|
targetDirectory,
|
||||||
|
assets
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static getDiscardSettings(buildAgent: IBuildAgent) : GitReleaseManagerDiscardSettings {
|
||||||
|
const milestone = buildAgent.getInput(DiscardFields.milestone);
|
||||||
|
const targetDirectory = buildAgent.getInput(CreateFields.targetDirectory);
|
||||||
|
|
||||||
|
const commonSettings = Settings.getCommonSettings(buildAgent);
|
||||||
|
return {
|
||||||
|
...commonSettings,
|
||||||
|
milestone,
|
||||||
|
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
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
121
src/tools/gitreleasemanager/tool.ts
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
import path = require("path");
|
||||||
|
|
||||||
|
import { TYPES, IBuildAgent, IExecResult } from "../../core/models";
|
||||||
|
import { injectable, inject } from "inversify";
|
||||||
|
import { DotnetTool, IDotnetTool } from "../../core/dotnet-tool";
|
||||||
|
import { IVersionManager } from "../../core/versionManager";
|
||||||
|
|
||||||
|
import {
|
||||||
|
GitReleaseManagerSettings,
|
||||||
|
GitReleaseManagerCreateSettings,
|
||||||
|
GitReleaseManagerDiscardSettings
|
||||||
|
} from "./models";
|
||||||
|
|
||||||
|
export interface IGitReleaseManagerTool extends IDotnetTool {
|
||||||
|
install(versionSpec: string, includePrerelease: boolean): Promise<void>;
|
||||||
|
create(settings: GitReleaseManagerCreateSettings): Promise<IExecResult>;
|
||||||
|
discard(settings: GitReleaseManagerDiscardSettings): Promise<IExecResult>;
|
||||||
|
}
|
||||||
|
|
||||||
|
@injectable()
|
||||||
|
export class GitReleaseManagerTool extends DotnetTool implements IGitReleaseManagerTool {
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
@inject(TYPES.IBuildAgent) buildAgent: IBuildAgent,
|
||||||
|
@inject(TYPES.IVersionManager) versionManager: IVersionManager
|
||||||
|
) {
|
||||||
|
super(buildAgent, versionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async install(versionSpec: string, includePrerelease: boolean): Promise<void> {
|
||||||
|
await this.toolInstall("GitReleaseManager.Tool", versionSpec, false, includePrerelease);
|
||||||
|
}
|
||||||
|
|
||||||
|
public create(settings: GitReleaseManagerCreateSettings): Promise<IExecResult> {
|
||||||
|
const args = this.getCreateArguments(settings);
|
||||||
|
|
||||||
|
return this.execute("dotnet-gitreleasemanager", args);
|
||||||
|
}
|
||||||
|
|
||||||
|
public discard(settings: GitReleaseManagerDiscardSettings): Promise<IExecResult> {
|
||||||
|
const args = this.getDiscardArguments(settings);
|
||||||
|
|
||||||
|
return this.execute("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;
|
||||||
|
}
|
||||||
|
|
||||||
|
getDiscardArguments(settings: GitReleaseManagerDiscardSettings): string[] {
|
||||||
|
const args: string[] = ['discard', ...this.getCommonArguments(settings)];
|
||||||
|
|
||||||
|
if (settings.milestone) {
|
||||||
|
args.push("--milestone", settings.milestone);
|
||||||
|
}
|
||||||
|
settings.targetDirectory = this.getRepoDir(settings.targetDirectory);
|
||||||
|
|
||||||
|
args.push("--targetDirectory", settings.targetDirectory);
|
||||||
|
|
||||||
|
return args;
|
||||||
|
}
|
||||||
|
|
||||||
|
getCreateArguments(settings: GitReleaseManagerCreateSettings): string[] {
|
||||||
|
const args: string[] = ['create', ...this.getCommonArguments(settings)];
|
||||||
|
|
||||||
|
if (settings.milestone) {
|
||||||
|
args.push("--milestone", settings.milestone);
|
||||||
|
}
|
||||||
|
if (settings.releaseName) {
|
||||||
|
args.push("--name", settings.releaseName);
|
||||||
|
}
|
||||||
|
if (settings.commit) {
|
||||||
|
args.push("--targetcommitish", settings.commit);
|
||||||
|
}
|
||||||
|
|
||||||
|
settings.targetDirectory = this.getRepoDir(settings.targetDirectory);
|
||||||
|
|
||||||
|
args.push("--targetDirectory", settings.targetDirectory);
|
||||||
|
|
||||||
|
if (settings.inputFileName) {
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
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();
|
||||||
|
if (!targetPath) {
|
||||||
|
workDir = srcDir;
|
||||||
|
} else {
|
||||||
|
if (this.buildAgent.directoryExists(targetPath)) {
|
||||||
|
workDir = path.join(srcDir, targetPath);
|
||||||
|
} else {
|
||||||
|
throw new Error("Directory not found at " + targetPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return workDir.replace(/\\/g, "/");
|
||||||
|
}
|
||||||
|
}
|
||||||
52
src/tools/gitversion/models.ts
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
export enum ExecuteFields {
|
||||||
|
targetPath = "targetPath",
|
||||||
|
useConfigFile = "useConfigFile",
|
||||||
|
configFilePath = "configFilePath",
|
||||||
|
updateAssemblyInfo = "updateAssemblyInfo",
|
||||||
|
updateAssemblyInfoFilename = "updateAssemblyInfoFilename",
|
||||||
|
additionalArguments = "additionalArguments",
|
||||||
|
srcDir = "srcDir",
|
||||||
|
};
|
||||||
|
|
||||||
|
export interface GitVersionSettings {
|
||||||
|
[ExecuteFields.targetPath]: string;
|
||||||
|
[ExecuteFields.useConfigFile]: boolean;
|
||||||
|
[ExecuteFields.configFilePath]: string;
|
||||||
|
[ExecuteFields.updateAssemblyInfo]: boolean;
|
||||||
|
[ExecuteFields.updateAssemblyInfoFilename]: string;
|
||||||
|
[ExecuteFields.additionalArguments]: string;
|
||||||
|
[ExecuteFields.srcDir]: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface GitVersionOutput {
|
||||||
|
Major: number;
|
||||||
|
Minor: number;
|
||||||
|
Patch: number;
|
||||||
|
PreReleaseTag: string;
|
||||||
|
PreReleaseTagWithDash: string;
|
||||||
|
PreReleaseLabel: string;
|
||||||
|
PreReleaseNumber: number;
|
||||||
|
WeightedPreReleaseNumber: number;
|
||||||
|
BuildMetaData: number;
|
||||||
|
BuildMetaDataPadded: string;
|
||||||
|
FullBuildMetaData: string;
|
||||||
|
MajorMinorPatch: string;
|
||||||
|
SemVer: string;
|
||||||
|
LegacySemVer: string;
|
||||||
|
LegacySemVerPadded: string;
|
||||||
|
AssemblySemVer: string;
|
||||||
|
AssemblySemFileVer: string;
|
||||||
|
FullSemVer: string;
|
||||||
|
InformationalVersion: string;
|
||||||
|
BranchName: string;
|
||||||
|
Sha: string;
|
||||||
|
ShortSha: string;
|
||||||
|
NuGetVersionV2: string;
|
||||||
|
NuGetVersion: string;
|
||||||
|
NuGetPreReleaseTagV2: string;
|
||||||
|
NuGetPreReleaseTag: string;
|
||||||
|
VersionSourceSha: string;
|
||||||
|
CommitsSinceVersionSource: number;
|
||||||
|
CommitsSinceVersionSourcePadded: string;
|
||||||
|
CommitDate: string;
|
||||||
|
}
|
||||||
30
src/tools/gitversion/settings.ts
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
import { IBuildAgent } from "../../core/models";
|
||||||
|
|
||||||
|
import { GitVersionSettings, ExecuteFields } from "./models";
|
||||||
|
|
||||||
|
export class Settings {
|
||||||
|
|
||||||
|
public static getGitVersionSettings(buildAgent: IBuildAgent): GitVersionSettings {
|
||||||
|
const targetPath = buildAgent.getInput(ExecuteFields.targetPath);
|
||||||
|
|
||||||
|
const useConfigFile = buildAgent.getBooleanInput(ExecuteFields.useConfigFile);
|
||||||
|
const configFilePath = buildAgent.getInput(ExecuteFields.configFilePath);
|
||||||
|
|
||||||
|
const updateAssemblyInfo = buildAgent.getBooleanInput(ExecuteFields.updateAssemblyInfo);
|
||||||
|
const updateAssemblyInfoFilename = buildAgent.getInput(ExecuteFields.updateAssemblyInfoFilename);
|
||||||
|
|
||||||
|
const additionalArguments = buildAgent.getInput(ExecuteFields.additionalArguments);
|
||||||
|
|
||||||
|
const srcDir = buildAgent.getSourceDir().replace(/\\/g, "/");
|
||||||
|
|
||||||
|
return {
|
||||||
|
targetPath,
|
||||||
|
useConfigFile,
|
||||||
|
configFilePath,
|
||||||
|
updateAssemblyInfo,
|
||||||
|
updateAssemblyInfoFilename,
|
||||||
|
additionalArguments,
|
||||||
|
srcDir,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
120
src/tools/gitversion/tool.ts
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
import path = require("path");
|
||||||
|
|
||||||
|
import { injectable, inject } from "inversify";
|
||||||
|
import { IExecResult, IBuildAgent, TYPES } from "../../core/models";
|
||||||
|
import { DotnetTool, IDotnetTool } from "../../core/dotnet-tool";
|
||||||
|
import { GitVersionSettings, GitVersionOutput, ExecuteFields } from "./models";
|
||||||
|
import { IVersionManager } from "../../core/versionManager";
|
||||||
|
|
||||||
|
export interface IGitVersionTool extends IDotnetTool {
|
||||||
|
install(versionSpec: string, includePrerelease: boolean): Promise<void>;
|
||||||
|
run(options: GitVersionSettings): Promise<IExecResult>;
|
||||||
|
writeGitVersionToAgent(gitversion: GitVersionOutput): void;
|
||||||
|
}
|
||||||
|
|
||||||
|
@injectable()
|
||||||
|
export class GitVersionTool extends DotnetTool implements IGitVersionTool {
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
@inject(TYPES.IBuildAgent) buildAgent: IBuildAgent,
|
||||||
|
@inject(TYPES.IVersionManager) versionManager: IVersionManager
|
||||||
|
) {
|
||||||
|
super(buildAgent, versionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async install(versionSpec: string, includePrerelease: boolean): Promise<void> {
|
||||||
|
await this.toolInstall("GitVersion.Tool", versionSpec, false, includePrerelease);
|
||||||
|
}
|
||||||
|
|
||||||
|
public run(options: GitVersionSettings): Promise<IExecResult> {
|
||||||
|
const workDir = this.getRepoDir(options.targetPath);
|
||||||
|
|
||||||
|
const args = this.getArguments(workDir, options);
|
||||||
|
|
||||||
|
return this.execute("dotnet-gitversion", args);
|
||||||
|
}
|
||||||
|
|
||||||
|
private getRepoDir(targetPath: string): string {
|
||||||
|
let workDir: string;
|
||||||
|
const srcDir = this.buildAgent.getSourceDir();
|
||||||
|
if (!targetPath) {
|
||||||
|
workDir = srcDir;
|
||||||
|
} else {
|
||||||
|
if (this.buildAgent.directoryExists(targetPath)) {
|
||||||
|
workDir = path.join(srcDir, targetPath);
|
||||||
|
} else {
|
||||||
|
throw new Error("Directory not found at " + targetPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return workDir.replace(/\\/g, "/");
|
||||||
|
}
|
||||||
|
|
||||||
|
private getArguments(workDir: string, options: GitVersionSettings): string[] {
|
||||||
|
const args = [
|
||||||
|
workDir,
|
||||||
|
"/output",
|
||||||
|
"json", // need to use buildserver later
|
||||||
|
];
|
||||||
|
|
||||||
|
const {
|
||||||
|
useConfigFile,
|
||||||
|
configFilePath,
|
||||||
|
updateAssemblyInfo,
|
||||||
|
updateAssemblyInfoFilename,
|
||||||
|
additionalArguments,
|
||||||
|
} = options;
|
||||||
|
|
||||||
|
if (useConfigFile) {
|
||||||
|
if (this.buildAgent.isValidInputFile("configFilePath", configFilePath)) {
|
||||||
|
args.push("/config", configFilePath);
|
||||||
|
} else {
|
||||||
|
throw new Error("GitVersion configuration file not found at " + configFilePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (updateAssemblyInfo) {
|
||||||
|
args.push("/updateassemblyinfo");
|
||||||
|
if (this.buildAgent.isValidInputFile("updateAssemblyInfoFilename", updateAssemblyInfoFilename)) {
|
||||||
|
args.push(updateAssemblyInfoFilename);
|
||||||
|
} else {
|
||||||
|
throw new Error("AssemblyInfoFilename file not found at " + updateAssemblyInfoFilename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
args.push(additionalArguments);
|
||||||
|
return args;
|
||||||
|
}
|
||||||
|
|
||||||
|
public writeGitVersionToAgent(gitversion: GitVersionOutput): void {
|
||||||
|
|
||||||
|
this.buildAgent.setOutput("major", gitversion.Major.toString());
|
||||||
|
this.buildAgent.setOutput("minor", gitversion.Minor.toString());
|
||||||
|
this.buildAgent.setOutput("patch", gitversion.Patch.toString());
|
||||||
|
this.buildAgent.setOutput("preReleaseTag", gitversion.PreReleaseTag);
|
||||||
|
this.buildAgent.setOutput("preReleaseTagWithDash", gitversion.PreReleaseTagWithDash);
|
||||||
|
this.buildAgent.setOutput("preReleaseLabel", gitversion.PreReleaseLabel);
|
||||||
|
this.buildAgent.setOutput("preReleaseNumber", gitversion.PreReleaseNumber.toString());
|
||||||
|
this.buildAgent.setOutput("weightedPreReleaseNumber", gitversion.WeightedPreReleaseNumber.toString());
|
||||||
|
this.buildAgent.setOutput("buildMetaData", gitversion.BuildMetaData.toString());
|
||||||
|
this.buildAgent.setOutput("buildMetaDataPadded", gitversion.BuildMetaDataPadded);
|
||||||
|
this.buildAgent.setOutput("fullBuildMetaData", gitversion.FullBuildMetaData);
|
||||||
|
this.buildAgent.setOutput("majorMinorPatch", gitversion.MajorMinorPatch);
|
||||||
|
this.buildAgent.setOutput("semVer", gitversion.SemVer);
|
||||||
|
this.buildAgent.setOutput("legacySemVer", gitversion.LegacySemVer);
|
||||||
|
this.buildAgent.setOutput("legacySemVerPadded", gitversion.LegacySemVerPadded);
|
||||||
|
this.buildAgent.setOutput("assemblySemVer", gitversion.AssemblySemVer);
|
||||||
|
this.buildAgent.setOutput("assemblySemFileVer", gitversion.AssemblySemFileVer);
|
||||||
|
this.buildAgent.setOutput("fullSemVer", gitversion.FullSemVer);
|
||||||
|
this.buildAgent.setOutput("informationalVersion", gitversion.InformationalVersion);
|
||||||
|
this.buildAgent.setOutput("branchName", gitversion.BranchName);
|
||||||
|
this.buildAgent.setOutput("sha", gitversion.Sha);
|
||||||
|
this.buildAgent.setOutput("shortSha", gitversion.ShortSha);
|
||||||
|
this.buildAgent.setOutput("nuGetVersionV2", gitversion.NuGetVersionV2);
|
||||||
|
this.buildAgent.setOutput("nuGetVersion", gitversion.NuGetVersion);
|
||||||
|
this.buildAgent.setOutput("nuGetPreReleaseTagV2", gitversion.NuGetPreReleaseTagV2);
|
||||||
|
this.buildAgent.setOutput("nuGetPreReleaseTag", gitversion.NuGetPreReleaseTag);
|
||||||
|
this.buildAgent.setOutput("versionSourceSha", gitversion.VersionSourceSha);
|
||||||
|
this.buildAgent.setOutput("commitsSinceVersionSource", gitversion.CommitsSinceVersionSource.toString());
|
||||||
|
this.buildAgent.setOutput("commitsSinceVersionSourcePadded", gitversion.CommitsSinceVersionSourcePadded);
|
||||||
|
this.buildAgent.setOutput("commitDate", gitversion.CommitDate);
|
||||||
|
}
|
||||||
|
}
|
||||||
25
src/types.ts
@@ -1,25 +0,0 @@
|
|||||||
const TYPES = {
|
|
||||||
IBuildAgent: Symbol.for("BuildAgent"),
|
|
||||||
IDotnetTool: Symbol.for("DotnetTool"),
|
|
||||||
IGitVersionTool: Symbol.for("GitVersionTool"),
|
|
||||||
IVersionManager: Symbol.for("VersionManager"),
|
|
||||||
};
|
|
||||||
|
|
||||||
const SetupOptions = {
|
|
||||||
includePrerelease: "includePrerelease",
|
|
||||||
versionSpec: "versionSpec",
|
|
||||||
};
|
|
||||||
|
|
||||||
const RunOptions = {
|
|
||||||
targetPath: "targetPath",
|
|
||||||
|
|
||||||
useConfigFile: "useConfigFile",
|
|
||||||
configFilePath: "configFilePath",
|
|
||||||
|
|
||||||
updateAssemblyInfo: "configFilePath",
|
|
||||||
updateAssemblyInfoFilename: "configFilePath",
|
|
||||||
|
|
||||||
additionalArguments: "additionalArguments",
|
|
||||||
};
|
|
||||||
|
|
||||||
export { SetupOptions, RunOptions, TYPES };
|
|
||||||
@@ -1,12 +1,13 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"module": "commonjs",
|
"module": "CommonJS",
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
"target": "es2015",
|
"target": "ES2016",
|
||||||
"sourceMap": false,
|
"noImplicitAny": true,
|
||||||
"lib": ["es2015", "dom"],
|
"sourceMap": true,
|
||||||
|
"lib": ["ES2016"],
|
||||||
"types": ["reflect-metadata"],
|
"types": ["reflect-metadata"],
|
||||||
"inlineSourceMap": true,
|
"esModuleInterop":true,
|
||||||
"experimentalDecorators": true,
|
"experimentalDecorators": true,
|
||||||
"emitDecoratorMetadata": true
|
"emitDecoratorMetadata": true
|
||||||
}
|
}
|
||||||
59
webpack.config.js
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
const path = require('path');
|
||||||
|
const webpack = require('webpack');
|
||||||
|
const ReplaceInFileWebpackPlugin = require('replace-in-file-webpack-plugin');
|
||||||
|
|
||||||
|
module.exports = (env) => {
|
||||||
|
const mode = env.mode || 'development';
|
||||||
|
const agent = env.agent || 'mock';
|
||||||
|
|
||||||
|
return {
|
||||||
|
entry: {
|
||||||
|
'gitversion/setup': path.resolve(__dirname, 'src/tasks/gitversion/setup.ts'),
|
||||||
|
'gitversion/execute': path.resolve(__dirname, 'src/tasks/gitversion/execute.ts'),
|
||||||
|
'gitreleasemanager/setup': path.resolve(__dirname, 'src/tasks/gitreleasemanager/setup.ts'),
|
||||||
|
'gitreleasemanager/create': path.resolve(__dirname, 'src/tasks/gitreleasemanager/create.ts'),
|
||||||
|
'gitreleasemanager/discard': path.resolve(__dirname, 'src/tasks/gitreleasemanager/discard.ts'),
|
||||||
|
},
|
||||||
|
target: 'node',
|
||||||
|
mode: mode,
|
||||||
|
devtool: mode == 'development' ? 'inline-source-map' : false,
|
||||||
|
module: {
|
||||||
|
rules: [{
|
||||||
|
test: /\.tsx?$/,
|
||||||
|
use: 'ts-loader',
|
||||||
|
exclude: /node_modules/,
|
||||||
|
}],
|
||||||
|
},
|
||||||
|
resolve: {
|
||||||
|
extensions: ['.tsx', '.ts', '.js', '.json'],
|
||||||
|
},
|
||||||
|
output: {
|
||||||
|
libraryTarget: 'commonjs2',
|
||||||
|
filename: '[name]/bundle.js',
|
||||||
|
path: path.resolve(__dirname, `dist/${agent}`),
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
new webpack.NormalModuleReplacementPlugin(
|
||||||
|
/agent\/mock\/build-agent/,
|
||||||
|
`../agent/${agent}/build-agent`
|
||||||
|
),
|
||||||
|
new ReplaceInFileWebpackPlugin([{
|
||||||
|
dir: `dist/${agent}`,
|
||||||
|
test: /bundle.js/,
|
||||||
|
rules: [{
|
||||||
|
search: /__webpack_require__\(.*\)\(resourceFile\)/,
|
||||||
|
replace: 'require(resourceFile)'
|
||||||
|
}, {
|
||||||
|
search: /call\(this, \"\/\"\)\)/gi,
|
||||||
|
replace: "call(this, __dirname))"
|
||||||
|
}, {
|
||||||
|
search: /let pkg.*'package.json'\)\);/,
|
||||||
|
replace: ''
|
||||||
|
}, {
|
||||||
|
search: /let userAgent = 'vsts-task-installer\/' \+ pkg.version;/,
|
||||||
|
replace: "let userAgent = 'vsts-task-installer'"
|
||||||
|
}]
|
||||||
|
}])
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
||||||