Compare commits

..

No commits in common. "master" and "v3.10.0" have entirely different histories.

18 changed files with 2787 additions and 2758 deletions

View File

@ -5,7 +5,6 @@ concurrency:
cancel-in-progress: true cancel-in-progress: true
on: on:
workflow_dispatch:
schedule: schedule:
- cron: '0 10 * * *' - cron: '0 10 * * *'
push: push:
@ -32,7 +31,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Set up Docker Buildx name: Set up Docker Buildx
id: buildx id: buildx
@ -51,7 +50,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Set up Docker Buildx 1 name: Set up Docker Buildx 1
uses: ./ uses: ./
@ -64,7 +63,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Stop docker name: Stop docker
run: | run: |
@ -92,7 +91,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Create Dockerfile name: Create Dockerfile
run: | run: |
@ -120,7 +119,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: ./ uses: ./
@ -142,7 +141,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: ./ uses: ./
@ -165,7 +164,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: ./ uses: ./
@ -178,7 +177,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: ./ uses: ./
@ -211,7 +210,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Create context name: Create context
run: | run: |
@ -233,7 +232,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Create buildkitd conf name: Create buildkitd conf
run: | run: |
@ -265,7 +264,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Create Dockerfile name: Create Dockerfile
run: | run: |
@ -301,7 +300,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Set up QEMU name: Set up QEMU
uses: docker/setup-qemu-action@v3 uses: docker/setup-qemu-action@v3
@ -330,7 +329,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: ./ uses: ./
@ -353,7 +352,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Uninstall docker cli name: Uninstall docker cli
run: | run: |
@ -381,7 +380,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Uninstall docker cli name: Uninstall docker cli
run: | run: |
@ -412,7 +411,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Uninstall docker cli name: Uninstall docker cli
run: | run: |
@ -442,7 +441,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Create dummy contexts name: Create dummy contexts
run: | run: |
@ -471,7 +470,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Set up QEMU name: Set up QEMU
uses: docker/setup-qemu-action@v3 uses: docker/setup-qemu-action@v3
@ -486,7 +485,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Create Docker context name: Create Docker context
run: | run: |
@ -509,7 +508,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: ./ uses: ./
@ -517,21 +516,22 @@ jobs:
cleanup: ${{ matrix.cleanup }} cleanup: ${{ matrix.cleanup }}
k3s: k3s:
runs-on: ubuntu-latest runs-on: ubuntu-20.04
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
version: version:
- latest
- v0.11.0 - v0.11.0
- v0.10.5 - v0.10.5
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Install k3s name: Install k3s
uses: crazy-max/.github/.github/actions/install-k3s@a94383ec9e125b23907fb6fcebf7ff87964595e5 uses: crazy-max/.github/.github/actions/install-k3s@605d30d5ae97f6680578ace4b56645af79343e60
with:
version: "v1.21.2-k3s1"
- -
name: Set up Docker Buildx name: Set up Docker Buildx
id: buildx id: buildx
@ -576,73 +576,10 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: ./ uses: ./
with: with:
version: v0.11.2 version: v0.11.2
cache-binary: ${{ matrix.cache }} cache-binary: ${{ matrix.cache }}
windows-error:
runs-on: windows-latest
steps:
-
name: Checkout
uses: actions/checkout@v5
-
name: Set up Docker Buildx
id: buildx
continue-on-error: true
uses: ./
-
name: Check
run: |
echo "${{ toJson(steps.buildx) }}"
if [ "${{ steps.buildx.outcome }}" != "failure" ] || [ "${{ steps.buildx.conclusion }}" != "success" ]; then
echo "::error::Should have failed"
exit 1
fi
shell: bash
keep-state:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v5
-
name: Set up Docker Buildx
uses: ./
with:
name: foo
keep-state: true
-
name: Set up Docker Buildx
uses: ./
with:
name: foo
keep-state: true
keep-state-error:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v5
-
name: Set up Docker Buildx
id: buildx
continue-on-error: true
uses: ./
with:
driver: docker
keep-state: true
-
name: Check
run: |
echo "${{ toJson(steps.buildx) }}"
if [ "${{ steps.buildx.outcome }}" != "failure" ] || [ "${{ steps.buildx.conclusion }}" != "success" ]; then
echo "::error::Should have failed"
exit 1
fi

View File

@ -1,17 +0,0 @@
name: pr-assign-author
permissions:
contents: read
on:
pull_request_target:
types:
- opened
- reopened
jobs:
run:
uses: crazy-max/.github/.github/workflows/pr-assign-author.yml@1b673f36fad86812f538c1df9794904038a23cbf
permissions:
contents: read
pull-requests: write

View File

@ -15,7 +15,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Publish name: Publish
uses: actions/publish-immutable-action@v0.0.4 uses: actions/publish-immutable-action@v0.0.4

View File

@ -17,7 +17,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: ./ uses: ./

View File

@ -19,7 +19,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
name: List targets name: List targets
id: generate id: generate

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,3 @@
# https://yarnpkg.com/configuration/yarnrc
compressionLevel: mixed
enableGlobalCache: false
enableHardenedMode: true
logFilters: logFilters:
- code: YN0013 - code: YN0013
level: discard level: discard
@ -11,7 +5,9 @@ logFilters:
level: discard level: discard
- code: YN0076 - code: YN0076
level: discard level: discard
- code: YN0086
level: discard
nodeLinker: node-modules nodeLinker: node-modules
plugins:
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
spec: "@yarnpkg/plugin-interactive-tools"

View File

@ -42,7 +42,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v4
- -
# Add support for more platforms with QEMU (optional) # Add support for more platforms with QEMU (optional)
# https://github.com/docker/setup-qemu-action # https://github.com/docker/setup-qemu-action
@ -86,9 +86,8 @@ The following inputs can be used as `step.with` keys:
> ``` > ```
| Name | Type | Default | Description | | Name | Type | Default | Description |
|------------------------------|----------|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |------------------------------|----------|--------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `version` | String | | [Buildx](https://github.com/docker/buildx) version. (eg. `v0.3.0`, `latest`, `https://github.com/docker/buildx.git#master`) | | `version` | String | | [Buildx](https://github.com/docker/buildx) version. (eg. `v0.3.0`, `latest`, `https://github.com/docker/buildx.git#master`) |
| `name` | String | | Name of the builder. If not specified, one will be generated or if it already exists, it will be used instead of creating a new one |
| `driver` | String | `docker-container` | Sets the [builder driver](https://docs.docker.com/engine/reference/commandline/buildx_create/#driver) to be used | | `driver` | String | `docker-container` | Sets the [builder driver](https://docs.docker.com/engine/reference/commandline/buildx_create/#driver) to be used |
| `driver-opts` | List | | List of additional [driver-specific options](https://docs.docker.com/engine/reference/commandline/buildx_create/#driver-opt) (eg. `image=moby/buildkit:master`) | | `driver-opts` | List | | List of additional [driver-specific options](https://docs.docker.com/engine/reference/commandline/buildx_create/#driver-opt) (eg. `image=moby/buildkit:master`) |
| `buildkitd-flags` | String | | [BuildKit daemon flags](https://docs.docker.com/engine/reference/commandline/buildx_create/#buildkitd-flags) | | `buildkitd-flags` | String | | [BuildKit daemon flags](https://docs.docker.com/engine/reference/commandline/buildx_create/#buildkitd-flags) |
@ -97,9 +96,8 @@ The following inputs can be used as `step.with` keys:
| `install` | Bool | `false` | Sets up `docker build` command as an alias to `docker buildx` | | `install` | Bool | `false` | Sets up `docker build` command as an alias to `docker buildx` |
| `use` | Bool | `true` | Switch to this builder instance | | `use` | Bool | `true` | Switch to this builder instance |
| `endpoint` | String | | [Optional address for docker socket](https://docs.docker.com/engine/reference/commandline/buildx_create/#description) or context from `docker context ls` | | `endpoint` | String | | [Optional address for docker socket](https://docs.docker.com/engine/reference/commandline/buildx_create/#description) or context from `docker context ls` |
| `platforms` | List/CSV | | Fixed [platforms](https://docs.docker.com/engine/reference/commandline/buildx_create/#platform) for current node. If not empty, values take priority over the detected ones | | `platforms` | List/CSV | | Fixed [platforms](https://docs.docker.com/engine/reference/commandline/buildx_create/#platform) for current node. If not empty, values take priority over the detected ones. |
| `append` | YAML | | [Append additional nodes](https://docs.docker.com/build/ci/github-actions/configure-builder/#append-additional-nodes-to-the-builder) to the builder | | `append` | YAML | | [Append additional nodes](https://docs.docker.com/build/ci/github-actions/configure-builder/#append-additional-nodes-to-the-builder) to the builder |
| `keep-state` | Bool | `false` | Keep BuildKit state on `cleanup`. This is only useful on persistent self-hosted runners |
| `cache-binary` | Bool | `true` | Cache buildx binary to GitHub Actions cache backend | | `cache-binary` | Bool | `true` | Cache buildx binary to GitHub Actions cache backend |
| `cleanup` | Bool | `true` | Cleanup temp files and remove builder at the end of a job | | `cleanup` | Bool | `true` | Cleanup temp files and remove builder at the end of a job |

View File

@ -56,7 +56,6 @@ describe('getCreateArgs', () => {
['use', 'true'], ['use', 'true'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true'],
['keep-state', 'false']
]), ]),
[ [
'create', 'create',
@ -75,7 +74,6 @@ describe('getCreateArgs', () => {
['use', 'true'], ['use', 'true'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true'],
['keep-state', 'false']
]), ]),
[ [
'create', 'create',
@ -94,7 +92,6 @@ describe('getCreateArgs', () => {
['driver-opts', 'image=moby/buildkit:master\nnetwork=host'], ['driver-opts', 'image=moby/buildkit:master\nnetwork=host'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true'],
['keep-state', 'false']
]), ]),
[ [
'create', 'create',
@ -115,7 +112,6 @@ describe('getCreateArgs', () => {
['use', 'true'], ['use', 'true'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true'],
['keep-state', 'false']
]), ]),
[ [
'create', 'create',
@ -136,7 +132,6 @@ describe('getCreateArgs', () => {
['use', 'true'], ['use', 'true'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true'],
['keep-state', 'false']
]), ]),
[ [
'create', 'create',
@ -156,7 +151,6 @@ describe('getCreateArgs', () => {
['driver-opts', `"env.no_proxy=localhost,127.0.0.1,.mydomain"`], ['driver-opts', `"env.no_proxy=localhost,127.0.0.1,.mydomain"`],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true'],
['keep-state', 'false'],
]), ]),
[ [
'create', 'create',
@ -175,7 +169,6 @@ describe('getCreateArgs', () => {
['platforms', 'linux/amd64\n"linux/arm64,linux/arm/v7"'], ['platforms', 'linux/amd64\n"linux/arm64,linux/arm/v7"'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true'],
['keep-state', 'false'],
]), ]),
[ [
'create', 'create',
@ -194,7 +187,6 @@ describe('getCreateArgs', () => {
['driver', 'unknown'], ['driver', 'unknown'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true'],
['keep-state', 'false'],
]), ]),
[ [
'create', 'create',
@ -211,7 +203,6 @@ describe('getCreateArgs', () => {
['buildkitd-config', path.join(fixturesDir, 'buildkitd.toml')], ['buildkitd-config', path.join(fixturesDir, 'buildkitd.toml')],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true'],
['keep-state', 'false'],
]), ]),
[ [
'create', 'create',
@ -230,7 +221,6 @@ describe('getCreateArgs', () => {
['buildkitd-config-inline', 'debug = true'], ['buildkitd-config-inline', 'debug = true'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true'],
['keep-state', 'false'],
]), ]),
[ [
'create', 'create',
@ -250,7 +240,6 @@ describe('getCreateArgs', () => {
['buildkitd-flags', '--allow-insecure-entitlement network.host'], ['buildkitd-flags', '--allow-insecure-entitlement network.host'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true'],
['keep-state', 'false'],
]), ]),
[ [
'create', 'create',
@ -258,45 +247,7 @@ describe('getCreateArgs', () => {
'--driver', 'cloud', '--driver', 'cloud',
'--buildkitd-flags', '--allow-insecure-entitlement network.host', '--buildkitd-flags', '--allow-insecure-entitlement network.host',
] ]
],
[
11,
'v0.10.3',
new Map<string, string>([
['install', 'false'],
['use', 'true'],
['cleanup', 'true'],
['cache-binary', 'true'],
['keep-state', 'false'],
['name', 'test-builder-name'],
]),
[
'create',
'--name', 'test-builder-name',
'--driver', 'docker-container',
'--buildkitd-flags', '--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host',
'--use'
] ]
],
[
12,
'v0.10.3',
new Map<string, string>([
['install', 'false'],
['use', 'true'],
['cleanup', 'true'],
['cache-binary', 'true'],
['keep-state', 'true'],
['name', 'test-builder-name'],
]),
[
'create',
'--name', 'test-builder-name',
'--driver', 'docker-container',
'--buildkitd-flags', '--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host',
'--use',
]
],
])( ])(
'[%d] given buildx %s and %p as inputs, returns %p', '[%d] given buildx %s and %p as inputs, returns %p',
async (num: number, buildxVersion: string, inputs: Map<string, string>, expected: Array<string>) => { async (num: number, buildxVersion: string, inputs: Map<string, string>, expected: Array<string>) => {
@ -334,7 +285,6 @@ describe('getAppendArgs', () => {
['use', 'true'], ['use', 'true'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true'],
['keep-state', 'false']
]), ]),
{ {
"name": "aws_graviton2", "name": "aws_graviton2",
@ -393,7 +343,6 @@ describe('getVersion', () => {
['use', 'true'], ['use', 'true'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true'],
['keep-state', 'false']
]), ]),
'' ''
], ],
@ -405,8 +354,7 @@ describe('getVersion', () => {
['install', 'false'], ['install', 'false'],
['use', 'true'], ['use', 'true'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true']
['keep-state', 'false']
]), ]),
'latest' 'latest'
], ],
@ -418,8 +366,7 @@ describe('getVersion', () => {
['install', 'false'], ['install', 'false'],
['use', 'true'], ['use', 'true'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true']
['keep-state', 'false']
]), ]),
'edge' 'edge'
], ],
@ -431,8 +378,7 @@ describe('getVersion', () => {
['install', 'false'], ['install', 'false'],
['use', 'true'], ['use', 'true'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true']
['keep-state', 'false']
]), ]),
'v0.19.2' 'v0.19.2'
], ],
@ -445,8 +391,7 @@ describe('getVersion', () => {
['install', 'false'], ['install', 'false'],
['use', 'true'], ['use', 'true'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true']
['keep-state', 'false']
]), ]),
'cloud:latest' 'cloud:latest'
], ],
@ -459,8 +404,7 @@ describe('getVersion', () => {
['install', 'false'], ['install', 'false'],
['use', 'true'], ['use', 'true'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true']
['keep-state', 'false']
]), ]),
'cloud:edge' 'cloud:edge'
], ],
@ -473,7 +417,6 @@ describe('getVersion', () => {
['use', 'true'], ['use', 'true'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true'],
['keep-state', 'false']
]), ]),
'cloud:latest' 'cloud:latest'
], ],
@ -487,7 +430,6 @@ describe('getVersion', () => {
['use', 'true'], ['use', 'true'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true'],
['keep-state', 'false']
]), ]),
'cloud:v0.11.2-desktop.2' 'cloud:v0.11.2-desktop.2'
], ],
@ -500,7 +442,6 @@ describe('getVersion', () => {
['use', 'true'], ['use', 'true'],
['cache-binary', 'true'], ['cache-binary', 'true'],
['cleanup', 'true'], ['cleanup', 'true'],
['keep-state', 'false']
]), ]),
'cloud:v0.11.2-desktop.2' 'cloud:v0.11.2-desktop.2'
], ],

View File

@ -34,9 +34,6 @@ inputs:
description: 'Switch to this builder instance' description: 'Switch to this builder instance'
default: 'true' default: 'true'
required: false required: false
name:
description: 'Name of the builder. If not specified, one will be generated or if it already exists, it will be used instead of creating a new one.'
required: false
endpoint: endpoint:
description: 'Optional address for docker socket or context from `docker context ls`' description: 'Optional address for docker socket or context from `docker context ls`'
required: false required: false
@ -46,10 +43,6 @@ inputs:
append: append:
description: 'Append additional nodes to the builder' description: 'Append additional nodes to the builder'
required: false required: false
keep-state:
description: 'Keep BuildKit state on cleanup. This is only useful on persistent self-hosted runners.'
default: 'false'
required: false
cache-binary: cache-binary:
description: 'Cache buildx binary to GitHub Actions cache backend' description: 'Cache buildx binary to GitHub Actions cache backend'
default: 'true' default: 'true'

38
dist/index.js generated vendored

File diff suppressed because one or more lines are too long

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long

2
dist/sourcemap-register.js generated vendored

File diff suppressed because one or more lines are too long

View File

@ -23,27 +23,27 @@
], ],
"author": "Docker Inc.", "author": "Docker Inc.",
"license": "Apache-2.0", "license": "Apache-2.0",
"packageManager": "yarn@4.9.2", "packageManager": "yarn@3.6.3",
"dependencies": { "dependencies": {
"@actions/core": "^1.11.1", "@actions/core": "^1.11.1",
"@docker/actions-toolkit": "^0.63.0", "@docker/actions-toolkit": "^0.56.0",
"js-yaml": "^4.1.0" "js-yaml": "^4.1.0"
}, },
"devDependencies": { "devDependencies": {
"@types/js-yaml": "^4.0.9", "@types/js-yaml": "^4.0.9",
"@types/node": "^20.19.9", "@types/node": "^20.12.12",
"@types/uuid": "^10.0.0", "@types/uuid": "^10.0.0",
"@typescript-eslint/eslint-plugin": "^7.18.0", "@typescript-eslint/eslint-plugin": "^7.9.0",
"@typescript-eslint/parser": "^7.18.0", "@typescript-eslint/parser": "^7.9.0",
"@vercel/ncc": "^0.38.3", "@vercel/ncc": "^0.38.1",
"eslint": "^8.57.1", "eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.2", "eslint-config-prettier": "^9.1.0",
"eslint-plugin-jest": "^28.14.0", "eslint-plugin-jest": "^28.5.0",
"eslint-plugin-prettier": "^5.5.4", "eslint-plugin-prettier": "^5.1.3",
"jest": "^29.7.0", "jest": "^29.7.0",
"prettier": "^3.6.2", "prettier": "^3.2.5",
"ts-jest": "^29.4.1", "ts-jest": "^29.1.2",
"ts-node": "^10.9.2", "ts-node": "^10.9.2",
"typescript": "^5.9.2" "typescript": "^5.4.5"
} }
} }

View File

@ -25,13 +25,12 @@ export interface Inputs {
append: string; append: string;
cacheBinary: boolean; cacheBinary: boolean;
cleanup: boolean; cleanup: boolean;
keepState: boolean;
} }
export async function getInputs(): Promise<Inputs> { export async function getInputs(): Promise<Inputs> {
return { return {
version: core.getInput('version'), version: core.getInput('version'),
name: await getBuilderName(core.getInput('name'), core.getInput('driver') || 'docker-container'), name: await getBuilderName(core.getInput('driver') || 'docker-container'),
driver: core.getInput('driver') || 'docker-container', driver: core.getInput('driver') || 'docker-container',
driverOpts: Util.getInputList('driver-opts', {ignoreComma: true, quote: false}), driverOpts: Util.getInputList('driver-opts', {ignoreComma: true, quote: false}),
buildkitdFlags: core.getInput('buildkitd-flags'), buildkitdFlags: core.getInput('buildkitd-flags'),
@ -42,14 +41,13 @@ export async function getInputs(): Promise<Inputs> {
buildkitdConfig: core.getInput('buildkitd-config') || core.getInput('config'), buildkitdConfig: core.getInput('buildkitd-config') || core.getInput('config'),
buildkitdConfigInline: core.getInput('buildkitd-config-inline') || core.getInput('config-inline'), buildkitdConfigInline: core.getInput('buildkitd-config-inline') || core.getInput('config-inline'),
append: core.getInput('append'), append: core.getInput('append'),
keepState: core.getBooleanInput('keep-state'),
cacheBinary: core.getBooleanInput('cache-binary'), cacheBinary: core.getBooleanInput('cache-binary'),
cleanup: core.getBooleanInput('cleanup') cleanup: core.getBooleanInput('cleanup')
}; };
} }
export async function getBuilderName(name: string, driver: string): Promise<string> { export async function getBuilderName(driver: string): Promise<string> {
return driver == 'docker' ? await Docker.context() : name || `builder-${crypto.randomUUID()}`; return driver == 'docker' ? await Docker.context() : `builder-${crypto.randomUUID()}`;
} }
export async function getCreateArgs(inputs: Inputs, toolkit: Toolkit): Promise<Array<string>> { export async function getCreateArgs(inputs: Inputs, toolkit: Toolkit): Promise<Array<string>> {

View File

@ -28,12 +28,6 @@ actionsToolkit.run(
const standalone = await toolkit.buildx.isStandalone(); const standalone = await toolkit.buildx.isStandalone();
stateHelper.setStandalone(standalone); stateHelper.setStandalone(standalone);
if (inputs.keepState && inputs.driver !== 'docker-container') {
// https://docs.docker.com/reference/cli/docker/buildx/rm/#keep-state
throw new Error(`Cannot use keep-state with ${inputs.driver} driver`);
}
stateHelper.setKeepState(inputs.keepState);
await core.group(`Docker info`, async () => { await core.group(`Docker info`, async () => {
try { try {
await Docker.printVersion(); await Docker.printVersion();
@ -124,9 +118,6 @@ actionsToolkit.run(
if (inputs.driver !== 'docker') { if (inputs.driver !== 'docker') {
await core.group(`Creating a new builder instance`, async () => { await core.group(`Creating a new builder instance`, async () => {
if (await toolkit.builder.exists(inputs.name)) {
core.info(`Builder ${inputs.name} already exists, skipping creation`);
} else {
const certsDriverOpts = Buildx.resolveCertsDriverOpts(inputs.driver, inputs.endpoint, { const certsDriverOpts = Buildx.resolveCertsDriverOpts(inputs.driver, inputs.endpoint, {
cacert: process.env[`${context.builderNodeEnvPrefix}_0_AUTH_TLS_CACERT`], cacert: process.env[`${context.builderNodeEnvPrefix}_0_AUTH_TLS_CACERT`],
cert: process.env[`${context.builderNodeEnvPrefix}_0_AUTH_TLS_CERT`], cert: process.env[`${context.builderNodeEnvPrefix}_0_AUTH_TLS_CERT`],
@ -143,7 +134,6 @@ actionsToolkit.run(
throw new Error(res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'); throw new Error(res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error');
} }
}); });
}
}); });
} }
@ -189,7 +179,6 @@ actionsToolkit.run(
throw new Error(`Cannot set buildx as default builder without the Docker CLI`); throw new Error(`Cannot set buildx as default builder without the Docker CLI`);
} }
await core.group(`Setting buildx as default builder`, async () => { await core.group(`Setting buildx as default builder`, async () => {
stateHelper.setBuildxIsDefaultBuilder(true);
const installCmd = await toolkit.buildx.getCommand(['install']); const installCmd = await toolkit.buildx.getCommand(['install']);
await Exec.getExecOutput(installCmd.command, installCmd.args, { await Exec.getExecOutput(installCmd.command, installCmd.args, {
ignoreReturnCode: true ignoreReturnCode: true
@ -259,7 +248,7 @@ actionsToolkit.run(
const buildx = new Buildx({standalone: stateHelper.standalone}); const buildx = new Buildx({standalone: stateHelper.standalone});
const builder = new Builder({buildx: buildx}); const builder = new Builder({buildx: buildx});
if (await builder.exists(stateHelper.builderName)) { if (await builder.exists(stateHelper.builderName)) {
const rmCmd = await buildx.getCommand(['rm', stateHelper.builderName, ...(stateHelper.keepState ? ['--keep-state'] : [])]); const rmCmd = await buildx.getCommand(['rm', stateHelper.builderName]);
await Exec.getExecOutput(rmCmd.command, rmCmd.args, { await Exec.getExecOutput(rmCmd.command, rmCmd.args, {
ignoreReturnCode: true ignoreReturnCode: true
}).then(res => { }).then(res => {
@ -290,17 +279,5 @@ actionsToolkit.run(
fs.rmSync(stateHelper.certsDir, {recursive: true}); fs.rmSync(stateHelper.certsDir, {recursive: true});
}); });
} }
if (stateHelper.buildxIsDefaultBuilder) {
await core.group(`Restoring default builder`, async () => {
await Exec.getExecOutput('docker', ['buildx', 'uninstall'], {
ignoreReturnCode: true
}).then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
core.warning(`${res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'}`);
}
});
});
}
} }
); );

View File

@ -8,8 +8,6 @@ export const containerName = process.env['STATE_containerName'] || '';
export const certsDir = process.env['STATE_certsDir'] || ''; export const certsDir = process.env['STATE_certsDir'] || '';
export const tmpDockerContext = process.env['STATE_tmpDockerContext'] || ''; export const tmpDockerContext = process.env['STATE_tmpDockerContext'] || '';
export const cleanup = /true/i.test(process.env['STATE_cleanup'] || ''); export const cleanup = /true/i.test(process.env['STATE_cleanup'] || '');
export const buildxIsDefaultBuilder = /true/i.test(process.env['STATE_buildxIsDefaultBuilder'] || '');
export const keepState = /true/i.test(process.env['STATE_keepState'] || '');
export function setDebug(debug: string) { export function setDebug(debug: string) {
core.saveState('isDebug', debug); core.saveState('isDebug', debug);
@ -42,11 +40,3 @@ export function setTmpDockerContext(tmpDockerContext: string) {
export function setCleanup(cleanup: boolean) { export function setCleanup(cleanup: boolean) {
core.saveState('cleanup', cleanup); core.saveState('cleanup', cleanup);
} }
export function setBuildxIsDefaultBuilder(buildxIsDefaultBuilder: boolean) {
core.saveState('buildxIsDefaultBuilder', buildxIsDefaultBuilder);
}
export function setKeepState(keepState: boolean) {
core.saveState('keepState', keepState);
}

4601
yarn.lock

File diff suppressed because it is too large Load Diff