15 Commits

Author SHA1 Message Date
370a7dad4b Merge pull request #139 from vvoland/docs-version-csv
docs: Document `version` csv format
2024-12-16 12:53:19 +01:00
23c3839175 docs: Document version csv format
Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2024-12-16 12:03:55 +01:00
b814c39737 Merge pull request #138 from crazy-max/expose-tcp-input
tcp-port opt to expose Docker API to a local TCP address
2024-12-16 11:58:33 +01:00
75153b5b5e chore: update generated content 2024-12-16 11:22:38 +01:00
3a56725668 tcp-port opt to expose Docker API to a local TCP address 2024-12-16 11:22:38 +01:00
fde3095c59 Merge pull request #140 from docker/dependabot/npm_and_yarn/docker/actions-toolkit-0.49.0
build(deps): bump @docker/actions-toolkit from 0.48.0 to 0.49.0
2024-12-16 11:17:40 +01:00
d22c57e6c4 chore: update generated content 2024-12-16 11:06:49 +01:00
6172ee107f build(deps): bump @docker/actions-toolkit from 0.48.0 to 0.49.0
Bumps [@docker/actions-toolkit](https://github.com/docker/actions-toolkit) from 0.48.0 to 0.49.0.
- [Release notes](https://github.com/docker/actions-toolkit/releases)
- [Commits](https://github.com/docker/actions-toolkit/compare/v0.48.0...v0.49.0)

---
updated-dependencies:
- dependency-name: "@docker/actions-toolkit"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-16 09:58:50 +00:00
2a248d822c Merge pull request #137 from docker/dependabot/npm_and_yarn/docker/actions-toolkit-0.48.0
build(deps): bump @docker/actions-toolkit from 0.47.0 to 0.48.0
2024-12-12 16:00:49 +01:00
6dbd87054b chore: update generated content 2024-12-12 15:51:25 +01:00
68b1efda1d build(deps): bump @docker/actions-toolkit from 0.47.0 to 0.48.0
Bumps [@docker/actions-toolkit](https://github.com/docker/actions-toolkit) from 0.47.0 to 0.48.0.
- [Release notes](https://github.com/docker/actions-toolkit/releases)
- [Commits](https://github.com/docker/actions-toolkit/compare/v0.47.0...v0.48.0)

---
updated-dependencies:
- dependency-name: "@docker/actions-toolkit"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-12 14:07:23 +00:00
7188e7a998 Merge pull request #135 from crazy-max/ci-disable-summary
ci: disable build summary
2024-12-06 15:35:19 +01:00
927974f719 Merge pull request #134 from crazy-max/update-readme
readme: update action to latest stable
2024-12-06 15:35:06 +01:00
1439ace8f2 ci: disable build summary 2024-12-06 14:52:34 +01:00
b86a7cc004 readme: update action to latest stable 2024-12-06 14:44:50 +01:00
10 changed files with 159 additions and 19 deletions

View File

@ -18,6 +18,7 @@ on:
env:
DOCKER_VERSION: v27.3.1
DOCKER_BUILD_SUMMARY: false
jobs:
main:
@ -270,3 +271,31 @@ jobs:
name: List contexts
run: |
docker context ls
tcp:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
#- macos-14 # no virt: https://github.com/docker/actions-toolkit/issues/317
- macos-13
- windows-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Set up Docker
id: setup_docker
uses: ./
with:
version: ${{ env.DOCKER_VERSION }}
tcp-port: 2378
-
name: Check docker info through TCP
run: |
docker info
env:
DOCKER_HOST: ${{ steps.setup_docker.outputs.tcp }}

View File

@ -31,6 +31,7 @@ ___
* [Define custom `limactl start` arguments (macOS)](#define-custom-limactl-start-arguments-macos)
* [Customizing](#customizing)
* [inputs](#inputs)
* [inputs.version](#inputsversion)
* [outputs](#outputs)
* [Contributing](#contributing)
* [License](#license)
@ -51,7 +52,7 @@ jobs:
steps:
-
name: Set up Docker
uses: docker/setup-docker-action@v3
uses: docker/setup-docker-action@v4
```
### Daemon configuration
@ -73,7 +74,7 @@ jobs:
steps:
-
name: Set up Docker
uses: docker/setup-docker-action@v3
uses: docker/setup-docker-action@v4
with:
daemon-config: |
{
@ -101,7 +102,7 @@ jobs:
steps:
-
name: Set up Docker
uses: docker/setup-docker-action@v3
uses: docker/setup-docker-action@v4
env:
LIMA_START_ARGS: --cpus 4 --memory 8
```
@ -114,20 +115,88 @@ The following inputs can be used as `step.with` keys
| Name | Type | Default | Description |
|-----------------|--------|-----------------------|-----------------------------------------------------------------------------------------------------------------------------|
| `version` | String | `latest` | Docker CE version (e.g., `v24.0.6`). |
| `channel` | String | `stable` | Docker CE [channel](https://download.docker.com/linux/static/) (e.g, `stable`, `edge` or `test`). |
| `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` |
| `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 |
| `context` | String | `setup-docker-action` | Docker context name. |
| `set-host` | Bool | `false` | Set `DOCKER_HOST` environment variable to docker socket path. |
| `rootless` | Bool | `false` | Start daemon in rootless mode |
### inputs.version
By default, the latest stable version of Docker is fetched from download.docker.com.
You can specify a specific version number (e.g. `v27.4.0`).
Which is a shorthand for the full comma separated value:
`type=archive,channel=stable,version=v27.4.0`
You can also use this full csv format instead.
Currently supported source types are:
- `archive`
- `image`
#### `type=archive`
| Key | Default | Description |
|-----------|------------|--------------------------------------------------------------------------------------|
| `type` | `archive` | The source type of the Docker binaries. Possible values are `archive` and `image`. |
| `channel` | `stable` | The download.docker.com channel (`stable` or `test`). |
| `version` | `latest` | The Docker version to use. |
Examples:
```yaml
# last stable released version
version: latest
version: type=archive # same as above
version: version=latest # same as above
version: type=archive,version=latest # same as above
```
```yaml
# v27.3.0-rc.1 from test channel
version: type=archive,version=27.3.0-rc.1,channel=test
```
#### `type=image`
Other possible source type is `image` which will pull the Docker binaries from the `moby/moby-bin` and
`dockereng/cli-bin` Docker Hub repositories.
The advantage of using this source type is that these images are built by the Moby and Docker CI pipelines
for each branch and PR, so you can use the `tag` input to install a specific version or branch (e.g. `master`).
| Key | Default | Description |
|-----------|------------|--------------------------------------------------------------------------------------|
| `tag` | `latest` | The image tag to use. |
See https://hub.docker.com/r/moby/moby-bin/tags and https://hub.docker.com/r/dockereng/cli-bin/tags for available tags.
Examples:
```yaml
# install last stable released version from bin images
version: type=image
version: type=image,tag=latest # same as above
```
```yaml
# a cutting-edge version from the `master` branch
version: type=image,tag=master
```
```yaml
# install v27.4.0 from bin images
version: type=image,tag=27.4.0
```
### outputs
The following outputs are available
| Name | Type | Description |
|--------|--------|--------------------|
| `sock` | String | Docker socket path |
| Name | Type | Description |
|--------|--------|---------------------------------------|
| `sock` | String | Docker socket path |
| `tcp` | String | Docker TCP address if tcp-port is set |
## Contributing

View File

@ -185,6 +185,27 @@ describe('getInputs', () => {
rootless: true,
} as context.Inputs
],
[
9,
new Map<string, string>([
['version', 'v24.0.8'],
['tcp-port', '2378'],
['set-host', 'false'],
['rootless', 'false'],
]),
{
source: {
type: 'archive',
version: 'v24.0.8',
channel: 'stable'
},
context: '',
daemonConfig: '',
tcpPort: 2378,
rootless: false,
setHost: false
} as context.Inputs
],
])(
'[%d] given %p as inputs, returns %p',
async (num: number, inputs: Map<string, string>, expected: context.Inputs) => {

View File

@ -17,6 +17,9 @@ inputs:
daemon-config:
description: 'Docker daemon JSON configuration'
required: false
tcp-port:
description: 'TCP port to expose the Docker API locally'
required: false
context:
description: 'Docker context name. (default setup-docker-action)'
required: false
@ -32,6 +35,8 @@ inputs:
outputs:
sock:
description: "Docker socket path"
tcp:
description: "Docker TCP address if tcp-port is set"
runs:
using: 'node20'

4
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

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

View File

@ -1,10 +1,13 @@
import * as core from '@actions/core';
import {InstallSource} from '@docker/actions-toolkit/lib/docker/install';
import {parse} from 'csv-parse/sync';
import {InstallSource} from '@docker/actions-toolkit/lib/docker/install';
import {Util} from '@docker/actions-toolkit/lib/util';
export interface Inputs {
source: InstallSource;
daemonConfig?: string;
tcpPort?: number;
context: string;
setHost: boolean;
rootless: boolean;
@ -21,6 +24,7 @@ export function getInputs(): Inputs {
return {
source: source,
daemonConfig: core.getInput('daemon-config'),
tcpPort: Util.getInputNumber('tcp-port'),
context: core.getInput('context'),
setHost: core.getBooleanInput('set-host'),
rootless: core.getBooleanInput('rootless')

View File

@ -19,12 +19,20 @@ actionsToolkit.run(
throw new Error(`'default' context cannot be used.`);
}
let tcpPort: number | undefined;
let tcpAddress: string | undefined;
if (input.tcpPort) {
tcpPort = input.tcpPort;
tcpAddress = `tcp://127.0.0.1:${tcpPort}`;
}
const install = new Install({
runDir: runDir,
source: input.source,
rootless: input.rootless,
contextName: input.context || 'setup-docker-action',
daemonConfig: input.daemonConfig
daemonConfig: input.daemonConfig,
localTCPPort: tcpPort
});
let toolDir;
if (!(await Docker.isAvailable()) || input.source) {
@ -38,6 +46,10 @@ actionsToolkit.run(
await core.group(`Setting outputs`, async () => {
core.info(`sock=${sockPath}`);
core.setOutput('sock', sockPath);
if (tcpAddress) {
core.info(`tcp=${tcpAddress}`);
core.setOutput('tcp', tcpAddress);
}
});
if (input.setHost) {

View File

@ -1102,9 +1102,9 @@ __metadata:
languageName: node
linkType: hard
"@docker/actions-toolkit@npm:^0.47.0":
version: 0.47.0
resolution: "@docker/actions-toolkit@npm:0.47.0"
"@docker/actions-toolkit@npm:^0.49.0":
version: 0.49.0
resolution: "@docker/actions-toolkit@npm:0.49.0"
dependencies:
"@actions/artifact": ^2.1.11
"@actions/cache": ^3.3.0
@ -1127,7 +1127,7 @@ __metadata:
semver: ^7.6.3
tar-stream: ^3.1.7
tmp: ^0.2.3
checksum: a0008259ab7108e4f74e1f8c5ec79d917032170e746e75f895828c3afd4120e4a72e4d8fd2dd620781a72fb5d663e491d1f84b39e4002199d5b2cd878c62913c
checksum: 5e945601180002f129f095bba2d7d938b5ca69e87631d5e96a0d3b2254a8b034ab4bafbf7582ea82995e39610ad00fd68b34ab5875b9b314690328f714ad79d0
languageName: node
linkType: hard
@ -3359,7 +3359,7 @@ __metadata:
resolution: "docker-setup-docker@workspace:."
dependencies:
"@actions/core": ^1.11.1
"@docker/actions-toolkit": ^0.47.0
"@docker/actions-toolkit": ^0.49.0
"@types/node": ^20.6.0
"@typescript-eslint/eslint-plugin": ^6.6.0
"@typescript-eslint/parser": ^6.6.0