Skip to content

Commit 818c69a

Browse files
committed
always set buildkitd-flags if opt-in
Signed-off-by: CrazyMax <[email protected]>
1 parent b467d6a commit 818c69a

File tree

4 files changed

+40
-14
lines changed

4 files changed

+40
-14
lines changed

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,13 @@ The following inputs can be used as `step.with` keys:
101101
| `cache-binary` | Bool | `true` | Cache buildx binary to GitHub Actions cache backend |
102102
| `cleanup` | Bool | `true` | Cleanup temp files and remove builder at the end of a job |
103103

104-
_\* `buildkitd-config` and `buildkitd-config-inline` are mutually exclusive_
104+
> [!IMPORTANT]
105+
> If you set the `buildkitd-flags` input, the default flags (`--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host`)
106+
> will be reset. If you want to retain the default behavior, make sure to
107+
> include these flags in your custom `buildkitd-flags` value.
108+
109+
> [!NOTE]
110+
> `buildkitd-config` and `buildkitd-config-inline` are mutually exclusive.
105111

106112
### outputs
107113

__tests__/context.test.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,24 @@ describe('getCreateArgs', () => {
226226
'--buildkitd-flags', '--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host',
227227
'--config', tmpName,
228228
]
229+
],
230+
[
231+
10,
232+
'v0.10.3',
233+
new Map<string, string>([
234+
['install', 'false'],
235+
['use', 'false'],
236+
['driver', 'cloud'],
237+
['buildkitd-flags', '--allow-insecure-entitlement network.host'],
238+
['cache-binary', 'true'],
239+
['cleanup', 'true'],
240+
]),
241+
[
242+
'create',
243+
'--name', 'builder-9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d',
244+
'--driver', 'cloud',
245+
'--buildkitd-flags', '--allow-insecure-entitlement network.host',
246+
]
229247
]
230248
])(
231249
'[%d] given buildx %s and %p as inputs, returns %p',

action.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ inputs:
1919
required: false
2020
buildkitd-flags:
2121
description: 'BuildKit daemon flags'
22-
default: '--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host'
2322
required: false
2423
buildkitd-config:
2524
description: 'BuildKit daemon config file'

src/context.ts

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {Toolkit} from '@docker/actions-toolkit/lib/toolkit';
88
import {Node} from '@docker/actions-toolkit/lib/types/buildx/builder';
99

1010
export const builderNodeEnvPrefix = 'BUILDER_NODE';
11+
const defaultBuildkitdFlags = '--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host';
1112

1213
export interface Inputs {
1314
version: string;
@@ -32,7 +33,7 @@ export async function getInputs(): Promise<Inputs> {
3233
name: await getBuilderName(core.getInput('driver') || 'docker-container'),
3334
driver: core.getInput('driver') || 'docker-container',
3435
driverOpts: Util.getInputList('driver-opts', {ignoreComma: true, quote: false}),
35-
buildkitdFlags: core.getInput('buildkitd-flags') || '--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host',
36+
buildkitdFlags: core.getInput('buildkitd-flags'),
3637
platforms: Util.getInputList('platforms'),
3738
install: core.getBooleanInput('install'),
3839
use: core.getBooleanInput('use'),
@@ -52,11 +53,13 @@ export async function getBuilderName(driver: string): Promise<string> {
5253
export async function getCreateArgs(inputs: Inputs, toolkit: Toolkit): Promise<Array<string>> {
5354
const args: Array<string> = ['create', '--name', inputs.name, '--driver', inputs.driver];
5455
if (await toolkit.buildx.versionSatisfies('>=0.3.0')) {
55-
await Util.asyncForEach(inputs.driverOpts, async driverOpt => {
56+
await Util.asyncForEach(inputs.driverOpts, async (driverOpt: string) => {
5657
args.push('--driver-opt', driverOpt);
5758
});
58-
if (driverSupportsFlags(inputs.driver) && inputs.buildkitdFlags) {
59+
if (inputs.buildkitdFlags) {
5960
args.push('--buildkitd-flags', inputs.buildkitdFlags);
61+
} else if (driverSupportsBuildkitdFlags(inputs.driver)) {
62+
args.push('--buildkitd-flags', defaultBuildkitdFlags);
6063
}
6164
}
6265
if (inputs.platforms.length > 0) {
@@ -65,12 +68,10 @@ export async function getCreateArgs(inputs: Inputs, toolkit: Toolkit): Promise<A
6568
if (inputs.use) {
6669
args.push('--use');
6770
}
68-
if (driverSupportsFlags(inputs.driver)) {
69-
if (inputs.buildkitdConfig) {
70-
args.push('--config', toolkit.buildkit.config.resolveFromFile(inputs.buildkitdConfig));
71-
} else if (inputs.buildkitdConfigInline) {
72-
args.push('--config', toolkit.buildkit.config.resolveFromString(inputs.buildkitdConfigInline));
73-
}
71+
if (inputs.buildkitdConfig) {
72+
args.push('--config', toolkit.buildkit.config.resolveFromFile(inputs.buildkitdConfig));
73+
} else if (inputs.buildkitdConfigInline) {
74+
args.push('--config', toolkit.buildkit.config.resolveFromString(inputs.buildkitdConfigInline));
7475
}
7576
if (inputs.endpoint) {
7677
args.push(inputs.endpoint);
@@ -86,11 +87,13 @@ export async function getAppendArgs(inputs: Inputs, node: Node, toolkit: Toolkit
8687
args.push('--node', `node-${uuid.v4()}`);
8788
}
8889
if (node['driver-opts'] && (await toolkit.buildx.versionSatisfies('>=0.3.0'))) {
89-
await Util.asyncForEach(node['driver-opts'], async driverOpt => {
90+
await Util.asyncForEach(node['driver-opts'], async (driverOpt: string) => {
9091
args.push('--driver-opt', driverOpt);
9192
});
92-
if (driverSupportsFlags(inputs.driver) && node['buildkitd-flags']) {
93+
if (node['buildkitd-flags']) {
9394
args.push('--buildkitd-flags', node['buildkitd-flags']);
95+
} else if (driverSupportsBuildkitdFlags(inputs.driver)) {
96+
args.push('--buildkitd-flags', defaultBuildkitdFlags);
9497
}
9598
}
9699
if (node.platforms) {
@@ -110,6 +113,6 @@ export async function getInspectArgs(inputs: Inputs, toolkit: Toolkit): Promise<
110113
return args;
111114
}
112115

113-
function driverSupportsFlags(driver: string): boolean {
116+
function driverSupportsBuildkitdFlags(driver: string): boolean {
114117
return driver == '' || driver == 'docker-container' || driver == 'docker' || driver == 'kubernetes';
115118
}

0 commit comments

Comments
 (0)