Skip to content

Commit ae9b987

Browse files
committed
Support to retain cache
Signed-off-by: Balaji Arun <[email protected]>
1 parent 0f069dd commit ae9b987

File tree

11 files changed

+2726
-3338
lines changed

11 files changed

+2726
-3338
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ The following inputs can be used as `step.with` keys:
100100
| `append` | YAML | | [Append additional nodes](https://docs.docker.com/build/ci/github-actions/configure-builder/#append-additional-nodes-to-the-builder) to the builder |
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 |
103+
| `name` | String | Default Docker Context | Name of the builder to create or use. If a builder with this name already exists, it will be used instead of creating a new one. |
103104

104105
> [!IMPORTANT]
105106
> If you set the `buildkitd-flags` input, the default flags (`--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host`)

__tests__/context.test.ts

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ describe('getCreateArgs', () => {
5656
['use', 'true'],
5757
['cache-binary', 'true'],
5858
['cleanup', 'true'],
59+
['keep-state', 'false']
5960
]),
6061
[
6162
'create',
@@ -74,6 +75,7 @@ describe('getCreateArgs', () => {
7475
['use', 'true'],
7576
['cache-binary', 'true'],
7677
['cleanup', 'true'],
78+
['keep-state', 'false']
7779
]),
7880
[
7981
'create',
@@ -92,6 +94,7 @@ describe('getCreateArgs', () => {
9294
['driver-opts', 'image=moby/buildkit:master\nnetwork=host'],
9395
['cache-binary', 'true'],
9496
['cleanup', 'true'],
97+
['keep-state', 'false']
9598
]),
9699
[
97100
'create',
@@ -112,6 +115,7 @@ describe('getCreateArgs', () => {
112115
['use', 'true'],
113116
['cache-binary', 'true'],
114117
['cleanup', 'true'],
118+
['keep-state', 'false']
115119
]),
116120
[
117121
'create',
@@ -132,6 +136,7 @@ describe('getCreateArgs', () => {
132136
['use', 'true'],
133137
['cache-binary', 'true'],
134138
['cleanup', 'true'],
139+
['keep-state', 'false']
135140
]),
136141
[
137142
'create',
@@ -151,6 +156,7 @@ describe('getCreateArgs', () => {
151156
['driver-opts', `"env.no_proxy=localhost,127.0.0.1,.mydomain"`],
152157
['cache-binary', 'true'],
153158
['cleanup', 'true'],
159+
['keep-state', 'false'],
154160
]),
155161
[
156162
'create',
@@ -169,6 +175,7 @@ describe('getCreateArgs', () => {
169175
['platforms', 'linux/amd64\n"linux/arm64,linux/arm/v7"'],
170176
['cache-binary', 'true'],
171177
['cleanup', 'true'],
178+
['keep-state', 'false'],
172179
]),
173180
[
174181
'create',
@@ -187,6 +194,7 @@ describe('getCreateArgs', () => {
187194
['driver', 'unknown'],
188195
['cache-binary', 'true'],
189196
['cleanup', 'true'],
197+
['keep-state', 'false'],
190198
]),
191199
[
192200
'create',
@@ -203,6 +211,7 @@ describe('getCreateArgs', () => {
203211
['buildkitd-config', path.join(fixturesDir, 'buildkitd.toml')],
204212
['cache-binary', 'true'],
205213
['cleanup', 'true'],
214+
['keep-state', 'false'],
206215
]),
207216
[
208217
'create',
@@ -221,6 +230,7 @@ describe('getCreateArgs', () => {
221230
['buildkitd-config-inline', 'debug = true'],
222231
['cache-binary', 'true'],
223232
['cleanup', 'true'],
233+
['keep-state', 'false'],
224234
]),
225235
[
226236
'create',
@@ -240,14 +250,53 @@ describe('getCreateArgs', () => {
240250
['buildkitd-flags', '--allow-insecure-entitlement network.host'],
241251
['cache-binary', 'true'],
242252
['cleanup', 'true'],
253+
['keep-state', 'false'],
243254
]),
244255
[
245256
'create',
246257
'--name', 'builder-9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d',
247258
'--driver', 'cloud',
248259
'--buildkitd-flags', '--allow-insecure-entitlement network.host',
249260
]
250-
]
261+
],
262+
[
263+
11,
264+
'v0.10.3',
265+
new Map<string, string>([
266+
['install', 'false'],
267+
['use', 'true'],
268+
['cleanup', 'true'],
269+
['cache-binary', 'true'],
270+
['keep-state', 'false'],
271+
['name', 'test-builder-name'],
272+
]),
273+
[
274+
'create',
275+
'--name', 'test-builder-name',
276+
'--driver', 'docker-container',
277+
'--buildkitd-flags', '--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host',
278+
'--use'
279+
]
280+
],
281+
[
282+
12,
283+
'v0.10.3',
284+
new Map<string, string>([
285+
['install', 'false'],
286+
['use', 'true'],
287+
['cleanup', 'true'],
288+
['cache-binary', 'true'],
289+
['keep-state', 'true'],
290+
['name', 'test-builder-name'],
291+
]),
292+
[
293+
'create',
294+
'--name', 'test-builder-name',
295+
'--driver', 'docker-container',
296+
'--buildkitd-flags', '--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host',
297+
'--use',
298+
]
299+
],
251300
])(
252301
'[%d] given buildx %s and %p as inputs, returns %p',
253302
async (num: number, buildxVersion: string, inputs: Map<string, string>, expected: Array<string>) => {
@@ -285,6 +334,7 @@ describe('getAppendArgs', () => {
285334
['use', 'true'],
286335
['cache-binary', 'true'],
287336
['cleanup', 'true'],
337+
['keep-state', 'false']
288338
]),
289339
{
290340
"name": "aws_graviton2",

action.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,12 @@ inputs:
5050
cleanup:
5151
description: 'Cleanup temp files and remove builder at the end of a job'
5252
default: 'true'
53+
keep-state:
54+
description: 'Keep BuildKit state on cleanup. This is only useful on persistent self-hosted runners.'
55+
default: 'false'
56+
required: false
57+
name:
58+
description: 'Builder name set when creating the builder. If not specified, one will be generated.'
5359
required: false
5460
# TODO: remove deprecated config and config-inline inputs
5561
config:

dist/index.js

Lines changed: 18 additions & 30 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)