Compare commits

...

7 Commits

Author SHA1 Message Date
CrazyMax
46897a6289
Merge pull request #167 from docker/dependabot/npm_and_yarn/form-data-2.5.5
build(deps): bump form-data from 2.5.1 to 2.5.5
2025-08-06 22:04:03 +02:00
CrazyMax
74ac62f5d7
Merge pull request #168 from ArunKumarT1995/feature/rundirinput
Add input for runtime basedir
2025-08-06 22:03:44 +02:00
CrazyMax
a4da7e5ab9
readme: fix inputs table
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-08-06 21:43:43 +02:00
CrazyMax
8f22df35b2
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-08-06 21:43:42 +02:00
CrazyMax
d2d8fc9bf5
move runtime-basedir default to context
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-08-06 21:43:42 +02:00
ArunKumarT1995
de8d0f39ec
add runtime-basedir input
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-08-06 21:36:25 +02:00
dependabot[bot]
0d6d6d60ff
build(deps): bump form-data from 2.5.1 to 2.5.5
Bumps [form-data](https://github.com/form-data/form-data) from 2.5.1 to 2.5.5.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/v2.5.5/CHANGELOG.md)
- [Commits](https://github.com/form-data/form-data/compare/v2.5.1...v2.5.5)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 2.5.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 23:11:51 +00:00
8 changed files with 186 additions and 34 deletions

View File

@ -113,15 +113,16 @@ 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 |
### inputs.version ### inputs.version

View File

@ -1,4 +1,6 @@
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';
@ -30,7 +32,8 @@ describe('getInputs', () => {
context: '', context: '',
daemonConfig: '', daemonConfig: '',
rootless: false, rootless: false,
setHost: false setHost: false,
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
} as context.Inputs } as context.Inputs
], ],
[ [
@ -52,7 +55,8 @@ 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`),
} as context.Inputs } as context.Inputs
], ],
[ [
@ -70,7 +74,8 @@ describe('getInputs', () => {
context: '', context: '',
daemonConfig: '', daemonConfig: '',
rootless: false, rootless: false,
setHost: true setHost: true,
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
} as context.Inputs } as context.Inputs
], ],
[ [
@ -90,7 +95,8 @@ 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`),
} as context.Inputs } as context.Inputs
], ],
[ [
@ -108,7 +114,8 @@ describe('getInputs', () => {
context: '', context: '',
daemonConfig: '', daemonConfig: '',
rootless: false, rootless: false,
setHost: false setHost: false,
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
} as context.Inputs } as context.Inputs
], ],
[ [
@ -128,6 +135,7 @@ describe('getInputs', () => {
context: '', context: '',
daemonConfig: '', daemonConfig: '',
rootless: false, rootless: false,
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
} as context.Inputs } as context.Inputs
], ],
[ [
@ -147,6 +155,7 @@ describe('getInputs', () => {
context: '', context: '',
daemonConfig: '', daemonConfig: '',
rootless: false, rootless: false,
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
} as context.Inputs } as context.Inputs
], ],
[ [
@ -165,6 +174,7 @@ describe('getInputs', () => {
context: '', context: '',
daemonConfig: '', daemonConfig: '',
rootless: false, rootless: false,
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
} as context.Inputs } as context.Inputs
], ],
[ [
@ -183,6 +193,7 @@ describe('getInputs', () => {
context: '', context: '',
daemonConfig: '', daemonConfig: '',
rootless: true, rootless: true,
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
} as context.Inputs } as context.Inputs
], ],
[ [
@ -203,7 +214,8 @@ describe('getInputs', () => {
daemonConfig: '', daemonConfig: '',
tcpPort: 2378, tcpPort: 2378,
rootless: false, rootless: false,
setHost: false setHost: false,
runtimeBasedir: path.join(os.homedir(), `setup-docker-action`),
} as context.Inputs } as context.Inputs
], ],
])( ])(

View File

@ -31,6 +31,9 @@ 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
outputs: outputs:
sock: sock:

2
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

View File

@ -1,3 +1,5 @@
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';
@ -11,6 +13,7 @@ export interface Inputs {
context: string; context: string;
setHost: boolean; setHost: boolean;
rootless: boolean; rootless: boolean;
runtimeBasedir: string;
} }
export function getInputs(): Inputs { export function getInputs(): Inputs {
@ -27,7 +30,8 @@ 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`)
}; };
} }

View File

@ -1,5 +1,4 @@
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';
@ -18,7 +17,7 @@ actionsToolkit.run(
// main // main
async () => { async () => {
const input: context.Inputs = context.getInputs(); const input: context.Inputs = context.getInputs();
const runDir = path.join(os.homedir(), `setup-docker-action-${crypto.randomUUID().slice(0, 8)}`); const runDir = path.join(input.runtimeBasedir, `run-${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.`);

161
yarn.lock
View File

@ -2992,6 +2992,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2":
version: 1.0.2
resolution: "call-bind-apply-helpers@npm:1.0.2"
dependencies:
es-errors: ^1.3.0
function-bind: ^1.1.2
checksum: b2863d74fcf2a6948221f65d95b91b4b2d90cfe8927650b506141e669f7d5de65cea191bf788838bc40d13846b7886c5bc5c84ab96c3adbcf88ad69a72fcdc6b
languageName: node
linkType: hard
"callsites@npm:^3.0.0": "callsites@npm:^3.0.0":
version: 3.1.0 version: 3.1.0
resolution: "callsites@npm:3.1.0" resolution: "callsites@npm:3.1.0"
@ -3158,7 +3168,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8": "combined-stream@npm:^1.0.8":
version: 1.0.8 version: 1.0.8
resolution: "combined-stream@npm:1.0.8" resolution: "combined-stream@npm:1.0.8"
dependencies: dependencies:
@ -3408,6 +3418,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"dunder-proto@npm:^1.0.1":
version: 1.0.1
resolution: "dunder-proto@npm:1.0.1"
dependencies:
call-bind-apply-helpers: ^1.0.1
es-errors: ^1.3.0
gopd: ^1.2.0
checksum: 149207e36f07bd4941921b0ca929e3a28f1da7bd6b6ff8ff7f4e2f2e460675af4576eeba359c635723dc189b64cdd4787e0255897d5b135ccc5d15cb8685fc90
languageName: node
linkType: hard
"duplexify@npm:^3.5.0, duplexify@npm:^3.6.0": "duplexify@npm:^3.5.0, duplexify@npm:^3.6.0":
version: 3.7.1 version: 3.7.1
resolution: "duplexify@npm:3.7.1" resolution: "duplexify@npm:3.7.1"
@ -3503,6 +3524,41 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"es-define-property@npm:^1.0.1":
version: 1.0.1
resolution: "es-define-property@npm:1.0.1"
checksum: 0512f4e5d564021c9e3a644437b0155af2679d10d80f21adaf868e64d30efdfbd321631956f20f42d655fedb2e3a027da479fad3fa6048f768eb453a80a5f80a
languageName: node
linkType: hard
"es-errors@npm:^1.3.0":
version: 1.3.0
resolution: "es-errors@npm:1.3.0"
checksum: ec1414527a0ccacd7f15f4a3bc66e215f04f595ba23ca75cdae0927af099b5ec865f9f4d33e9d7e86f512f252876ac77d4281a7871531a50678132429b1271b5
languageName: node
linkType: hard
"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1":
version: 1.1.1
resolution: "es-object-atoms@npm:1.1.1"
dependencies:
es-errors: ^1.3.0
checksum: 214d3767287b12f36d3d7267ef342bbbe1e89f899cfd67040309fc65032372a8e60201410a99a1645f2f90c1912c8c49c8668066f6bdd954bcd614dda2e3da97
languageName: node
linkType: hard
"es-set-tostringtag@npm:^2.1.0":
version: 2.1.0
resolution: "es-set-tostringtag@npm:2.1.0"
dependencies:
es-errors: ^1.3.0
get-intrinsic: ^1.2.6
has-tostringtag: ^1.0.2
hasown: ^2.0.2
checksum: 789f35de4be3dc8d11fdcb91bc26af4ae3e6d602caa93299a8c45cf05d36cc5081454ae2a6d3afa09cceca214b76c046e4f8151e092e6fc7feeb5efb9e794fc6
languageName: node
linkType: hard
"escalade@npm:^3.1.1": "escalade@npm:^3.1.1":
version: 3.1.1 version: 3.1.1
resolution: "escalade@npm:3.1.1" resolution: "escalade@npm:3.1.1"
@ -3969,13 +4025,16 @@ __metadata:
linkType: hard linkType: hard
"form-data@npm:^2.5.0": "form-data@npm:^2.5.0":
version: 2.5.1 version: 2.5.5
resolution: "form-data@npm:2.5.1" resolution: "form-data@npm:2.5.5"
dependencies: dependencies:
asynckit: ^0.4.0 asynckit: ^0.4.0
combined-stream: ^1.0.6 combined-stream: ^1.0.8
mime-types: ^2.1.12 es-set-tostringtag: ^2.1.0
checksum: 5134ada56cc246b293a1ac7678dba6830000603a3979cf83ff7b2f21f2e3725202237cfb89e32bcb38a1d35727efbd3c3a22e65b42321e8ade8eec01ce755d08 hasown: ^2.0.2
mime-types: ^2.1.35
safe-buffer: ^5.2.1
checksum: ba6d8467f959c9bf36a52e423256c1e8055a8e650416760f54fa5db261529c3de698a4ce8378dd4fdb71b44be190906d6b73446556cc74e58de8bda01d09e9e7
languageName: node languageName: node
linkType: hard linkType: hard
@ -4052,6 +4111,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"function-bind@npm:^1.1.2":
version: 1.1.2
resolution: "function-bind@npm:1.1.2"
checksum: 2b0ff4ce708d99715ad14a6d1f894e2a83242e4a52ccfcefaee5e40050562e5f6dafc1adbb4ce2d4ab47279a45dc736ab91ea5042d843c3c092820dfe032efb1
languageName: node
linkType: hard
"gauge@npm:^4.0.3": "gauge@npm:^4.0.3":
version: 4.0.4 version: 4.0.4
resolution: "gauge@npm:4.0.4" resolution: "gauge@npm:4.0.4"
@ -4082,6 +4148,24 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"get-intrinsic@npm:^1.2.6":
version: 1.3.0
resolution: "get-intrinsic@npm:1.3.0"
dependencies:
call-bind-apply-helpers: ^1.0.2
es-define-property: ^1.0.1
es-errors: ^1.3.0
es-object-atoms: ^1.1.1
function-bind: ^1.1.2
get-proto: ^1.0.1
gopd: ^1.2.0
has-symbols: ^1.1.0
hasown: ^2.0.2
math-intrinsics: ^1.1.0
checksum: 301008e4482bb9a9cb49e132b88fee093bff373b4e6def8ba219b1e96b60158a6084f273ef5cafe832e42cd93462f4accb46a618d35fe59a2b507f2388c5b79d
languageName: node
linkType: hard
"get-package-type@npm:^0.1.0": "get-package-type@npm:^0.1.0":
version: 0.1.0 version: 0.1.0
resolution: "get-package-type@npm:0.1.0" resolution: "get-package-type@npm:0.1.0"
@ -4089,6 +4173,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"get-proto@npm:^1.0.1":
version: 1.0.1
resolution: "get-proto@npm:1.0.1"
dependencies:
dunder-proto: ^1.0.1
es-object-atoms: ^1.0.0
checksum: 4fc96afdb58ced9a67558698b91433e6b037aaa6f1493af77498d7c85b141382cf223c0e5946f334fb328ee85dfe6edd06d218eaf09556f4bc4ec6005d7f5f7b
languageName: node
linkType: hard
"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": "get-stream@npm:^6.0.0, get-stream@npm:^6.0.1":
version: 6.0.1 version: 6.0.1
resolution: "get-stream@npm:6.0.1" resolution: "get-stream@npm:6.0.1"
@ -4202,6 +4296,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"gopd@npm:^1.2.0":
version: 1.2.0
resolution: "gopd@npm:1.2.0"
checksum: cc6d8e655e360955bdccaca51a12a474268f95bb793fc3e1f2bdadb075f28bfd1fd988dab872daf77a61d78cbaf13744bc8727a17cfb1d150d76047d805375f3
languageName: node
linkType: hard
"graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6": "graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6":
version: 4.2.11 version: 4.2.11
resolution: "graceful-fs@npm:4.2.11" resolution: "graceful-fs@npm:4.2.11"
@ -4271,6 +4372,22 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0":
version: 1.1.0
resolution: "has-symbols@npm:1.1.0"
checksum: b2316c7302a0e8ba3aaba215f834e96c22c86f192e7310bdf689dd0e6999510c89b00fbc5742571507cebf25764d68c988b3a0da217369a73596191ac0ce694b
languageName: node
linkType: hard
"has-tostringtag@npm:^1.0.2":
version: 1.0.2
resolution: "has-tostringtag@npm:1.0.2"
dependencies:
has-symbols: ^1.0.3
checksum: 999d60bb753ad714356b2c6c87b7fb74f32463b8426e159397da4bde5bca7e598ab1073f4d8d4deafac297f2eb311484cd177af242776bf05f0d11565680468d
languageName: node
linkType: hard
"has-unicode@npm:^2.0.1": "has-unicode@npm:^2.0.1":
version: 2.0.1 version: 2.0.1
resolution: "has-unicode@npm:2.0.1" resolution: "has-unicode@npm:2.0.1"
@ -4287,6 +4404,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"hasown@npm:^2.0.2":
version: 2.0.2
resolution: "hasown@npm:2.0.2"
dependencies:
function-bind: ^1.1.2
checksum: e8516f776a15149ca6c6ed2ae3110c417a00b62260e222590e54aa367cbcd6ed99122020b37b7fbdf05748df57b265e70095d7bf35a47660587619b15ffb93db
languageName: node
linkType: hard
"he@npm:^1.2.0": "he@npm:^1.2.0":
version: 1.2.0 version: 1.2.0
resolution: "he@npm:1.2.0" resolution: "he@npm:1.2.0"
@ -5398,6 +5524,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"math-intrinsics@npm:^1.1.0":
version: 1.1.0
resolution: "math-intrinsics@npm:1.1.0"
checksum: 0e513b29d120f478c85a70f49da0b8b19bc638975eca466f2eeae0071f3ad00454c621bf66e16dd435896c208e719fc91ad79bbfba4e400fe0b372e7c1c9c9a2
languageName: node
linkType: hard
"merge-stream@npm:^2.0.0": "merge-stream@npm:^2.0.0":
version: 2.0.0 version: 2.0.0
resolution: "merge-stream@npm:2.0.0" resolution: "merge-stream@npm:2.0.0"
@ -5429,7 +5562,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"mime-types@npm:^2.1.12": "mime-types@npm:^2.1.12, mime-types@npm:^2.1.35":
version: 2.1.35 version: 2.1.35
resolution: "mime-types@npm:2.1.35" resolution: "mime-types@npm:2.1.35"
dependencies: dependencies:
@ -6268,6 +6401,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0":
version: 5.2.1
resolution: "safe-buffer@npm:5.2.1"
checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491
languageName: node
linkType: hard
"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": "safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1":
version: 5.1.2 version: 5.1.2
resolution: "safe-buffer@npm:5.1.2" resolution: "safe-buffer@npm:5.1.2"
@ -6275,13 +6415,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"safe-buffer@npm:~5.2.0":
version: 5.2.1
resolution: "safe-buffer@npm:5.2.1"
checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491
languageName: node
linkType: hard
"safer-buffer@npm:>= 2.1.2 < 3.0.0": "safer-buffer@npm:>= 2.1.2 < 3.0.0":
version: 2.1.2 version: 2.1.2
resolution: "safer-buffer@npm:2.1.2" resolution: "safer-buffer@npm:2.1.2"