Compare commits

...

13 Commits

Author SHA1 Message Date
CrazyMax 1882cef5ad Merge pull request #19 from crazy-max/fix-setoutput
Fix setOutput
2021-04-30 11:56:18 +02:00
CrazyMax bb74ce9b2f Fix setOutput 2021-04-30 11:50:06 +02:00
CrazyMax f8458252dd Merge pull request #18 from crazy-max/remove-os-limitation
Remove os limitation
2021-04-27 15:58:21 +02:00
CrazyMax e5a40e00dd Remove os limitation 2021-04-27 15:47:05 +02:00
CrazyMax 52facdd663 Merge pull request #17 from docker/dependabot/npm_and_yarn/csv-parse-4.15.4
Bump csv-parse from 4.15.3 to 4.15.4
2021-04-16 12:06:36 +02:00
CrazyMax 51fac70fbd Merge branch 'master' into dependabot/npm_and_yarn/csv-parse-4.15.4 2021-04-16 12:04:23 +02:00
CrazyMax ff61180a8c Merge pull request #16 from docker/dependabot/npm_and_yarn/actions/core-1.2.7
Bump @actions/core from 1.2.6 to 1.2.7
2021-04-16 12:04:03 +02:00
CrazyMax beb29f01eb Update generated content 2021-04-16 12:03:56 +02:00
CrazyMax e0e5acbcf6 Update generated content 2021-04-16 12:02:08 +02:00
dependabot[bot] 23ce12d397 Bump csv-parse from 4.15.3 to 4.15.4
Bumps [csv-parse](https://github.com/wdavidw/node-csv-parse) from 4.15.3 to 4.15.4.
- [Release notes](https://github.com/wdavidw/node-csv-parse/releases)
- [Changelog](https://github.com/adaltas/node-csv-parse/blob/master/CHANGELOG.md)
- [Commits](https://github.com/wdavidw/node-csv-parse/compare/v4.15.3...v4.15.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-16 07:33:03 +00:00
dependabot[bot] 3dd1069797 Bump @actions/core from 1.2.6 to 1.2.7
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.2.6 to 1.2.7.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-14 07:23:53 +00:00
CrazyMax 117945163a Merge pull request #15 from crazy-max/doc
Fix doc links
2021-04-06 16:37:14 +02:00
CrazyMax 9a699390ae Fix doc links 2021-04-03 20:37:29 +02:00
8 changed files with 110 additions and 51 deletions
+31 -1
View File
@@ -43,7 +43,6 @@ jobs:
driver-opts: network=host
-
name: Build and push
id: docker_build
uses: ./
with:
builder: ${{ steps.buildx.outputs.name }}
@@ -56,3 +55,34 @@ jobs:
name: Dump context
if: always()
uses: crazy-max/ghaction-dump-context@v1
error:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v2
-
name: Stop docker
run: |
sudo systemctl stop docker
-
name: Build
id: bake
continue-on-error: true
uses: ./
with:
files: |
./test/config.hcl
-
name: Check
run: |
echo "${{ toJson(steps.bake) }}"
if [ "${{ steps.bake.outcome }}" != "failure" ] || [ "${{ steps.bake.conclusion }}" != "success" ]; then
echo "::error::Should have failed"
exit 1
fi
-
name: Dump context
if: always()
uses: crazy-max/ghaction-dump-context@v1
+7 -19
View File
@@ -11,7 +11,8 @@ of this action in your workflow (i.e `docker/bake-action@v1.1.3`).
## About
GitHub Action to use Docker [Buildx Bake](https://github.com/docker/buildx#buildx-bake-options-target) as a high-level build command.
GitHub Action to use Docker [Buildx Bake](https://github.com/docker/buildx/blob/master/docs/reference/buildx_bake.md)
as a high-level build command.
___
@@ -19,18 +20,16 @@ ___
* [Customizing](#customizing)
* [inputs](#inputs)
* [Keep up-to-date with GitHub Dependabot](#keep-up-to-date-with-github-dependabot)
* [Limitation](#limitation)
## Usage
```yaml
name: ci
on:
pull_request:
branches: master
push:
branches: master
tags:
branches:
- 'master'
jobs:
bake:
@@ -39,9 +38,6 @@ jobs:
-
name: Checkout
uses: actions/checkout@v2
-
name: Set up QEMU
uses: docker/setup-qemu-action@v1
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
@@ -55,10 +51,6 @@ jobs:
name: Build and push
uses: docker/bake-action@master
with:
files: |
./config.hcl
targets: |
release
push: true
```
@@ -86,13 +78,13 @@ Following inputs can be used as `step.with` keys
| Name | Type | Description |
|------------------|----------|------------------------------------|
| `builder` | String | Builder instance (see [setup-buildx](https://github.com/docker/setup-buildx-action) action) |
| `files` | List/CSV | List of [bake definition files](https://github.com/docker/buildx#file-definition) |
| `files` | List/CSV | List of [bake definition files](https://github.com/docker/buildx/blob/master/docs/reference/buildx_bake.md#file) |
| `targets` | List/CSV | List of bake targets |
| `no-cache` | Bool | Do not use cache when building the image (default `false`) |
| `pull` | Bool | Always attempt to pull a newer version of the image (default `false`) |
| `load` | Bool | Load is a shorthand for `--set=*.output=type=docker` (default `false`) |
| `push` | Bool | Push is a shorthand for `--set=*.output=type=registry` (default `false`) |
| `set` | List | List of [targets values to override](https://github.com/docker/buildx#--set-targetpatternkeysubkeyvalue) (eg: `targetpattern.key=value`) |
| `set` | List | List of [targets values to override](https://github.com/docker/buildx/blob/master/docs/reference/buildx_bake.md#set) (eg: `targetpattern.key=value`) |
## Keep up-to-date with GitHub Dependabot
@@ -109,7 +101,3 @@ updates:
schedule:
interval: "daily"
```
## Limitation
This action is only available for Linux [virtual environments](https://help.github.com/en/articles/virtual-environments-for-github-actions#supported-virtual-environments-and-hardware-resources).
+30
View File
@@ -1,3 +1,4 @@
import * as os from 'os';
import * as context from '../src/context';
describe('getInputList', () => {
@@ -166,6 +167,27 @@ describe('asyncForEach', () => {
});
});
describe('setOutput', () => {
beforeEach(() => {
process.stdout.write = jest.fn();
});
it('setOutput produces the correct command', () => {
context.setOutput('some output', 'some value');
assertWriteCalls([`::set-output name=some output::some value${os.EOL}`]);
});
it('setOutput handles bools', () => {
context.setOutput('some output', false);
assertWriteCalls([`::set-output name=some output::false${os.EOL}`]);
});
it('setOutput handles numbers', () => {
context.setOutput('some output', 1.01);
assertWriteCalls([`::set-output name=some output::1.01${os.EOL}`]);
});
});
// See: https://github.com/actions/toolkit/blob/master/packages/core/src/core.ts#L67
function getInputName(name: string): string {
return `INPUT_${name.replace(/ /g, '_').toUpperCase()}`;
@@ -174,3 +196,11 @@ function getInputName(name: string): string {
function setInput(name: string, value: string): void {
process.env[getInputName(name)] = value;
}
// Assert that process.stdout.write calls called only with the given arguments.
function assertWriteCalls(calls: string[]): void {
expect(process.stdout.write).toHaveBeenCalledTimes(calls.length);
for (let i = 0; i < calls.length; i++) {
expect(process.stdout.write).toHaveBeenNthCalledWith(i + 1, calls[i]);
}
}
Generated Vendored
+18 -12
View File
@@ -516,7 +516,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const os = __importStar(__webpack_require__(87));
const buildx = __importStar(__webpack_require__(295));
const context = __importStar(__webpack_require__(842));
const core = __importStar(__webpack_require__(186));
@@ -524,22 +523,22 @@ const exec = __importStar(__webpack_require__(514));
function run() {
return __awaiter(this, void 0, void 0, function* () {
try {
if (os.platform() !== 'linux') {
core.setFailed('Only supported on linux platform');
return;
}
core.startGroup(`Docker info`);
yield exec.exec('docker', ['version']);
yield exec.exec('docker', ['info']);
core.endGroup();
if (!(yield buildx.isAvailable())) {
core.setFailed(`Buildx is required. See https://github.com/docker/setup-buildx-action to set up buildx.`);
core.setFailed(`Docker buildx is required. See https://github.com/docker/setup-buildx-action to set up buildx.`);
return;
}
const buildxVersion = yield buildx.getVersion();
core.info(`📣 Buildx version: ${buildxVersion}`);
core.info(`Using buildx ${buildxVersion}`);
let inputs = yield context.getInputs();
const args = yield context.getArgs(inputs, buildxVersion);
core.startGroup(`💡 Bake definition`);
core.startGroup(`Bake definition`);
yield exec.exec('docker', [...args, '--print']);
core.endGroup();
core.info(`🏃 Building...`);
core.info(`Building...`);
yield exec.exec('docker', args);
}
catch (error) {
@@ -1702,6 +1701,7 @@ exports.getInput = getInput;
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function setOutput(name, value) {
process.stdout.write(os.EOL);
command_1.issueCommand('set-output', { name }, value);
}
exports.setOutput = setOutput;
@@ -5186,7 +5186,7 @@ class Parser extends Transform {
], this.options, this.__context(), {
record: record,
})
if(relax_column_count === true ||
if(relax_column_count === true ||
(relax_column_count_less === true && recordLength < this.state.expectedRecordLength) ||
(relax_column_count_more === true && recordLength > this.state.expectedRecordLength) ){
this.info.invalid_field_length++
@@ -5216,7 +5216,7 @@ class Parser extends Transform {
for(let i = 0, l = record.length; i < l; i++){
if(columns[i] === undefined || columns[i].disabled) continue
// Turn duplicate columns into an array
if (columns_duplicates_to_array === true && obj[columns[i].name]) {
if (columns_duplicates_to_array === true && obj[columns[i].name] !== undefined) {
if (Array.isArray(obj[columns[i].name])) {
obj[columns[i].name] = obj[columns[i].name].concat(record[i])
} else {
@@ -5716,9 +5716,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.asyncForEach = exports.getInputList = exports.getArgs = exports.getInputs = void 0;
exports.setOutput = exports.asyncForEach = exports.getInputList = exports.getArgs = exports.getInputs = void 0;
const sync_1 = __importDefault(__webpack_require__(750));
const core = __importStar(__webpack_require__(186));
const command_1 = __webpack_require__(241);
function getInputs() {
return __awaiter(this, void 0, void 0, function* () {
return {
@@ -5806,6 +5807,11 @@ exports.asyncForEach = (array, callback) => __awaiter(void 0, void 0, void 0, fu
yield callback(array[index], index, array);
}
});
// FIXME: Temp fix https://github.com/actions/toolkit/issues/777
function setOutput(name, value) {
command_1.issueCommand('set-output', { name }, value);
}
exports.setOutput = setOutput;
//# sourceMappingURL=context.js.map
/***/ }),
+2 -2
View File
@@ -28,9 +28,9 @@
],
"license": "Apache-2.0",
"dependencies": {
"@actions/core": "^1.2.6",
"@actions/core": "^1.2.7",
"@actions/exec": "^1.0.4",
"csv-parse": "^4.15.3",
"csv-parse": "^4.15.4",
"semver": "^7.3.5"
},
"devDependencies": {
+6
View File
@@ -1,6 +1,7 @@
import csvparse from 'csv-parse/lib/sync';
import * as buildx from './buildx';
import * as core from '@actions/core';
import {issueCommand} from '@actions/core/lib/command';
export interface Inputs {
builder: string;
@@ -96,3 +97,8 @@ export const asyncForEach = async (array, callback) => {
await callback(array[index], index, array);
}
};
// FIXME: Temp fix https://github.com/actions/toolkit/issues/777
export function setOutput(name: string, value: any): void {
issueCommand('set-output', {name}, value);
}
+8 -9
View File
@@ -1,4 +1,3 @@
import * as os from 'os';
import * as buildx from './buildx';
import * as context from './context';
import * as core from '@actions/core';
@@ -6,27 +5,27 @@ import * as exec from '@actions/exec';
async function run(): Promise<void> {
try {
if (os.platform() !== 'linux') {
core.setFailed('Only supported on linux platform');
return;
}
core.startGroup(`Docker info`);
await exec.exec('docker', ['version']);
await exec.exec('docker', ['info']);
core.endGroup();
if (!(await buildx.isAvailable())) {
core.setFailed(`Buildx is required. See https://github.com/docker/setup-buildx-action to set up buildx.`);
core.setFailed(`Docker buildx is required. See https://github.com/docker/setup-buildx-action to set up buildx.`);
return;
}
const buildxVersion = await buildx.getVersion();
core.info(`📣 Buildx version: ${buildxVersion}`);
core.info(`Using buildx ${buildxVersion}`);
let inputs: context.Inputs = await context.getInputs();
const args: string[] = await context.getArgs(inputs, buildxVersion);
core.startGroup(`💡 Bake definition`);
core.startGroup(`Bake definition`);
await exec.exec('docker', [...args, '--print']);
core.endGroup();
core.info(`🏃 Building...`);
core.info(`Building...`);
await exec.exec('docker', args);
} catch (error) {
core.setFailed(error.message);
+8 -8
View File
@@ -2,10 +2,10 @@
# yarn lockfile v1
"@actions/core@^1.2.6":
version "1.2.6"
resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.2.6.tgz#a78d49f41a4def18e88ce47c2cac615d5694bf09"
integrity sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA==
"@actions/core@^1.2.7":
version "1.2.7"
resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.2.7.tgz#594f8c45b213f0146e4be7eda8ae5cf4e198e5ab"
integrity sha512-kzLFD5BgEvq6ubcxdgPbRKGD2Qrgya/5j+wh4LZzqT915I0V3rED+MvjH6NXghbvk1MXknpNNQ3uKjXSEN00Ig==
"@actions/exec@^1.0.4":
version "1.0.4"
@@ -1114,10 +1114,10 @@ cssstyle@^2.2.0:
dependencies:
cssom "~0.3.6"
csv-parse@^4.15.3:
version "4.15.3"
resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-4.15.3.tgz#8a62759617a920c328cb31c351b05053b8f92b10"
integrity sha512-jlTqDvLdHnYMSr08ynNfk4IAUSJgJjTKy2U5CQBSu4cN9vQOJonLVZP4Qo4gKKrIgIQ5dr07UwOJdi+lRqT12w==
csv-parse@^4.15.4:
version "4.15.4"
resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-4.15.4.tgz#ad1ec62aaf71a642982dfcb81f1848184d691db5"
integrity sha512-OdBbFc0yZhOm17lSxqkirrHlFFVpKRT0wp4DAGoJelsP3LbGzV9LNr7XmM/lrr0uGkCtaqac9UhP8PDHXOAbMg==
dashdash@^1.12.0:
version "1.14.1"