@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.
Files changed (60) hide show
  1. package/README.md +3 -1
  2. package/lib/buildkit/buildkit.d.ts +4 -8
  3. package/lib/buildkit/buildkit.js +20 -39
  4. package/lib/buildkit/buildkit.js.map +1 -1
  5. package/lib/buildkit/config.d.ts +0 -3
  6. package/lib/buildkit/config.js +2 -4
  7. package/lib/buildkit/config.js.map +1 -1
  8. package/lib/buildx/bake.d.ts +29 -0
  9. package/lib/buildx/bake.js +74 -0
  10. package/lib/buildx/bake.js.map +1 -0
  11. package/lib/buildx/builder.d.ts +2 -4
  12. package/lib/buildx/builder.js +30 -14
  13. package/lib/buildx/builder.js.map +1 -1
  14. package/lib/buildx/buildx.d.ts +8 -10
  15. package/lib/buildx/buildx.js +53 -37
  16. package/lib/buildx/buildx.js.map +1 -1
  17. package/lib/buildx/inputs.d.ts +10 -13
  18. package/lib/buildx/inputs.js +24 -27
  19. package/lib/buildx/inputs.js.map +1 -1
  20. package/lib/buildx/install.d.ts +6 -8
  21. package/lib/buildx/install.js +66 -59
  22. package/lib/buildx/install.js.map +1 -1
  23. package/lib/context.d.ts +6 -7
  24. package/lib/context.js +18 -13
  25. package/lib/context.js.map +1 -1
  26. package/lib/docker/assets.d.ts +23 -0
  27. package/lib/docker/assets.js +339 -0
  28. package/lib/docker/assets.js.map +1 -0
  29. package/lib/{docker.d.ts → docker/docker.d.ts} +4 -3
  30. package/lib/{docker.js → docker/docker.js} +34 -34
  31. package/lib/docker/docker.js.map +1 -0
  32. package/lib/docker/install.d.ts +46 -0
  33. package/lib/docker/install.js +393 -0
  34. package/lib/docker/install.js.map +1 -0
  35. package/lib/exec.d.ts +20 -0
  36. package/lib/exec.js +68 -0
  37. package/lib/exec.js.map +1 -0
  38. package/lib/git.d.ts +10 -1
  39. package/lib/git.js +76 -34
  40. package/lib/git.js.map +1 -1
  41. package/lib/github.js +3 -5
  42. package/lib/github.js.map +1 -1
  43. package/lib/index.d.ts +24 -0
  44. package/lib/index.js +80 -0
  45. package/lib/index.js.map +1 -0
  46. package/lib/toolkit.d.ts +0 -2
  47. package/lib/toolkit.js +4 -6
  48. package/lib/toolkit.js.map +1 -1
  49. package/lib/types/bake.d.ts +42 -0
  50. package/lib/types/bake.js +18 -0
  51. package/lib/types/bake.js.map +1 -0
  52. package/lib/types/builder.d.ts +4 -9
  53. package/lib/types/git.d.ts +17 -0
  54. package/lib/types/git.js +18 -0
  55. package/lib/types/git.js.map +1 -0
  56. package/lib/util.d.ts +5 -0
  57. package/lib/util.js +30 -0
  58. package/lib/util.js.map +1 -1
  59. package/package.json +10 -5
  60. package/lib/docker.js.map +0 -1
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  [![Version](https://img.shields.io/npm/v/@docker/actions-toolkit?label=version&logo=npm&style=flat-square)](https://www.npmjs.com/package/@docker/actions-toolkit)
2
2
  [![Downloads](https://img.shields.io/npm/dw/@docker/actions-toolkit?logo=npm&style=flat-square)](https://www.npmjs.com/package/@docker/actions-toolkit)
3
+ [![Build workflow](https://img.shields.io/github/actions/workflow/status/docker/actions-toolkit/build.yml?label=build&logo=github&style=flat-square)](https://github.com/docker/actions-toolkit/actions?workflow=build)
3
4
  [![Test workflow](https://img.shields.io/github/actions/workflow/status/docker/actions-toolkit/test.yml?label=test&logo=github&style=flat-square)](https://github.com/docker/actions-toolkit/actions?workflow=test)
5
+ [![E2E workflow](https://img.shields.io/github/actions/workflow/status/docker/actions-toolkit/e2e.yml?label=e2e&logo=github&style=flat-square)](https://github.com/docker/actions-toolkit/actions?workflow=e2e)
4
6
  [![Codecov](https://img.shields.io/codecov/c/github/docker/actions-toolkit?logo=codecov&style=flat-square)](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: BuildKitOpts);
29
- getVersion(builderName: string): Promise<string | undefined>;
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
  }
@@ -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.containerNamePrefix = 'buildx_buildkit_';
60
- this.context = opts.context;
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(builderName) {
62
+ getVersion(node) {
69
63
  return __awaiter(this, void 0, void 0, function* () {
70
- const builderInfo = yield this.getBuilderInfo(builderName);
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.buildkitVersion;
72
+ return node.buildkit;
86
73
  });
87
74
  }
88
75
  getVersionWithinImage(nodeName) {
89
76
  return __awaiter(this, void 0, void 0, function* () {
90
- return exec
91
- .getExecOutput(`docker`, ['inspect', '--format', '{{.Config.Image}}', `${this.containerNamePrefix}${nodeName}`], {
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
- return exec
98
- .getExecOutput(`docker`, ['run', '--rm', bkitimage.stdout.trim(), '--version'], {
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
- const builderInfo = yield this.getBuilderInfo(builderName);
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.buildkitVersion;
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":"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"}
1
+ {"version":3,"file":"buildkit.js","sourceRoot":"","sources":["../../src/buildkit/buildkit.ts"],"names":[],"mappings":"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"}
@@ -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;
@@ -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 = this.context.tmpName({ tmpdir: this.context.tmpDir() });
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;AAIpB,MAAa,MAAM;IAGjB,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,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,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAC,CAAC,CAAC;QACzE,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAChC,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AA1BD,wBA0BC"}
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"}
@@ -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: BuilderOpts);
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
  }
@@ -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 exec = __importStar(require("@actions/exec"));
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.context = opts.context;
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
- inspect(name) {
58
+ exists(name) {
63
59
  return __awaiter(this, void 0, void 0, function* () {
64
- const cmd = this.buildx.getCommand(['inspect', name]);
65
- return yield exec
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.driverOpts = (value.match(/(\w+)="([^"]*)"/g) || []).map(v => v.replace(/^(.*)="(.*)"$/g, '$1=$2'));
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.buildkitdFlags = value;
140
+ node['buildkitd-flags'] = value;
125
141
  break;
126
142
  }
127
143
  case 'buildkit': {
128
- node.buildkitVersion = value;
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":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/buildx/builder.ts"],"names":[],"mappings":"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"}
@@ -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
- readonly inputs: Inputs;
27
- readonly standalone: boolean;
28
- constructor(opts: BuildxOpts);
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
- getCommand(args: Array<string>): {
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
- get version(): Promise<string | undefined>;
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>;
@@ -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 exec = __importStar(require("@actions/exec"));
56
+ const core = __importStar(require("@actions/core"));
57
57
  const semver = __importStar(require("semver"));
58
- const docker_1 = require("../docker");
59
- const inputs_1 = require("./inputs");
58
+ const docker_1 = require("../docker/docker");
59
+ const exec_1 = require("../exec");
60
60
  class Buildx {
61
61
  constructor(opts) {
62
- var _a;
63
- this.context = opts.context;
64
- this.inputs = new inputs_1.Inputs(this.context);
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
- command: this.standalone ? 'buildx' : 'docker',
76
- args: this.standalone ? args : ['buildx', ...args]
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
- return yield exec
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 exec.exec(cmd.command, cmd.args, {
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
- get version() {
108
- return (() => __awaiter(this, void 0, void 0, function* () {
109
- if (!this._version) {
110
- const cmd = this.getCommand(['version']);
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 exec.exec(cmd.command, cmd.args, {
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
- return semver.satisfies(ver, range) || /^[0-9a-f]{7}$/.exec(ver) !== null;
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