@docker/actions-toolkit 0.1.0-beta.9 → 0.1.0-rc.2
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 -7
- package/lib/buildkit/buildkit.js +20 -38
- 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 +93 -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 +7 -10
- package/lib/buildx/buildx.js +47 -36
- 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 +63 -56
- 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} +33 -39
- 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 +7 -1
- package/lib/util.js +45 -3
- package/lib/util.js.map +1 -1
- package/package.json +22 -16
- 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=validate)
|
|
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,20 +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
24
|
readonly config: Config;
|
|
27
|
-
constructor(opts
|
|
28
|
-
getVersion(
|
|
25
|
+
constructor(opts?: BuildKitOpts);
|
|
26
|
+
getVersion(node: NodeInfo): Promise<string | undefined>;
|
|
29
27
|
private getVersionWithinImage;
|
|
30
|
-
versionSatisfies(builderName: string, range: string): Promise<boolean>;
|
|
31
|
-
private getBuilderInfo;
|
|
28
|
+
versionSatisfies(builderName: string, range: string, builderInfo?: BuilderInfo): Promise<boolean>;
|
|
32
29
|
}
|
package/lib/buildkit/buildkit.js
CHANGED
|
@@ -49,31 +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.buildx =
|
|
62
|
-
(opts === null || opts === void 0 ? void 0 : opts.buildx) ||
|
|
63
|
-
new buildx_1.Buildx({
|
|
64
|
-
context: this.context
|
|
65
|
-
});
|
|
59
|
+
this.config = new config_1.Config();
|
|
60
|
+
this.buildx = (opts === null || opts === void 0 ? void 0 : opts.buildx) || new buildx_1.Buildx();
|
|
66
61
|
}
|
|
67
|
-
getVersion(
|
|
62
|
+
getVersion(node) {
|
|
68
63
|
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
-
|
|
70
|
-
if (builderInfo.nodes.length == 0) {
|
|
71
|
-
// a builder always have on node, should not happen.
|
|
72
|
-
return undefined;
|
|
73
|
-
}
|
|
74
|
-
// TODO: get version for all nodes
|
|
75
|
-
const node = builderInfo.nodes[0];
|
|
76
|
-
if (!node.buildkitVersion && node.name) {
|
|
64
|
+
if (!node.buildkit && node.name) {
|
|
77
65
|
try {
|
|
78
66
|
return yield this.getVersionWithinImage(node.name);
|
|
79
67
|
}
|
|
@@ -81,24 +69,22 @@ class BuildKit {
|
|
|
81
69
|
core.warning(e);
|
|
82
70
|
}
|
|
83
71
|
}
|
|
84
|
-
return node.
|
|
72
|
+
return node.buildkit;
|
|
85
73
|
});
|
|
86
74
|
}
|
|
87
75
|
getVersionWithinImage(nodeName) {
|
|
88
76
|
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
-
|
|
90
|
-
|
|
77
|
+
core.debug(`BuildKit.getVersionWithinImage nodeName: ${nodeName}`);
|
|
78
|
+
return exec_1.Exec.getExecOutput(`docker`, ['inspect', '--format', '{{.Config.Image}}', `${buildx_1.Buildx.containerNamePrefix}${nodeName}`], {
|
|
91
79
|
ignoreReturnCode: true,
|
|
92
80
|
silent: true
|
|
93
|
-
})
|
|
94
|
-
.then(bkitimage => {
|
|
81
|
+
}).then(bkitimage => {
|
|
95
82
|
if (bkitimage.exitCode == 0 && bkitimage.stdout.length > 0) {
|
|
96
|
-
|
|
97
|
-
|
|
83
|
+
core.debug(`BuildKit.getVersionWithinImage image: ${bkitimage.stdout.trim()}`);
|
|
84
|
+
return exec_1.Exec.getExecOutput(`docker`, ['run', '--rm', bkitimage.stdout.trim(), '--version'], {
|
|
98
85
|
ignoreReturnCode: true,
|
|
99
86
|
silent: true
|
|
100
|
-
})
|
|
101
|
-
.then(bkitversion => {
|
|
87
|
+
}).then(bkitversion => {
|
|
102
88
|
if (bkitversion.exitCode == 0 && bkitversion.stdout.length > 0) {
|
|
103
89
|
return `${bkitimage.stdout.trim()} => ${bkitversion.stdout.trim()}`;
|
|
104
90
|
}
|
|
@@ -115,19 +101,24 @@ class BuildKit {
|
|
|
115
101
|
});
|
|
116
102
|
});
|
|
117
103
|
}
|
|
118
|
-
versionSatisfies(builderName, range) {
|
|
104
|
+
versionSatisfies(builderName, range, builderInfo) {
|
|
119
105
|
return __awaiter(this, void 0, void 0, function* () {
|
|
120
|
-
|
|
106
|
+
if (!builderInfo) {
|
|
107
|
+
builderInfo = yield new builder_1.Builder({ buildx: this.buildx }).inspect(builderName);
|
|
108
|
+
}
|
|
121
109
|
for (const node of builderInfo.nodes) {
|
|
122
|
-
let bkversion = node.
|
|
110
|
+
let bkversion = node.buildkit;
|
|
111
|
+
core.debug(`BuildKit.versionSatisfies ${bkversion}: ${range}`);
|
|
123
112
|
if (!bkversion) {
|
|
124
113
|
try {
|
|
125
114
|
bkversion = yield this.getVersionWithinImage(node.name || '');
|
|
126
115
|
}
|
|
127
116
|
catch (e) {
|
|
117
|
+
core.debug(`BuildKit.versionSatisfies ${node.name}: can't get version`);
|
|
128
118
|
return false;
|
|
129
119
|
}
|
|
130
120
|
}
|
|
121
|
+
core.debug(`BuildKit.versionSatisfies ${node.name}: version ${bkversion}`);
|
|
131
122
|
// BuildKit version reported by moby is in the format of `v0.11.0-moby`
|
|
132
123
|
if (builderInfo.driver == 'docker' && !bkversion.endsWith('-moby')) {
|
|
133
124
|
return false;
|
|
@@ -139,15 +130,6 @@ class BuildKit {
|
|
|
139
130
|
return true;
|
|
140
131
|
});
|
|
141
132
|
}
|
|
142
|
-
getBuilderInfo(name) {
|
|
143
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
144
|
-
const builder = new builder_1.Builder({
|
|
145
|
-
context: this.context,
|
|
146
|
-
buildx: this.buildx
|
|
147
|
-
});
|
|
148
|
-
return builder.inspect(name);
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
133
|
}
|
|
152
134
|
exports.BuildKit = BuildKit;
|
|
153
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(sources: Array<string>, targets: Array<string>, workdir?: 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,93 @@
|
|
|
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
|
+
const util_1 = require("../util");
|
|
32
|
+
class Bake {
|
|
33
|
+
constructor(opts) {
|
|
34
|
+
this.buildx = (opts === null || opts === void 0 ? void 0 : opts.buildx) || new buildx_1.Buildx();
|
|
35
|
+
}
|
|
36
|
+
parseDefinitions(sources, targets, workdir) {
|
|
37
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
const args = ['bake'];
|
|
39
|
+
let remoteDef;
|
|
40
|
+
const files = [];
|
|
41
|
+
if (sources) {
|
|
42
|
+
for (const source of sources) {
|
|
43
|
+
if (!util_1.Util.isValidRef(source)) {
|
|
44
|
+
files.push(source);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (remoteDef) {
|
|
48
|
+
throw new Error(`Only one remote bake definition is allowed`);
|
|
49
|
+
}
|
|
50
|
+
remoteDef = source;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (remoteDef) {
|
|
54
|
+
args.push(remoteDef);
|
|
55
|
+
}
|
|
56
|
+
for (const file of files) {
|
|
57
|
+
args.push('--file', file);
|
|
58
|
+
}
|
|
59
|
+
const printCmd = yield this.buildx.getCommand([...args, '--print', ...targets]);
|
|
60
|
+
return yield exec_1.Exec.getExecOutput(printCmd.command, printCmd.args, {
|
|
61
|
+
cwd: workdir,
|
|
62
|
+
ignoreReturnCode: true,
|
|
63
|
+
silent: true
|
|
64
|
+
}).then(res => {
|
|
65
|
+
if (res.stderr.length > 0 && res.exitCode != 0) {
|
|
66
|
+
throw new Error(res.stderr);
|
|
67
|
+
}
|
|
68
|
+
return JSON.parse(res.stdout.trim());
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
static hasLocalExporter(def) {
|
|
73
|
+
return inputs_1.Inputs.hasExporterType('local', Bake.exporters(def));
|
|
74
|
+
}
|
|
75
|
+
static hasTarExporter(def) {
|
|
76
|
+
return inputs_1.Inputs.hasExporterType('tar', Bake.exporters(def));
|
|
77
|
+
}
|
|
78
|
+
static hasDockerExporter(def, load) {
|
|
79
|
+
return load || inputs_1.Inputs.hasExporterType('docker', Bake.exporters(def));
|
|
80
|
+
}
|
|
81
|
+
static exporters(def) {
|
|
82
|
+
const exporters = new Array();
|
|
83
|
+
for (const key in def.target) {
|
|
84
|
+
const target = def.target[key];
|
|
85
|
+
if (target.output) {
|
|
86
|
+
exporters.push(...target.output);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return exporters;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
exports.Bake = Bake;
|
|
93
|
+
//# sourceMappingURL=bake.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bake.js","sourceRoot":"","sources":["../../src/buildx/bake.ts"],"names":[],"mappings":"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"}
|
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,29 +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
|
|
22
|
+
private _versionOnce;
|
|
23
|
+
private readonly _standalone;
|
|
28
24
|
static readonly containerNamePrefix = "buildx_buildkit_";
|
|
29
|
-
constructor(opts
|
|
25
|
+
constructor(opts?: BuildxOpts);
|
|
30
26
|
static get configDir(): string;
|
|
31
27
|
static get certsDir(): string;
|
|
32
|
-
|
|
28
|
+
isStandalone(): Promise<boolean>;
|
|
29
|
+
getCommand(args: Array<string>): Promise<{
|
|
33
30
|
command: string;
|
|
34
31
|
args: string[];
|
|
35
|
-
}
|
|
32
|
+
}>;
|
|
36
33
|
isAvailable(): Promise<boolean>;
|
|
37
34
|
printInspect(name: string): Promise<void>;
|
|
38
|
-
|
|
35
|
+
version(): Promise<string>;
|
|
39
36
|
printVersion(): Promise<void>;
|
|
40
37
|
static parseVersion(stdout: string): string;
|
|
41
38
|
versionSatisfies(range: string, version?: string): Promise<boolean>;
|
package/lib/buildx/buildx.js
CHANGED
|
@@ -54,16 +54,14 @@ exports.Buildx = void 0;
|
|
|
54
54
|
const fs_1 = __importDefault(require("fs"));
|
|
55
55
|
const path_1 = __importDefault(require("path"));
|
|
56
56
|
const core = __importStar(require("@actions/core"));
|
|
57
|
-
const exec = __importStar(require("@actions/exec"));
|
|
58
57
|
const semver = __importStar(require("semver"));
|
|
59
|
-
const docker_1 = require("../docker");
|
|
60
|
-
const
|
|
58
|
+
const docker_1 = require("../docker/docker");
|
|
59
|
+
const exec_1 = require("../exec");
|
|
61
60
|
class Buildx {
|
|
62
61
|
constructor(opts) {
|
|
63
|
-
|
|
64
|
-
this.
|
|
65
|
-
this.
|
|
66
|
-
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;
|
|
67
65
|
}
|
|
68
66
|
static get configDir() {
|
|
69
67
|
return process.env.BUILDX_CONFIG || path_1.default.join(docker_1.Docker.configDir, 'buildx');
|
|
@@ -71,63 +69,76 @@ class Buildx {
|
|
|
71
69
|
static get certsDir() {
|
|
72
70
|
return path_1.default.join(Buildx.configDir, 'certs');
|
|
73
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
|
+
}
|
|
74
80
|
getCommand(args) {
|
|
75
|
-
return {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
+
});
|
|
79
88
|
}
|
|
80
89
|
isAvailable() {
|
|
81
90
|
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
-
const cmd = this.getCommand([]);
|
|
83
|
-
|
|
84
|
-
.getExecOutput(cmd.command, cmd.args, {
|
|
91
|
+
const cmd = yield this.getCommand([]);
|
|
92
|
+
const ok = yield exec_1.Exec.getExecOutput(cmd.command, cmd.args, {
|
|
85
93
|
ignoreReturnCode: true,
|
|
86
94
|
silent: true
|
|
87
95
|
})
|
|
88
96
|
.then(res => {
|
|
89
97
|
if (res.stderr.length > 0 && res.exitCode != 0) {
|
|
98
|
+
core.debug(`Buildx.isAvailable cmd err: ${res.stderr.trim()}`);
|
|
90
99
|
return false;
|
|
91
100
|
}
|
|
92
101
|
return res.exitCode == 0;
|
|
93
102
|
})
|
|
94
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
95
103
|
.catch(error => {
|
|
104
|
+
core.debug(`Buildx.isAvailable error: ${error}`);
|
|
96
105
|
return false;
|
|
97
106
|
});
|
|
107
|
+
core.debug(`Buildx.isAvailable: ${ok}`);
|
|
108
|
+
return ok;
|
|
98
109
|
});
|
|
99
110
|
}
|
|
100
111
|
printInspect(name) {
|
|
101
112
|
return __awaiter(this, void 0, void 0, function* () {
|
|
102
|
-
const cmd = this.getCommand(['inspect', name]);
|
|
103
|
-
yield
|
|
113
|
+
const cmd = yield this.getCommand(['inspect', name]);
|
|
114
|
+
yield exec_1.Exec.exec(cmd.command, cmd.args, {
|
|
104
115
|
failOnStdErr: false
|
|
105
116
|
});
|
|
106
117
|
});
|
|
107
118
|
}
|
|
108
|
-
|
|
109
|
-
return
|
|
110
|
-
if (
|
|
111
|
-
|
|
112
|
-
this._version = yield exec
|
|
113
|
-
.getExecOutput(cmd.command, cmd.args, {
|
|
114
|
-
ignoreReturnCode: true,
|
|
115
|
-
silent: true
|
|
116
|
-
})
|
|
117
|
-
.then(res => {
|
|
118
|
-
if (res.stderr.length > 0 && res.exitCode != 0) {
|
|
119
|
-
throw new Error(res.stderr.trim());
|
|
120
|
-
}
|
|
121
|
-
return Buildx.parseVersion(res.stdout.trim());
|
|
122
|
-
});
|
|
119
|
+
version() {
|
|
120
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
+
if (this._versionOnce) {
|
|
122
|
+
return this._version;
|
|
123
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
|
+
});
|
|
124
135
|
return this._version;
|
|
125
|
-
})
|
|
136
|
+
});
|
|
126
137
|
}
|
|
127
138
|
printVersion() {
|
|
128
139
|
return __awaiter(this, void 0, void 0, function* () {
|
|
129
|
-
const cmd = this.getCommand(['version']);
|
|
130
|
-
yield
|
|
140
|
+
const cmd = yield this.getCommand(['version']);
|
|
141
|
+
yield exec_1.Exec.exec(cmd.command, cmd.args, {
|
|
131
142
|
failOnStdErr: false
|
|
132
143
|
});
|
|
133
144
|
});
|
|
@@ -141,7 +152,7 @@ class Buildx {
|
|
|
141
152
|
}
|
|
142
153
|
versionSatisfies(range, version) {
|
|
143
154
|
return __awaiter(this, void 0, void 0, function* () {
|
|
144
|
-
const ver = version !== null && version !== void 0 ? version : (yield this.version);
|
|
155
|
+
const ver = version !== null && version !== void 0 ? version : (yield this.version());
|
|
145
156
|
if (!ver) {
|
|
146
157
|
core.debug(`Buildx.versionSatisfies false: undefined version`);
|
|
147
158
|
return false;
|