Compare commits

..

No commits in common. "master" and "v4.1.0" have entirely different histories.

16 changed files with 397 additions and 857 deletions

View file

@ -28,17 +28,16 @@ jobs:
matrix: matrix:
os: os:
- ubuntu-latest - ubuntu-latest
- ubuntu-24.04-arm #- macos-14 # no virt: https://github.com/docker/actions-toolkit/issues/317
- macos-15-intel - macos-13
- windows-latest - windows-latest
version: version:
- ""
- v27.3.1 - v27.3.1
- type=image,tag=27.3.1 - type=image,tag=27.3.1
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v4
- -
name: Set up Docker name: Set up Docker
uses: ./ uses: ./
@ -52,13 +51,13 @@ jobs:
matrix: matrix:
os: os:
- ubuntu-latest - ubuntu-latest
- ubuntu-24.04-arm #- macos-14 # no virt: https://github.com/docker/actions-toolkit/issues/317
- macos-15-intel - macos-13
- windows-latest - windows-latest
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v4
- -
name: Set up Docker name: Set up Docker
uses: ./ uses: ./
@ -73,13 +72,13 @@ jobs:
matrix: matrix:
os: os:
- ubuntu-latest - ubuntu-latest
- ubuntu-24.04-arm #- macos-14 # no virt: https://github.com/docker/actions-toolkit/issues/317
- macos-15-intel - macos-13
- windows-latest - windows-latest
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v4
- -
name: Set up Docker name: Set up Docker
uses: ./ uses: ./
@ -100,13 +99,13 @@ jobs:
matrix: matrix:
os: os:
- ubuntu-latest - ubuntu-latest
- ubuntu-24.04-arm #- macos-14 # no virt: https://github.com/docker/actions-toolkit/issues/317
- macos-15-intel - macos-13
- windows-latest - windows-latest
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v4
- -
name: Set up Docker name: Set up Docker
uses: ./ uses: ./
@ -119,11 +118,12 @@ jobs:
docker context inspect foo docker context inspect foo
lima-start-args: lima-start-args:
runs-on: macos-15-intel #runs-on: macos-14 # no virt: https://github.com/docker/actions-toolkit/issues/317
runs-on: macos-13
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v4
- -
name: Set up Docker name: Set up Docker
uses: ./ uses: ./
@ -143,7 +143,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v4
- -
name: Uninstall containerd name: Uninstall containerd
if: matrix.containerd == 'containerd-tarball' if: matrix.containerd == 'containerd-tarball'
@ -183,11 +183,12 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
os: os:
- macos-15-intel #- macos-14 # no virt: https://github.com/docker/actions-toolkit/issues/317
- macos-13
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v4
- -
name: Set up Docker name: Set up Docker
uses: ./ uses: ./
@ -221,7 +222,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v4
- -
name: Set up Docker name: Set up Docker
uses: ./ uses: ./
@ -242,7 +243,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v4
- -
name: Set up Docker name: Set up Docker
uses: ./ uses: ./
@ -259,7 +260,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v4
- -
name: Set up Docker name: Set up Docker
uses: ./ uses: ./
@ -278,13 +279,13 @@ jobs:
matrix: matrix:
os: os:
- ubuntu-latest - ubuntu-latest
- ubuntu-24.04-arm #- macos-14 # no virt: https://github.com/docker/actions-toolkit/issues/317
- macos-15-intel - macos-13
- windows-latest - windows-latest
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v4
- -
name: Set up Docker name: Set up Docker
id: setup_docker id: setup_docker
@ -298,47 +299,3 @@ jobs:
docker info docker info
env: env:
DOCKER_HOST: ${{ steps.setup_docker.outputs.tcp }} DOCKER_HOST: ${{ steps.setup_docker.outputs.tcp }}
undock-regctl-version:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
undock_version:
- ''
- v0.9.0
regctl_version:
- ''
- v0.8.2
steps:
-
name: Checkout
uses: actions/checkout@v6
-
name: Set up Docker
uses: ./
with:
version: type=image
env:
UNDOCK_VERSION: ${{ matrix.undock_version }}
REGCTL_VERSION: ${{ matrix.regctl_version }}
docker-29:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-15-intel
- windows-latest
steps:
-
name: Checkout
uses: actions/checkout@v6
-
name: Set up Docker
uses: ./
with:
version: v29.0.0-rc.1
channel: test

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

@ -1,21 +0,0 @@
name: publish
on:
release:
types:
- published
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
packages: write
steps:
-
name: Checkout
uses: actions/checkout@v6
-
name: Publish
uses: actions/publish-immutable-action@v0.0.4

View file

@ -17,16 +17,15 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v4
- -
name: Test name: Test
uses: docker/bake-action@v6 uses: docker/bake-action@v5
with: with:
targets: test targets: test
- -
name: Upload coverage name: Upload coverage
uses: codecov/codecov-action@v5 uses: codecov/codecov-action@v5
with: with:
source: .
files: ./coverage/clover.xml files: ./coverage/clover.xml
token: ${{ secrets.CODECOV_TOKEN }} token: ${{ secrets.CODECOV_TOKEN }}

View file

@ -15,17 +15,16 @@ jobs:
prepare: prepare:
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
targets: ${{ steps.generate.outputs.targets }} targets: ${{ steps.targets.outputs.matrix }}
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v4
- -
name: List targets name: Targets matrix
id: generate id: targets
uses: docker/bake-action/subaction/list-targets@v6 run: |
with: echo "matrix=$(docker buildx bake validate --print | jq -cr '.group.validate.targets')" >> $GITHUB_OUTPUT
target: validate
validate: validate:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -36,8 +35,11 @@ jobs:
matrix: matrix:
target: ${{ fromJson(needs.prepare.outputs.targets) }} target: ${{ fromJson(needs.prepare.outputs.targets) }}
steps: steps:
-
name: Checkout
uses: actions/checkout@v4
- -
name: Validate name: Validate
uses: docker/bake-action@v6 uses: docker/bake-action@v5
with: with:
targets: ${{ matrix.target }} targets: ${{ matrix.target }}

View file

@ -113,17 +113,15 @@ jobs:
The following inputs can be used as `step.with` keys The following inputs can be used as `step.with` keys
| Name | Type | Default | Description | | Name | Type | Default | Description |
|-------------------|--------|------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------| |-----------------|--------|-----------------------|-----------------------------------------------------------------------------------------------------------------------------|
| `version` | String | `latest` | Docker version to use. See [inputs.version](#inputs.version). | | `version` | String | `latest` | Docker version to use. See [inputs.version](#inputs.version). |
| `channel` | String | `stable` | Docker CE [channel](https://download.docker.com/linux/static/) (`stable` or `test`). Only applicable to `type=archive` | | `channel` | String | `stable` | Docker CE [channel](https://download.docker.com/linux/static/) (`stable` or `test`). Only applicable to `type=archive` |
| `daemon-config` | String | | [Docker daemon JSON configuration](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file) | | `daemon-config` | String | | [Docker daemon JSON configuration](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file) |
| `tcp-port` | Number | | TCP port to expose the Docker API locally | | `tcp-port` | Number | | TCP port to expose the Docker API locally |
| `context` | String | `setup-docker-action` | Docker context name. | | `context` | String | `setup-docker-action` | Docker context name. |
| `set-host` | Bool | `false` | Set `DOCKER_HOST` environment variable to docker socket path. | | `set-host` | Bool | `false` | Set `DOCKER_HOST` environment variable to docker socket path. |
| `rootless` | Bool | `false` | Start daemon in rootless mode | | `rootless` | Bool | `false` | Start daemon in rootless mode |
| `runtime-basedir` | String | `<home>/setup-docker-action` | Docker runtime base directory |
| `github-token` | String | `${{ github.token }}` | Optional GitHub Token used to get releases and download assets to avoid rate limitation. On GitHub Enterprise, you might need to set a PAT for `github.com`. |
### inputs.version ### inputs.version

View file

@ -1,6 +1,4 @@
import {beforeEach, describe, expect, test} from '@jest/globals'; import {beforeEach, describe, expect, test} from '@jest/globals';
import * as os from 'os';
import * as path from 'path';
import * as context from '../src/context'; import * as context from '../src/context';
@ -32,9 +30,7 @@ describe('getInputs', () => {
context: '', context: '',
daemonConfig: '', daemonConfig: '',
rootless: false, rootless: false,
setHost: false, setHost: false
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
githubToken: '',
} as context.Inputs } as context.Inputs
], ],
[ [
@ -56,9 +52,7 @@ describe('getInputs', () => {
context: 'foo', context: 'foo',
daemonConfig: `{"debug":true,"features":{"containerd-snapshotter":true}}`, daemonConfig: `{"debug":true,"features":{"containerd-snapshotter":true}}`,
rootless: false, rootless: false,
setHost: false, setHost: false
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
githubToken: '',
} as context.Inputs } as context.Inputs
], ],
[ [
@ -76,9 +70,7 @@ describe('getInputs', () => {
context: '', context: '',
daemonConfig: '', daemonConfig: '',
rootless: false, rootless: false,
setHost: true, setHost: true
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
githubToken: '',
} as context.Inputs } as context.Inputs
], ],
[ [
@ -98,9 +90,7 @@ describe('getInputs', () => {
context: 'foo', context: 'foo',
daemonConfig: `{"debug":true,"features":{"containerd-snapshotter":true}}`, daemonConfig: `{"debug":true,"features":{"containerd-snapshotter":true}}`,
rootless: false, rootless: false,
setHost: false, setHost: false
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
githubToken: '',
} as context.Inputs } as context.Inputs
], ],
[ [
@ -118,9 +108,7 @@ describe('getInputs', () => {
context: '', context: '',
daemonConfig: '', daemonConfig: '',
rootless: false, rootless: false,
setHost: false, setHost: false
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
githubToken: '',
} as context.Inputs } as context.Inputs
], ],
[ [
@ -140,8 +128,6 @@ describe('getInputs', () => {
context: '', context: '',
daemonConfig: '', daemonConfig: '',
rootless: false, rootless: false,
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
githubToken: '',
} as context.Inputs } as context.Inputs
], ],
[ [
@ -161,8 +147,6 @@ describe('getInputs', () => {
context: '', context: '',
daemonConfig: '', daemonConfig: '',
rootless: false, rootless: false,
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
githubToken: '',
} as context.Inputs } as context.Inputs
], ],
[ [
@ -181,8 +165,6 @@ describe('getInputs', () => {
context: '', context: '',
daemonConfig: '', daemonConfig: '',
rootless: false, rootless: false,
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
githubToken: '',
} as context.Inputs } as context.Inputs
], ],
[ [
@ -201,8 +183,6 @@ describe('getInputs', () => {
context: '', context: '',
daemonConfig: '', daemonConfig: '',
rootless: true, rootless: true,
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
githubToken: '',
} as context.Inputs } as context.Inputs
], ],
[ [
@ -223,9 +203,7 @@ describe('getInputs', () => {
daemonConfig: '', daemonConfig: '',
tcpPort: 2378, tcpPort: 2378,
rootless: false, rootless: false,
setHost: false, setHost: false
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
githubToken: '',
} as context.Inputs } as context.Inputs
], ],
])( ])(

View file

@ -31,13 +31,6 @@ inputs:
description: 'Enable Docker rootless mode' description: 'Enable Docker rootless mode'
default: 'false' default: 'false'
required: false required: false
runtime-basedir:
description: 'Docker runtime base directory'
required: false
github-token:
description: "GitHub Token used to get releases and download assets"
default: ${{ github.token }}
required: false
outputs: outputs:
sock: sock:

28
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

6
dist/licenses.txt generated vendored
View file

@ -2532,6 +2532,9 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
dot-object
MIT
encoding encoding
MIT MIT
Copyright (c) 2012-2014 Andris Reinman Copyright (c) 2012-2014 Andris Reinman
@ -4244,6 +4247,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE. THE SOFTWARE.
twirp-ts
MIT
undici undici
MIT MIT
MIT License MIT License

View file

@ -1,9 +1,3 @@
target "_common" {
args = {
BUILDKIT_CONTEXT_KEEP_GIT_DIR = 1
}
}
group "default" { group "default" {
targets = ["build"] targets = ["build"]
} }
@ -17,49 +11,42 @@ group "validate" {
} }
target "build" { target "build" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "build-update" target = "build-update"
output = ["."] output = ["."]
} }
target "build-validate" { target "build-validate" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "build-validate" target = "build-validate"
output = ["type=cacheonly"] output = ["type=cacheonly"]
} }
target "format" { target "format" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "format-update" target = "format-update"
output = ["."] output = ["."]
} }
target "lint" { target "lint" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "lint" target = "lint"
output = ["type=cacheonly"] output = ["type=cacheonly"]
} }
target "vendor-update" { target "vendor-update" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "vendor-update" target = "vendor-update"
output = ["."] output = ["."]
} }
target "vendor-validate" { target "vendor-validate" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "vendor-validate" target = "vendor-validate"
output = ["type=cacheonly"] output = ["type=cacheonly"]
} }
target "test" { target "test" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "test-coverage" target = "test-coverage"
output = ["./coverage"] output = ["./coverage"]

View file

@ -27,7 +27,7 @@
"packageManager": "yarn@3.6.3", "packageManager": "yarn@3.6.3",
"dependencies": { "dependencies": {
"@actions/core": "^1.11.1", "@actions/core": "^1.11.1",
"@docker/actions-toolkit": "^0.69.0" "@docker/actions-toolkit": "^0.49.0"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^20.6.0", "@types/node": "^20.6.0",

View file

@ -1,5 +1,3 @@
import os from 'os';
import path from 'path';
import * as core from '@actions/core'; import * as core from '@actions/core';
import {parse} from 'csv-parse/sync'; import {parse} from 'csv-parse/sync';
@ -13,8 +11,6 @@ export interface Inputs {
context: string; context: string;
setHost: boolean; setHost: boolean;
rootless: boolean; rootless: boolean;
runtimeBasedir: string;
githubToken: string;
} }
export function getInputs(): Inputs { export function getInputs(): Inputs {
@ -31,9 +27,7 @@ export function getInputs(): Inputs {
tcpPort: Util.getInputNumber('tcp-port'), tcpPort: Util.getInputNumber('tcp-port'),
context: core.getInput('context'), context: core.getInput('context'),
setHost: core.getBooleanInput('set-host'), setHost: core.getBooleanInput('set-host'),
rootless: core.getBooleanInput('rootless'), rootless: core.getBooleanInput('rootless')
runtimeBasedir: core.getInput('runtime-basedir') || path.join(os.homedir(), `setup-docker-action`),
githubToken: core.getInput('github-token')
}; };
} }

View file

@ -1,51 +1,24 @@
import * as crypto from 'crypto'; import * as crypto from 'crypto';
import os from 'os';
import path from 'path'; import path from 'path';
import * as core from '@actions/core'; import * as core from '@actions/core';
import * as actionsToolkit from '@docker/actions-toolkit'; import * as actionsToolkit from '@docker/actions-toolkit';
import {Install} from '@docker/actions-toolkit/lib/docker/install'; import {Install} from '@docker/actions-toolkit/lib/docker/install';
import {Docker} from '@docker/actions-toolkit/lib/docker/docker'; import {Docker} from '@docker/actions-toolkit/lib/docker/docker';
import {Install as RegclientInstall} from '@docker/actions-toolkit/lib/regclient/install';
import {Install as UndockInstall} from '@docker/actions-toolkit/lib/undock/install';
import * as context from './context'; import * as context from './context';
import * as stateHelper from './state-helper'; import * as stateHelper from './state-helper';
const regctlDefaultVersion = 'v0.8.3';
const undockDefaultVersion = 'v0.10.0';
actionsToolkit.run( actionsToolkit.run(
// main // main
async () => { async () => {
const input: context.Inputs = context.getInputs(); const input: context.Inputs = context.getInputs();
const runDir = path.join(input.runtimeBasedir, `run-${crypto.randomUUID().slice(0, 8)}`); const runDir = path.join(os.homedir(), `setup-docker-action-${crypto.randomUUID().slice(0, 8)}`);
if (input.context == 'default') { if (input.context == 'default') {
throw new Error(`'default' context cannot be used.`); throw new Error(`'default' context cannot be used.`);
} }
if (input.source.type === 'image') {
await core.group(`Download and install regctl`, async () => {
const regclientInstall = new RegclientInstall({githubToken: input.githubToken});
const regclientBinPath = await regclientInstall.download(
process.env.REGCTL_VERSION && process.env.REGCTL_VERSION.trim()
? process.env.REGCTL_VERSION
: regctlDefaultVersion,
true
);
await regclientInstall.install(regclientBinPath);
});
await core.group(`Download and install undock`, async () => {
const undockInstall = new UndockInstall({githubToken: input.githubToken});
const undockBinPath = await undockInstall.download(
process.env.UNDOCK_VERSION && process.env.UNDOCK_VERSION.trim()
? process.env.UNDOCK_VERSION
: undockDefaultVersion,
true
);
await undockInstall.install(undockBinPath);
});
}
let tcpPort: number | undefined; let tcpPort: number | undefined;
let tcpAddress: string | undefined; let tcpAddress: string | undefined;
if (input.tcpPort) { if (input.tcpPort) {
@ -59,8 +32,7 @@ actionsToolkit.run(
rootless: input.rootless, rootless: input.rootless,
contextName: input.context || 'setup-docker-action', contextName: input.context || 'setup-docker-action',
daemonConfig: input.daemonConfig, daemonConfig: input.daemonConfig,
localTCPPort: tcpPort, localTCPPort: tcpPort
githubToken: input.githubToken
}); });
let toolDir; let toolDir;
if (!(await Docker.isAvailable()) || input.source) { if (!(await Docker.isAvailable()) || input.source) {

946
yarn.lock

File diff suppressed because it is too large Load diff