@docker/actions-toolkit 0.1.0-beta.8 → 0.1.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/lib/buildkit/buildkit.d.ts +4 -8
- package/lib/buildkit/buildkit.js +20 -39
- package/lib/buildkit/buildkit.js.map +1 -1
- package/lib/buildkit/config.d.ts +0 -3
- package/lib/buildkit/config.js +2 -4
- package/lib/buildkit/config.js.map +1 -1
- package/lib/buildx/bake.d.ts +29 -0
- package/lib/buildx/bake.js +74 -0
- package/lib/buildx/bake.js.map +1 -0
- package/lib/buildx/builder.d.ts +2 -4
- package/lib/buildx/builder.js +30 -14
- package/lib/buildx/builder.js.map +1 -1
- package/lib/buildx/buildx.d.ts +8 -10
- package/lib/buildx/buildx.js +53 -37
- package/lib/buildx/buildx.js.map +1 -1
- package/lib/buildx/inputs.d.ts +10 -13
- package/lib/buildx/inputs.js +24 -27
- package/lib/buildx/inputs.js.map +1 -1
- package/lib/buildx/install.d.ts +6 -8
- package/lib/buildx/install.js +66 -59
- package/lib/buildx/install.js.map +1 -1
- package/lib/context.d.ts +6 -7
- package/lib/context.js +18 -13
- package/lib/context.js.map +1 -1
- package/lib/docker/assets.d.ts +23 -0
- package/lib/docker/assets.js +339 -0
- package/lib/docker/assets.js.map +1 -0
- package/lib/{docker.d.ts → docker/docker.d.ts} +4 -3
- package/lib/{docker.js → docker/docker.js} +34 -34
- package/lib/docker/docker.js.map +1 -0
- package/lib/docker/install.d.ts +46 -0
- package/lib/docker/install.js +393 -0
- package/lib/docker/install.js.map +1 -0
- package/lib/exec.d.ts +20 -0
- package/lib/exec.js +68 -0
- package/lib/exec.js.map +1 -0
- package/lib/git.d.ts +10 -1
- package/lib/git.js +76 -34
- package/lib/git.js.map +1 -1
- package/lib/github.js +3 -5
- package/lib/github.js.map +1 -1
- package/lib/index.d.ts +24 -0
- package/lib/index.js +80 -0
- package/lib/index.js.map +1 -0
- package/lib/toolkit.d.ts +0 -2
- package/lib/toolkit.js +4 -6
- package/lib/toolkit.js.map +1 -1
- package/lib/types/bake.d.ts +42 -0
- package/lib/types/bake.js +18 -0
- package/lib/types/bake.js.map +1 -0
- package/lib/types/builder.d.ts +4 -9
- package/lib/types/git.d.ts +17 -0
- package/lib/types/git.js +18 -0
- package/lib/types/git.js.map +1 -0
- package/lib/util.d.ts +5 -0
- package/lib/util.js +30 -0
- package/lib/util.js.map +1 -1
- package/package.json +10 -5
- package/lib/docker.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
[](https://www.npmjs.com/package/@docker/actions-toolkit)
|
|
2
2
|
[](https://www.npmjs.com/package/@docker/actions-toolkit)
|
|
3
|
+
[](https://github.com/docker/actions-toolkit/actions?workflow=build)
|
|
3
4
|
[](https://github.com/docker/actions-toolkit/actions?workflow=test)
|
|
5
|
+
[](https://github.com/docker/actions-toolkit/actions?workflow=e2e)
|
|
4
6
|
[](https://codecov.io/gh/docker/actions-toolkit)
|
|
5
7
|
|
|
6
8
|
# Actions Toolkit
|
|
@@ -39,7 +41,7 @@ $ npm install @docker/actions-toolkit
|
|
|
39
41
|
## Usage
|
|
40
42
|
|
|
41
43
|
```js
|
|
42
|
-
const { Toolkit } = require('@docker/actions-toolkit')
|
|
44
|
+
const { Toolkit } = require('@docker/actions-toolkit/lib/toolkit')
|
|
43
45
|
const toolkit = new Toolkit()
|
|
44
46
|
```
|
|
45
47
|
|
|
@@ -13,21 +13,17 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { Context } from '../context';
|
|
17
16
|
import { Buildx } from '../buildx/buildx';
|
|
18
17
|
import { Config } from './config';
|
|
18
|
+
import { BuilderInfo, NodeInfo } from '../types/builder';
|
|
19
19
|
export interface BuildKitOpts {
|
|
20
|
-
context: Context;
|
|
21
20
|
buildx?: Buildx;
|
|
22
21
|
}
|
|
23
22
|
export declare class BuildKit {
|
|
24
|
-
private readonly context;
|
|
25
23
|
private readonly buildx;
|
|
26
|
-
private containerNamePrefix;
|
|
27
24
|
readonly config: Config;
|
|
28
|
-
constructor(opts
|
|
29
|
-
getVersion(
|
|
25
|
+
constructor(opts?: BuildKitOpts);
|
|
26
|
+
getVersion(node: NodeInfo): Promise<string | undefined>;
|
|
30
27
|
private getVersionWithinImage;
|
|
31
|
-
versionSatisfies(builderName: string, range: string): Promise<boolean>;
|
|
32
|
-
private getBuilderInfo;
|
|
28
|
+
versionSatisfies(builderName: string, range: string, builderInfo?: BuilderInfo): Promise<boolean>;
|
|
33
29
|
}
|
package/lib/buildkit/buildkit.js
CHANGED
|
@@ -49,32 +49,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
49
49
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
50
|
exports.BuildKit = void 0;
|
|
51
51
|
const core = __importStar(require("@actions/core"));
|
|
52
|
-
const exec = __importStar(require("@actions/exec"));
|
|
53
52
|
const semver = __importStar(require("semver"));
|
|
54
53
|
const buildx_1 = require("../buildx/buildx");
|
|
55
54
|
const builder_1 = require("../buildx/builder");
|
|
56
55
|
const config_1 = require("./config");
|
|
56
|
+
const exec_1 = require("../exec");
|
|
57
57
|
class BuildKit {
|
|
58
58
|
constructor(opts) {
|
|
59
|
-
this.
|
|
60
|
-
this.
|
|
61
|
-
this.config = new config_1.Config(this.context);
|
|
62
|
-
this.buildx =
|
|
63
|
-
(opts === null || opts === void 0 ? void 0 : opts.buildx) ||
|
|
64
|
-
new buildx_1.Buildx({
|
|
65
|
-
context: this.context
|
|
66
|
-
});
|
|
59
|
+
this.config = new config_1.Config();
|
|
60
|
+
this.buildx = (opts === null || opts === void 0 ? void 0 : opts.buildx) || new buildx_1.Buildx();
|
|
67
61
|
}
|
|
68
|
-
getVersion(
|
|
62
|
+
getVersion(node) {
|
|
69
63
|
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
-
|
|
71
|
-
if (builderInfo.nodes.length == 0) {
|
|
72
|
-
// a builder always have on node, should not happen.
|
|
73
|
-
return undefined;
|
|
74
|
-
}
|
|
75
|
-
// TODO: get version for all nodes
|
|
76
|
-
const node = builderInfo.nodes[0];
|
|
77
|
-
if (!node.buildkitVersion && node.name) {
|
|
64
|
+
if (!node.buildkit && node.name) {
|
|
78
65
|
try {
|
|
79
66
|
return yield this.getVersionWithinImage(node.name);
|
|
80
67
|
}
|
|
@@ -82,24 +69,22 @@ class BuildKit {
|
|
|
82
69
|
core.warning(e);
|
|
83
70
|
}
|
|
84
71
|
}
|
|
85
|
-
return node.
|
|
72
|
+
return node.buildkit;
|
|
86
73
|
});
|
|
87
74
|
}
|
|
88
75
|
getVersionWithinImage(nodeName) {
|
|
89
76
|
return __awaiter(this, void 0, void 0, function* () {
|
|
90
|
-
|
|
91
|
-
|
|
77
|
+
core.debug(`BuildKit.getVersionWithinImage nodeName: ${nodeName}`);
|
|
78
|
+
return exec_1.Exec.getExecOutput(`docker`, ['inspect', '--format', '{{.Config.Image}}', `${buildx_1.Buildx.containerNamePrefix}${nodeName}`], {
|
|
92
79
|
ignoreReturnCode: true,
|
|
93
80
|
silent: true
|
|
94
|
-
})
|
|
95
|
-
.then(bkitimage => {
|
|
81
|
+
}).then(bkitimage => {
|
|
96
82
|
if (bkitimage.exitCode == 0 && bkitimage.stdout.length > 0) {
|
|
97
|
-
|
|
98
|
-
|
|
83
|
+
core.debug(`BuildKit.getVersionWithinImage image: ${bkitimage.stdout.trim()}`);
|
|
84
|
+
return exec_1.Exec.getExecOutput(`docker`, ['run', '--rm', bkitimage.stdout.trim(), '--version'], {
|
|
99
85
|
ignoreReturnCode: true,
|
|
100
86
|
silent: true
|
|
101
|
-
})
|
|
102
|
-
.then(bkitversion => {
|
|
87
|
+
}).then(bkitversion => {
|
|
103
88
|
if (bkitversion.exitCode == 0 && bkitversion.stdout.length > 0) {
|
|
104
89
|
return `${bkitimage.stdout.trim()} => ${bkitversion.stdout.trim()}`;
|
|
105
90
|
}
|
|
@@ -116,19 +101,24 @@ class BuildKit {
|
|
|
116
101
|
});
|
|
117
102
|
});
|
|
118
103
|
}
|
|
119
|
-
versionSatisfies(builderName, range) {
|
|
104
|
+
versionSatisfies(builderName, range, builderInfo) {
|
|
120
105
|
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
-
|
|
106
|
+
if (!builderInfo) {
|
|
107
|
+
builderInfo = yield new builder_1.Builder({ buildx: this.buildx }).inspect(builderName);
|
|
108
|
+
}
|
|
122
109
|
for (const node of builderInfo.nodes) {
|
|
123
|
-
let bkversion = node.
|
|
110
|
+
let bkversion = node.buildkit;
|
|
111
|
+
core.debug(`BuildKit.versionSatisfies ${bkversion}: ${range}`);
|
|
124
112
|
if (!bkversion) {
|
|
125
113
|
try {
|
|
126
114
|
bkversion = yield this.getVersionWithinImage(node.name || '');
|
|
127
115
|
}
|
|
128
116
|
catch (e) {
|
|
117
|
+
core.debug(`BuildKit.versionSatisfies ${node.name}: can't get version`);
|
|
129
118
|
return false;
|
|
130
119
|
}
|
|
131
120
|
}
|
|
121
|
+
core.debug(`BuildKit.versionSatisfies ${node.name}: version ${bkversion}`);
|
|
132
122
|
// BuildKit version reported by moby is in the format of `v0.11.0-moby`
|
|
133
123
|
if (builderInfo.driver == 'docker' && !bkversion.endsWith('-moby')) {
|
|
134
124
|
return false;
|
|
@@ -140,15 +130,6 @@ class BuildKit {
|
|
|
140
130
|
return true;
|
|
141
131
|
});
|
|
142
132
|
}
|
|
143
|
-
getBuilderInfo(name) {
|
|
144
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
145
|
-
const builder = new builder_1.Builder({
|
|
146
|
-
context: this.context,
|
|
147
|
-
buildx: this.buildx
|
|
148
|
-
});
|
|
149
|
-
return builder.inspect(name);
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
133
|
}
|
|
153
134
|
exports.BuildKit = BuildKit;
|
|
154
135
|
//# sourceMappingURL=buildkit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildkit.js","sourceRoot":"","sources":["../../src/buildkit/buildkit.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,oDAAsC;AACtC
|
|
1
|
+
{"version":3,"file":"buildkit.js","sourceRoot":"","sources":["../../src/buildkit/buildkit.ts"],"names":[],"mappings":"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"}
|
package/lib/buildkit/config.d.ts
CHANGED
|
@@ -13,10 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { Context } from '../context';
|
|
17
16
|
export declare class Config {
|
|
18
|
-
private readonly context;
|
|
19
|
-
constructor(context: Context);
|
|
20
17
|
resolveFromString(s: string): string;
|
|
21
18
|
resolveFromFile(s: string): string;
|
|
22
19
|
private resolve;
|
package/lib/buildkit/config.js
CHANGED
|
@@ -20,10 +20,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
21
|
exports.Config = void 0;
|
|
22
22
|
const fs_1 = __importDefault(require("fs"));
|
|
23
|
+
const context_1 = require("../context");
|
|
23
24
|
class Config {
|
|
24
|
-
constructor(context) {
|
|
25
|
-
this.context = context;
|
|
26
|
-
}
|
|
27
25
|
resolveFromString(s) {
|
|
28
26
|
return this.resolve(s, false);
|
|
29
27
|
}
|
|
@@ -37,7 +35,7 @@ class Config {
|
|
|
37
35
|
}
|
|
38
36
|
s = fs_1.default.readFileSync(s, { encoding: 'utf-8' });
|
|
39
37
|
}
|
|
40
|
-
const configFile =
|
|
38
|
+
const configFile = context_1.Context.tmpName({ tmpdir: context_1.Context.tmpDir() });
|
|
41
39
|
fs_1.default.writeFileSync(configFile, s);
|
|
42
40
|
return configFile;
|
|
43
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/buildkit/config.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;AAEH,4CAAoB;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/buildkit/config.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;AAEH,4CAAoB;AAEpB,wCAAmC;AAEnC,MAAa,MAAM;IACV,iBAAiB,CAAC,CAAS;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAEM,eAAe,CAAC,CAAS;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEO,OAAO,CAAC,CAAS,EAAE,IAAa;QACtC,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;aAC/C;YACD,CAAC,GAAG,YAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAC,CAAC,CAAC;SAC7C;QACD,MAAM,UAAU,GAAG,iBAAO,CAAC,OAAO,CAAC,EAAC,MAAM,EAAE,iBAAO,CAAC,MAAM,EAAE,EAAC,CAAC,CAAC;QAC/D,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAChC,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AApBD,wBAoBC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 actions-toolkit authors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Buildx } from './buildx';
|
|
17
|
+
import { BakeDefinition } from '../types/bake';
|
|
18
|
+
export interface BakeOpts {
|
|
19
|
+
buildx?: Buildx;
|
|
20
|
+
}
|
|
21
|
+
export declare class Bake {
|
|
22
|
+
private readonly buildx;
|
|
23
|
+
constructor(opts?: BakeOpts);
|
|
24
|
+
parseDefinitions(files: Array<string>, targets: Array<string>): Promise<BakeDefinition>;
|
|
25
|
+
static hasLocalExporter(def: BakeDefinition): boolean;
|
|
26
|
+
static hasTarExporter(def: BakeDefinition): boolean;
|
|
27
|
+
static hasDockerExporter(def: BakeDefinition, load?: boolean): boolean;
|
|
28
|
+
private static exporters;
|
|
29
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright 2023 actions-toolkit authors
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
18
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
19
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
20
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
21
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
22
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
23
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.Bake = void 0;
|
|
28
|
+
const buildx_1 = require("./buildx");
|
|
29
|
+
const exec_1 = require("../exec");
|
|
30
|
+
const inputs_1 = require("./inputs");
|
|
31
|
+
class Bake {
|
|
32
|
+
constructor(opts) {
|
|
33
|
+
this.buildx = (opts === null || opts === void 0 ? void 0 : opts.buildx) || new buildx_1.Buildx();
|
|
34
|
+
}
|
|
35
|
+
parseDefinitions(files, targets) {
|
|
36
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
const args = ['bake'];
|
|
38
|
+
if (files) {
|
|
39
|
+
for (const file of files) {
|
|
40
|
+
args.push('--file', file);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const printCmd = yield this.buildx.getCommand([...args, '--print', ...targets]);
|
|
44
|
+
return yield exec_1.Exec.getExecOutput(printCmd.command, printCmd.args, {
|
|
45
|
+
ignoreReturnCode: true,
|
|
46
|
+
silent: true
|
|
47
|
+
}).then(res => {
|
|
48
|
+
if (res.stderr.length > 0 && res.exitCode != 0) {
|
|
49
|
+
throw new Error(res.stderr);
|
|
50
|
+
}
|
|
51
|
+
return JSON.parse(res.stdout.trim());
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
static hasLocalExporter(def) {
|
|
56
|
+
return inputs_1.Inputs.hasExporterType('local', Bake.exporters(def));
|
|
57
|
+
}
|
|
58
|
+
static hasTarExporter(def) {
|
|
59
|
+
return inputs_1.Inputs.hasExporterType('tar', Bake.exporters(def));
|
|
60
|
+
}
|
|
61
|
+
static hasDockerExporter(def, load) {
|
|
62
|
+
return load || inputs_1.Inputs.hasExporterType('docker', Bake.exporters(def));
|
|
63
|
+
}
|
|
64
|
+
static exporters(def) {
|
|
65
|
+
const exporters = new Array();
|
|
66
|
+
for (const key in def.target) {
|
|
67
|
+
const target = def.target[key];
|
|
68
|
+
exporters.push(...target.output);
|
|
69
|
+
}
|
|
70
|
+
return exporters;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.Bake = Bake;
|
|
74
|
+
//# sourceMappingURL=bake.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bake.js","sourceRoot":"","sources":["../../src/buildx/bake.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;AAEH,qCAAgC;AAChC,kCAA6B;AAC7B,qCAAgC;AAQhC,MAAa,IAAI;IAGf,YAAY,IAAe;QACzB,IAAI,CAAC,MAAM,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,KAAI,IAAI,eAAM,EAAE,CAAC;IAC7C,CAAC;IAEY,gBAAgB,CAAC,KAAoB,EAAE,OAAsB;;YACxE,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;YACtB,IAAI,KAAK,EAAE;gBACT,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;iBAC3B;aACF;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;YAChF,OAAO,MAAM,WAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE;gBAC/D,gBAAgB,EAAE,IAAI;gBACtB,MAAM,EAAE,IAAI;aACb,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACZ,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,EAAE;oBAC9C,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBAC7B;gBACD,OAAuB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAEM,MAAM,CAAC,gBAAgB,CAAC,GAAmB;QAChD,OAAO,eAAM,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,GAAmB;QAC9C,OAAO,eAAM,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,GAAmB,EAAE,IAAc;QACjE,OAAO,IAAI,IAAI,eAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACvE,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,GAAmB;QAC1C,MAAM,SAAS,GAAG,IAAI,KAAK,EAAU,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE;YAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;SAClC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AA/CD,oBA+CC"}
|
package/lib/buildx/builder.d.ts
CHANGED
|
@@ -14,16 +14,14 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { Buildx } from './buildx';
|
|
17
|
-
import { Context } from '../context';
|
|
18
17
|
import { BuilderInfo } from '../types/builder';
|
|
19
18
|
export interface BuilderOpts {
|
|
20
|
-
context: Context;
|
|
21
19
|
buildx?: Buildx;
|
|
22
20
|
}
|
|
23
21
|
export declare class Builder {
|
|
24
|
-
private readonly context;
|
|
25
22
|
private readonly buildx;
|
|
26
|
-
constructor(opts
|
|
23
|
+
constructor(opts?: BuilderOpts);
|
|
24
|
+
exists(name: string): Promise<boolean>;
|
|
27
25
|
inspect(name: string): Promise<BuilderInfo>;
|
|
28
26
|
static parseInspect(data: string): BuilderInfo;
|
|
29
27
|
}
|
package/lib/buildx/builder.js
CHANGED
|
@@ -48,26 +48,42 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
48
48
|
};
|
|
49
49
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
50
|
exports.Builder = void 0;
|
|
51
|
-
const
|
|
51
|
+
const core = __importStar(require("@actions/core"));
|
|
52
52
|
const buildx_1 = require("./buildx");
|
|
53
|
+
const exec_1 = require("../exec");
|
|
53
54
|
class Builder {
|
|
54
55
|
constructor(opts) {
|
|
55
|
-
this.
|
|
56
|
-
this.buildx =
|
|
57
|
-
(opts === null || opts === void 0 ? void 0 : opts.buildx) ||
|
|
58
|
-
new buildx_1.Buildx({
|
|
59
|
-
context: this.context
|
|
60
|
-
});
|
|
56
|
+
this.buildx = (opts === null || opts === void 0 ? void 0 : opts.buildx) || new buildx_1.Buildx();
|
|
61
57
|
}
|
|
62
|
-
|
|
58
|
+
exists(name) {
|
|
63
59
|
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
-
const cmd = this.buildx.getCommand(['inspect', name]);
|
|
65
|
-
|
|
66
|
-
.getExecOutput(cmd.command, cmd.args, {
|
|
60
|
+
const cmd = yield this.buildx.getCommand(['inspect', name]);
|
|
61
|
+
const ok = yield exec_1.Exec.getExecOutput(cmd.command, cmd.args, {
|
|
67
62
|
ignoreReturnCode: true,
|
|
68
63
|
silent: true
|
|
69
64
|
})
|
|
70
65
|
.then(res => {
|
|
66
|
+
if (res.stderr.length > 0 && res.exitCode != 0) {
|
|
67
|
+
core.debug(`Builder.exists cmd err: ${res.stderr.trim()}`);
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
return res.exitCode == 0;
|
|
71
|
+
})
|
|
72
|
+
.catch(error => {
|
|
73
|
+
core.debug(`Builder.exists error: ${error}`);
|
|
74
|
+
return false;
|
|
75
|
+
});
|
|
76
|
+
core.debug(`Builder.exists: ${ok}`);
|
|
77
|
+
return ok;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
inspect(name) {
|
|
81
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
+
const cmd = yield this.buildx.getCommand(['inspect', name]);
|
|
83
|
+
return yield exec_1.Exec.getExecOutput(cmd.command, cmd.args, {
|
|
84
|
+
ignoreReturnCode: true,
|
|
85
|
+
silent: true
|
|
86
|
+
}).then(res => {
|
|
71
87
|
if (res.stderr.length > 0 && res.exitCode != 0) {
|
|
72
88
|
throw new Error(res.stderr.trim());
|
|
73
89
|
}
|
|
@@ -113,7 +129,7 @@ class Builder {
|
|
|
113
129
|
break;
|
|
114
130
|
}
|
|
115
131
|
case 'driver options': {
|
|
116
|
-
node
|
|
132
|
+
node['driver-opts'] = (value.match(/([a-zA-Z0-9_.]+)="([^"]*)"/g) || []).map(v => v.replace(/^(.*)="(.*)"$/g, '$1=$2'));
|
|
117
133
|
break;
|
|
118
134
|
}
|
|
119
135
|
case 'status': {
|
|
@@ -121,11 +137,11 @@ class Builder {
|
|
|
121
137
|
break;
|
|
122
138
|
}
|
|
123
139
|
case 'flags': {
|
|
124
|
-
node
|
|
140
|
+
node['buildkitd-flags'] = value;
|
|
125
141
|
break;
|
|
126
142
|
}
|
|
127
143
|
case 'buildkit': {
|
|
128
|
-
node.
|
|
144
|
+
node.buildkit = value;
|
|
129
145
|
break;
|
|
130
146
|
}
|
|
131
147
|
case 'platforms': {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/buildx/builder.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,oDAAsC;AAEtC,qCAAgC;
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/buildx/builder.ts"],"names":[],"mappings":"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"}
|
package/lib/buildx/buildx.d.ts
CHANGED
|
@@ -13,28 +13,26 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { Context } from '../context';
|
|
17
|
-
import { Inputs } from './inputs';
|
|
18
16
|
import { Cert } from '../types/buildx';
|
|
19
17
|
export interface BuildxOpts {
|
|
20
|
-
context: Context;
|
|
21
18
|
standalone?: boolean;
|
|
22
19
|
}
|
|
23
20
|
export declare class Buildx {
|
|
24
|
-
private readonly context;
|
|
25
21
|
private _version;
|
|
26
|
-
|
|
27
|
-
readonly
|
|
28
|
-
|
|
22
|
+
private _versionOnce;
|
|
23
|
+
private readonly _standalone;
|
|
24
|
+
static readonly containerNamePrefix = "buildx_buildkit_";
|
|
25
|
+
constructor(opts?: BuildxOpts);
|
|
29
26
|
static get configDir(): string;
|
|
30
27
|
static get certsDir(): string;
|
|
31
|
-
|
|
28
|
+
isStandalone(): Promise<boolean>;
|
|
29
|
+
getCommand(args: Array<string>): Promise<{
|
|
32
30
|
command: string;
|
|
33
31
|
args: string[];
|
|
34
|
-
}
|
|
32
|
+
}>;
|
|
35
33
|
isAvailable(): Promise<boolean>;
|
|
36
34
|
printInspect(name: string): Promise<void>;
|
|
37
|
-
|
|
35
|
+
version(): Promise<string>;
|
|
38
36
|
printVersion(): Promise<void>;
|
|
39
37
|
static parseVersion(stdout: string): string;
|
|
40
38
|
versionSatisfies(range: string, version?: string): Promise<boolean>;
|
package/lib/buildx/buildx.js
CHANGED
|
@@ -53,16 +53,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
53
53
|
exports.Buildx = void 0;
|
|
54
54
|
const fs_1 = __importDefault(require("fs"));
|
|
55
55
|
const path_1 = __importDefault(require("path"));
|
|
56
|
-
const
|
|
56
|
+
const core = __importStar(require("@actions/core"));
|
|
57
57
|
const semver = __importStar(require("semver"));
|
|
58
|
-
const docker_1 = require("../docker");
|
|
59
|
-
const
|
|
58
|
+
const docker_1 = require("../docker/docker");
|
|
59
|
+
const exec_1 = require("../exec");
|
|
60
60
|
class Buildx {
|
|
61
61
|
constructor(opts) {
|
|
62
|
-
|
|
63
|
-
this.
|
|
64
|
-
this.
|
|
65
|
-
this.standalone = (_a = opts === null || opts === void 0 ? void 0 : opts.standalone) !== null && _a !== void 0 ? _a : !docker_1.Docker.isAvailable;
|
|
62
|
+
this._standalone = opts === null || opts === void 0 ? void 0 : opts.standalone;
|
|
63
|
+
this._version = '';
|
|
64
|
+
this._versionOnce = false;
|
|
66
65
|
}
|
|
67
66
|
static get configDir() {
|
|
68
67
|
return process.env.BUILDX_CONFIG || path_1.default.join(docker_1.Docker.configDir, 'buildx');
|
|
@@ -70,63 +69,76 @@ class Buildx {
|
|
|
70
69
|
static get certsDir() {
|
|
71
70
|
return path_1.default.join(Buildx.configDir, 'certs');
|
|
72
71
|
}
|
|
72
|
+
isStandalone() {
|
|
73
|
+
var _a;
|
|
74
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
75
|
+
const standalone = (_a = this._standalone) !== null && _a !== void 0 ? _a : !(yield docker_1.Docker.isAvailable());
|
|
76
|
+
core.debug(`Buildx.isStandalone: ${standalone}`);
|
|
77
|
+
return standalone;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
73
80
|
getCommand(args) {
|
|
74
|
-
return {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
81
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
+
const standalone = yield this.isStandalone();
|
|
83
|
+
return {
|
|
84
|
+
command: standalone ? 'buildx' : 'docker',
|
|
85
|
+
args: standalone ? args : ['buildx', ...args]
|
|
86
|
+
};
|
|
87
|
+
});
|
|
78
88
|
}
|
|
79
89
|
isAvailable() {
|
|
80
90
|
return __awaiter(this, void 0, void 0, function* () {
|
|
81
|
-
const cmd = this.getCommand([]);
|
|
82
|
-
|
|
83
|
-
.getExecOutput(cmd.command, cmd.args, {
|
|
91
|
+
const cmd = yield this.getCommand([]);
|
|
92
|
+
const ok = yield exec_1.Exec.getExecOutput(cmd.command, cmd.args, {
|
|
84
93
|
ignoreReturnCode: true,
|
|
85
94
|
silent: true
|
|
86
95
|
})
|
|
87
96
|
.then(res => {
|
|
88
97
|
if (res.stderr.length > 0 && res.exitCode != 0) {
|
|
98
|
+
core.debug(`Buildx.isAvailable cmd err: ${res.stderr.trim()}`);
|
|
89
99
|
return false;
|
|
90
100
|
}
|
|
91
101
|
return res.exitCode == 0;
|
|
92
102
|
})
|
|
93
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
94
103
|
.catch(error => {
|
|
104
|
+
core.debug(`Buildx.isAvailable error: ${error}`);
|
|
95
105
|
return false;
|
|
96
106
|
});
|
|
107
|
+
core.debug(`Buildx.isAvailable: ${ok}`);
|
|
108
|
+
return ok;
|
|
97
109
|
});
|
|
98
110
|
}
|
|
99
111
|
printInspect(name) {
|
|
100
112
|
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
-
const cmd = this.getCommand(['inspect', name]);
|
|
102
|
-
yield
|
|
113
|
+
const cmd = yield this.getCommand(['inspect', name]);
|
|
114
|
+
yield exec_1.Exec.exec(cmd.command, cmd.args, {
|
|
103
115
|
failOnStdErr: false
|
|
104
116
|
});
|
|
105
117
|
});
|
|
106
118
|
}
|
|
107
|
-
|
|
108
|
-
return
|
|
109
|
-
if (
|
|
110
|
-
|
|
111
|
-
this._version = yield exec
|
|
112
|
-
.getExecOutput(cmd.command, cmd.args, {
|
|
113
|
-
ignoreReturnCode: true,
|
|
114
|
-
silent: true
|
|
115
|
-
})
|
|
116
|
-
.then(res => {
|
|
117
|
-
if (res.stderr.length > 0 && res.exitCode != 0) {
|
|
118
|
-
throw new Error(res.stderr.trim());
|
|
119
|
-
}
|
|
120
|
-
return Buildx.parseVersion(res.stdout.trim());
|
|
121
|
-
});
|
|
119
|
+
version() {
|
|
120
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
+
if (this._versionOnce) {
|
|
122
|
+
return this._version;
|
|
122
123
|
}
|
|
124
|
+
this._versionOnce = true;
|
|
125
|
+
const cmd = yield this.getCommand(['version']);
|
|
126
|
+
this._version = yield exec_1.Exec.getExecOutput(cmd.command, cmd.args, {
|
|
127
|
+
ignoreReturnCode: true,
|
|
128
|
+
silent: true
|
|
129
|
+
}).then(res => {
|
|
130
|
+
if (res.stderr.length > 0 && res.exitCode != 0) {
|
|
131
|
+
throw new Error(res.stderr.trim());
|
|
132
|
+
}
|
|
133
|
+
return Buildx.parseVersion(res.stdout.trim());
|
|
134
|
+
});
|
|
123
135
|
return this._version;
|
|
124
|
-
})
|
|
136
|
+
});
|
|
125
137
|
}
|
|
126
138
|
printVersion() {
|
|
127
139
|
return __awaiter(this, void 0, void 0, function* () {
|
|
128
|
-
const cmd = this.getCommand(['version']);
|
|
129
|
-
yield
|
|
140
|
+
const cmd = yield this.getCommand(['version']);
|
|
141
|
+
yield exec_1.Exec.exec(cmd.command, cmd.args, {
|
|
130
142
|
failOnStdErr: false
|
|
131
143
|
});
|
|
132
144
|
});
|
|
@@ -140,11 +152,14 @@ class Buildx {
|
|
|
140
152
|
}
|
|
141
153
|
versionSatisfies(range, version) {
|
|
142
154
|
return __awaiter(this, void 0, void 0, function* () {
|
|
143
|
-
const ver = version !== null && version !== void 0 ? version : (yield this.version);
|
|
155
|
+
const ver = version !== null && version !== void 0 ? version : (yield this.version());
|
|
144
156
|
if (!ver) {
|
|
157
|
+
core.debug(`Buildx.versionSatisfies false: undefined version`);
|
|
145
158
|
return false;
|
|
146
159
|
}
|
|
147
|
-
|
|
160
|
+
const res = semver.satisfies(ver, range) || /^[0-9a-f]{7}$/.exec(ver) !== null;
|
|
161
|
+
core.debug(`Buildx.versionSatisfies ${ver} statisfies ${range}: ${res}`);
|
|
162
|
+
return res;
|
|
148
163
|
});
|
|
149
164
|
}
|
|
150
165
|
static resolveCertsDriverOpts(driver, endpoint, cert) {
|
|
@@ -188,4 +203,5 @@ class Buildx {
|
|
|
188
203
|
}
|
|
189
204
|
}
|
|
190
205
|
exports.Buildx = Buildx;
|
|
206
|
+
Buildx.containerNamePrefix = 'buildx_buildkit_';
|
|
191
207
|
//# sourceMappingURL=buildx.js.map
|