Compare commits

..

31 Commits

Author SHA1 Message Date
Brian Cristante
424fc82d43 Merge pull request #179 from oscard0m/add-cache-to-node-workflows
ci(workflow): add 'npm' cache for actions/setup-node in .github/workflows
2021-12-20 15:07:26 -05:00
Oscar Dominguez
82388ea9d4 ci(workflow): add 'npm' cache for actions/setup-node in .github/workflows 2021-12-20 17:24:01 +01:00
Dominik Honnef
fdeec47002 Don't require relative paths to start with ./ or ../ (#98) 2021-12-17 18:47:05 +03:00
Sergey-Murtazin
3e9d5483e6 Add semver note to documentation (#164) 2021-12-01 14:10:32 +03:00
Masahiro Furudate
02f7ea9f09 Fix yaml indent (#59) 2021-11-08 13:28:08 +03:00
Sergey-Murtazin
5805cf725b Add issue and pull request templates (#163) 2021-10-20 12:15:51 +03:00
MaksimZhukov
35030c1fd2 Merge pull request #162 from dmitry-shibanov/v-dmshib/update-dependencies
Update dependencies
2021-10-14 13:06:56 +03:00
Dmitry Shibanov
59d644db2a update dependencies 2021-10-13 18:48:38 +03:00
Josh Gross
76929df236 Merge pull request #147 from brcrista/brcrista/check-dist
Create check-dist.yml
2021-08-31 12:05:50 -04:00
Josh Gross
b06835a88c Merge pull request #155 from brcrista/brcrista/npm-audit-fix
Fix `npm audit` issues
2021-08-31 12:05:05 -04:00
Brian Cristante
b8a24202e2 Update Jest 2021-08-31 10:44:51 -04:00
Brian Cristante
e234d99c78 Run npm audit fix 2021-08-31 09:35:58 -04:00
Josh Gross
0ea1f64ec9 Merge pull request #87 from ineiti/patch-1
Reference latest setup-go
2021-08-30 17:57:13 -04:00
Josh Gross
331ce1d993 Merge pull request #141 from paulcacheux/fix-windows-extractor-selection
Fix extractor selection on windows
2021-08-25 11:43:04 -04:00
Josh Gross
1087a81afd Merge pull request #146 from actions/joshmgross/add-release-workflow
Add release action version workflow
2021-08-25 11:41:46 -04:00
Josh Gross
ecd878f81d Add release action version workflow 2021-08-25 11:38:05 -04:00
Brian Cristante
eca066937b Fix triggers in licensed.yml 2021-08-25 11:29:44 -04:00
Brian Cristante
e816064dae Add check-dist.yml 2021-08-25 11:29:44 -04:00
Paul Cacheux
bba6fe1d58 Fix extractor selection on windows 2021-08-19 21:32:02 +02:00
Josh Gross
3b4dc6cbed Merge pull request #90 from actions/joshmgross/add-codeowners
Add CODEOWNERS
2020-12-09 11:22:47 -05:00
Josh Gross
afe68ffd57 Add CODEOWNERS 2020-12-07 15:56:41 -05:00
Linus Gasser
6eb700292f Reference latest setup-go 2020-11-27 08:11:50 +01:00
Thomas Boop
37335c7bb2 Swap to Environment Files (#76)
* Swap to env files
2020-10-01 10:45:00 -04:00
Thomas Boop
7ff6287c80 Merge pull request #70 from thboop/main
Add `Licensed` To Help Verify Prod Licenses
2020-09-10 09:23:38 -04:00
Thomas Boop
084110f6ed Ignore Generated Files in Git PR's 2020-08-26 11:22:18 -04:00
Thomas Boop
4047b11da0 Manually review dependencies 2020-08-11 20:55:26 -04:00
Thomas Boop
23a9878ae4 Add Licensed workflow and configuration files 2020-08-11 20:55:11 -04:00
Thomas Boop
8a3a76c217 Merge pull request #69 from actions/thboop/AddThirdPartyLicenses
Add Third Party License Information to Dist Files
2020-08-11 14:26:32 -04:00
Thomas Boop
a01ab08f9a Add Third Party License Information 2020-08-06 19:13:07 -04:00
Bryan MacFarlane
33cbf07c96 workflow main references 2020-07-22 08:04:56 -04:00
Bryan MacFarlane
8e98458ff1 updating matrix in readme 2020-07-22 07:52:29 -04:00
27 changed files with 1649 additions and 5959 deletions

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
.licenses/** -diff linguist-generated=true

38
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,38 @@
---
name: Bug report
about: Create a bug report
title: ''
labels: bug, needs triage
assignees: ''
---
<!--- Please direct any generic questions related to actions to our support community forum at https://github.community/c/code-to-cloud/github-actions/41 --->
<!--- Before opening up a new bug report, please make sure to check for similar existing issues -->
**Description:**
A clear and concise description of what the bug is.
**Action version:**
Specify the action version
**Platform:**
- [ ] Ubuntu
- [ ] macOS
- [ ] Windows
**Runner type:**
- [ ] Hosted
- [ ] Self-hosted
**Tools version:**
<!--- Please specify go version -->
**Repro steps:**
A description with steps to reproduce the issue. If your have a public example or repo to share, please provide the link.
**Expected behavior:**
A description of what you expected to happen.
**Actual behavior:**
A description of what is actually happening.

1
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1 @@
blank_issues_enabled: false

View File

@@ -0,0 +1,18 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: feature request, needs triage
assignees: ''
---
<!--- Please direct any generic questions related to actions to our support community forum at https://github.community/c/code-to-cloud/github-actions/41 --->
<!--- Before opening up a new feature request, please make sure to check for similar existing issues and pull requests -->
**Description:**
Describe your proposal.
**Justification:**
Justification or a use case for your proposal.
**Are you willing to submit a PR?**
<!--- We accept contributions! -->

9
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,9 @@
**Description:**
Describe your changes.
**Related issue:**
Add link to the related issue.
**Check list:**
- [ ] Mark if documentation changes are required.
- [ ] Mark if tests were added or updated to cover the changes.

51
.github/workflows/check-dist.yml vendored Normal file
View File

@@ -0,0 +1,51 @@
# `dist/index.js` is a special file in Actions.
# When you reference an action with `uses:` in a workflow,
# `index.js` is the code that will run.
# For our project, we generate this file through a build process from other source files.
# We need to make sure the checked-in `index.js` actually matches what we expect it to be.
name: Check dist/
on:
push:
branches:
- main
paths-ignore:
- '**.md'
pull_request:
paths-ignore:
- '**.md'
workflow_dispatch:
jobs:
check-dist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set Node.js 12.x
uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Install dependencies
run: npm ci
- name: Rebuild the dist/ directory
run: npm run build
- name: Compare the expected and actual dist/ directories
run: |
if [ "$(git diff --ignore-space-at-eol dist/ | wc -l)" -gt "0" ]; then
echo "Detected uncommitted changes after build. See status below:"
git diff
exit 1
fi
id: diff
# If index.js was different than expected, upload the expected version as an artifact
- uses: actions/upload-artifact@v2
if: ${{ failure() && steps.diff.conclusion == 'failure' }}
with:
name: dist
path: dist/

24
.github/workflows/licensed.yml vendored Normal file
View File

@@ -0,0 +1,24 @@
name: Licensed
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
name: Check licenses
steps:
- uses: actions/checkout@v2
- run: npm ci
- name: Install licensed
run: |
cd $RUNNER_TEMP
curl -Lfs -o licensed.tar.gz https://github.com/github/licensed/releases/download/2.12.2/licensed-2.12.2-linux-x64.tar.gz
sudo tar -xzf licensed.tar.gz
sudo mv licensed /usr/local/bin/licensed
- run: licensed status

View File

@@ -0,0 +1,27 @@
name: Release new action version
on:
release:
types: [released]
workflow_dispatch:
inputs:
TAG_NAME:
description: 'Tag name that the major tag will point to'
required: true
env:
TAG_NAME: ${{ github.event.inputs.TAG_NAME || github.event.release.tag_name }}
permissions:
contents: write
jobs:
update_tag:
name: Update the major tag to include the ${{ github.event.inputs.TAG_NAME || github.event.release.tag_name }} changes
environment:
name: releaseNewActionVersion
runs-on: ubuntu-latest
steps:
- name: Update the ${{ env.TAG_NAME }} tag
uses: actions/publish-action@v0.1.0
with:
source-tag: ${{ env.TAG_NAME }}
slack-webhook: ${{ secrets.SLACK_WEBHOOK }}

View File

@@ -2,7 +2,7 @@ name: Validate 'setup-go'
on:
push:
branches:
- master
- main
paths-ignore:
- '**.md'
pull_request:
@@ -63,12 +63,14 @@ jobs:
os: [macos-latest, windows-latest, ubuntu-latest]
go: [1.7, 1.8.6]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: setup-go ${{ matrix.go }}
uses: ./
with:
go-version: ${{ matrix.go }}
- name: verify go
run: __tests__/verify-go.sh ${{ matrix.go }}
shell: bash
- name: Checkout
uses: actions/checkout@v2
- name: setup-go ${{ matrix.go }}
uses: ./
with:
go-version: ${{ matrix.go }}
- name: verify go
run: __tests__/verify-go.sh ${{ matrix.go }}
shell: bash

View File

@@ -2,7 +2,7 @@ name: build-test
on:
push:
branches:
- master
- main
paths-ignore:
- '**.md'
pull_request:
@@ -16,23 +16,24 @@ jobs:
matrix:
operating-system: [ubuntu-latest, windows-latest]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Checkout
uses: actions/checkout@v2
- name: Setup node 12
uses: actions/setup-node@v1
with:
node-version: 12
- name: Setup node 12
uses: actions/setup-node@v2
with:
node-version: 12
cache: npm
- name: npm install
run: npm install
- name: npm install
run: npm install
- name: Lint
run: npm run format-check
- name: Lint
run: npm run format-check
- name: npm test
run: npm test
- name: npm test
run: npm test
- name: audit packages
run: npm audit --audit-level=high
if: matrix.operating-system == 'ubuntu-latest'
- name: audit packages
run: npm audit --audit-level=high
if: matrix.operating-system == 'ubuntu-latest'

14
.licensed.yml Normal file
View File

@@ -0,0 +1,14 @@
sources:
npm: true
allowed:
- apache-2.0
- bsd-2-clause
- bsd-3-clause
- isc
- mit
- cc0-1.0
- unlicense
reviewed:
npm:

BIN
.licenses/npm/@actions/core.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/@actions/exec.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/@actions/http-client.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/@actions/io.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/@actions/tool-cache.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/semver.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/tunnel.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/uuid.dep.yml generated Normal file

Binary file not shown.

1
CODEOWNERS Normal file
View File

@@ -0,0 +1 @@
* @actions/spark

View File

@@ -21,25 +21,25 @@ The V2 offers:
It will first check the local cache for a version match. If version is not found locally, It will pull it from `main` branch of [go-versions](https://github.com/actions/go-versions/blob/main/versions-manifest.json) repository and on miss or failure, it will fall back to the previous behavior of download directly from [go dist](https://storage.googleapis.com/golang).
Matching by semver spec:
Matching by [semver spec](https://github.com/npm/node-semver):
```yaml
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: '^1.13.1' # The Go version to download (if necessary) and use.
- run: go version
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: '^1.13.1' # The Go version to download (if necessary) and use.
- run: go version
```
Matching an unstable pre-release:
```yaml
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
stable: 'false'
go-version: '1.14.0-rc1' # The Go version to download (if necessary) and use.
- run: go version
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
stable: 'false'
go-version: '1.14.0-rc1' # The Go version to download (if necessary) and use.
- run: go version
```
# Usage
@@ -49,11 +49,11 @@ See [action.yml](action.yml)
Basic:
```yaml
steps:
- uses: actions/checkout@master
- uses: actions/setup-go@v1
with:
go-version: '1.9.3' # The Go version to download (if necessary) and use.
- run: go run hello.go
- uses: actions/checkout@master
- uses: actions/setup-go@v2
with:
go-version: '1.9.3' # The Go version to download (if necessary) and use.
- run: go run hello.go
```
Matrix Testing:
@@ -63,17 +63,24 @@ jobs:
runs-on: ubuntu-16.04
strategy:
matrix:
go: [ '1.13', '1.12' ]
go: [ '1.14', '1.13' ]
name: Go ${{ matrix.go }} sample
steps:
- uses: actions/checkout@v2
- name: Setup go
uses: actions/setup-go@v1
uses: actions/setup-go@v2
with:
go-version: ${{ matrix.go }}
- run: go run hello.go
```
### Supported version syntax
The `go-version` input supports the following syntax:
Specific versions: `1.15`, `1.16.1`, `1.17.0-rc2`, `1.16.0-beta1`
SemVer's version range syntax: `^1.13.1`
For more information about semantic versioning please refer [semver](https://github.com/npm/node-semver) documentation
# License
The scripts and documentation in this project are released under the [MIT License](LICENSE)

View File

@@ -35,6 +35,11 @@ describe('setup-go', () => {
let execSpy: jest.SpyInstance;
let getManifestSpy: jest.SpyInstance;
beforeAll(() => {
process.env['GITHUB_PATH'] = ''; // Stub out ENV file functionality so we can verify it writes to standard out
console.log('::stop-commands::stoptoken'); // Disable executing of runner commands when running tests in actions
});
beforeEach(() => {
// @actions/core
inputs = {};
@@ -90,7 +95,9 @@ describe('setup-go', () => {
//jest.restoreAllMocks();
});
afterAll(async () => {}, 100000);
afterAll(async () => {
console.log('::stoptoken::'); // Re-enable executing of runner commands when running tests in actions
}, 100000);
it('can find 1.9.7 from manifest on osx', async () => {
os.platform = 'darwin';
@@ -490,6 +497,16 @@ describe('setup-go', () => {
expect(annotation.message).toBe('undefined: fmt.Printl');
});
it('matches on unix path down the tree', async () => {
let line = 'foo/main.go:13:2: undefined: fmt.Printl';
let annotation = testMatch(line);
expect(annotation).toBeDefined();
expect(annotation.line).toBe(13);
expect(annotation.column).toBe(2);
expect(annotation.file).toBe('foo/main.go');
expect(annotation.message).toBe('undefined: fmt.Printl');
});
it('matches on rooted unix path', async () => {
let line = '/assert.go:4:1: missing return at end of function';
let annotation = testMatch(line);

109
dist/index.js vendored
View File

@@ -1067,6 +1067,32 @@ exports._readLinuxVersionFile = _readLinuxVersionFile;
/***/ }),
/***/ 82:
/***/ (function(__unusedmodule, exports) {
"use strict";
// We use any as a valid input type
/* eslint-disable @typescript-eslint/no-explicit-any */
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Sanitizes an input into a string so it can be passed into issueCommand safely
* @param input input to sanitize into a string
*/
function toCommandValue(input) {
if (input === null || input === undefined) {
return '';
}
else if (typeof input === 'string' || input instanceof String) {
return input;
}
return JSON.stringify(input);
}
exports.toCommandValue = toCommandValue;
//# sourceMappingURL=utils.js.map
/***/ }),
/***/ 87:
/***/ (function(module) {
@@ -1074,6 +1100,42 @@ module.exports = require("os");
/***/ }),
/***/ 102:
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
// For internal use, subject to change.
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
// We use any as a valid input type
/* eslint-disable @typescript-eslint/no-explicit-any */
const fs = __importStar(__webpack_require__(747));
const os = __importStar(__webpack_require__(87));
const utils_1 = __webpack_require__(82);
function issueCommand(command, message) {
const filePath = process.env[`GITHUB_${command}`];
if (!filePath) {
throw new Error(`Unable to find environment variable for file command ${command}`);
}
if (!fs.existsSync(filePath)) {
throw new Error(`Missing file at path: ${filePath}`);
}
fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {
encoding: 'utf8'
});
}
exports.issueCommand = issueCommand;
//# sourceMappingURL=file-command.js.map
/***/ }),
/***/ 129:
/***/ (function(module) {
@@ -3150,6 +3212,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
};
Object.defineProperty(exports, "__esModule", { value: true });
const os = __importStar(__webpack_require__(87));
const utils_1 = __webpack_require__(82);
/**
* Commands
*
@@ -3203,28 +3266,14 @@ class Command {
return cmdStr;
}
}
/**
* Sanitizes an input into a string so it can be passed into issueCommand safely
* @param input input to sanitize into a string
*/
function toCommandValue(input) {
if (input === null || input === undefined) {
return '';
}
else if (typeof input === 'string' || input instanceof String) {
return input;
}
return JSON.stringify(input);
}
exports.toCommandValue = toCommandValue;
function escapeData(s) {
return toCommandValue(s)
return utils_1.toCommandValue(s)
.replace(/%/g, '%25')
.replace(/\r/g, '%0D')
.replace(/\n/g, '%0A');
}
function escapeProperty(s) {
return toCommandValue(s)
return utils_1.toCommandValue(s)
.replace(/%/g, '%25')
.replace(/\r/g, '%0D')
.replace(/\n/g, '%0A')
@@ -3258,6 +3307,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
};
Object.defineProperty(exports, "__esModule", { value: true });
const command_1 = __webpack_require__(431);
const file_command_1 = __webpack_require__(102);
const utils_1 = __webpack_require__(82);
const os = __importStar(__webpack_require__(87));
const path = __importStar(__webpack_require__(622));
/**
@@ -3284,9 +3335,17 @@ var ExitCode;
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function exportVariable(name, val) {
const convertedVal = command_1.toCommandValue(val);
const convertedVal = utils_1.toCommandValue(val);
process.env[name] = convertedVal;
command_1.issueCommand('set-env', { name }, convertedVal);
const filePath = process.env['GITHUB_ENV'] || '';
if (filePath) {
const delimiter = '_GitHubActionsFileCommandDelimeter_';
const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`;
file_command_1.issueCommand('ENV', commandValue);
}
else {
command_1.issueCommand('set-env', { name }, convertedVal);
}
}
exports.exportVariable = exportVariable;
/**
@@ -3302,7 +3361,13 @@ exports.setSecret = setSecret;
* @param inputPath
*/
function addPath(inputPath) {
command_1.issueCommand('add-path', {}, inputPath);
const filePath = process.env['GITHUB_PATH'] || '';
if (filePath) {
file_command_1.issueCommand('PATH', inputPath);
}
else {
command_1.issueCommand('add-path', {}, inputPath);
}
process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;
}
exports.addPath = addPath;
@@ -5019,9 +5084,9 @@ function installGoVersion(info, auth) {
}
function extractGoArchive(archivePath) {
return __awaiter(this, void 0, void 0, function* () {
const arch = os_1.default.arch();
const platform = os_1.default.platform();
let extPath;
if (arch === 'win32') {
if (platform === 'win32') {
extPath = yield tc.extractZip(archivePath);
}
else {
@@ -5034,7 +5099,7 @@ exports.extractGoArchive = extractGoArchive;
function getInfoFromManifest(versionSpec, stable, auth) {
return __awaiter(this, void 0, void 0, function* () {
let info = null;
const releases = yield tc.getManifestFromRepo('actions', 'go-versions', auth, "main");
const releases = yield tc.getManifestFromRepo('actions', 'go-versions', auth, 'main');
core.info(`matching ${versionSpec}...`);
const rel = yield tc.findFromManifest(versionSpec, stable, releases);
if (rel && rel.files.length > 0) {

View File

@@ -4,7 +4,7 @@
"owner": "go",
"pattern": [
{
"regexp": "^\\s*(\\.{0,2}[\\/\\\\].+\\.go):(?:(\\d+):(\\d+):)? (.*)",
"regexp": "^\\s*(.+\\.go):(?:(\\d+):(\\d+):)? (.*)",
"file": 1,
"line": 2,
"column": 3,
@@ -13,4 +13,4 @@
]
}
]
}
}

7178
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -23,22 +23,22 @@
"author": "GitHub",
"license": "MIT",
"dependencies": {
"@actions/core": "^1.2.3",
"@actions/core": "^1.2.6",
"@actions/http-client": "^1.0.6",
"@actions/io": "^1.0.2",
"@actions/tool-cache": "^1.5.5",
"semver": "^6.1.1"
},
"devDependencies": {
"@types/jest": "^24.0.13",
"@types/jest": "^27.0.2",
"@types/node": "^12.0.4",
"@types/semver": "^6.0.0",
"@zeit/ncc": "^0.21.0",
"jest": "^25.2.1",
"jest-circus": "^24.7.1",
"jest": "^27.2.5",
"jest-circus": "^27.2.5",
"nock": "^10.0.6",
"prettier": "^1.17.1",
"ts-jest": "^24.0.2",
"ts-jest": "^27.0.5",
"typescript": "^3.8.3"
}
}

View File

@@ -122,10 +122,10 @@ async function installGoVersion(
}
export async function extractGoArchive(archivePath: string): Promise<string> {
const arch = os.arch();
const platform = os.platform();
let extPath: string;
if (arch === 'win32') {
if (platform === 'win32') {
extPath = await tc.extractZip(archivePath);
} else {
extPath = await tc.extractTar(archivePath);