diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d1e2610..499dba5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -74,6 +74,35 @@ jobs: if: always() uses: crazy-max/ghaction-dump-context@v2 + daemon-config: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-latest + - macos-latest + - windows-latest + steps: + - + name: Checkout + uses: actions/checkout@v3 + - + name: Set up Docker + uses: ./ + with: + daemon-config: | + { + "debug": true, + "features": { + "containerd-snapshotter": true + } + } + - + name: Dump context + if: always() + uses: crazy-max/ghaction-dump-context@v2 + context: runs-on: ${{ matrix.os }} strategy: diff --git a/README.md b/README.md index 95ea178..41b35fa 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ Works on Linux, macOS and Windows. ___ * [Usage](#usage) + * [Quick start](#quick-start) + * [Daemon configuration](#daemon-configuration) * [Customizing](#customizing) * [inputs](#inputs) * [Notes](#notes) @@ -22,6 +24,8 @@ ___ ## Usage +### Quick start + ```yaml name: ci @@ -37,17 +41,48 @@ jobs: uses: crazy-max/ghaction-setup-docker@v1 ``` +### Daemon configuration + +You can [configure the Docker daemon](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file) +using the `daemon-config` input. In the following example, we configure the +Docker daemon to enable debug and the [containerd image store](https://docs.docker.com/storage/containerd/) +feature: + +```yaml +name: ci + +on: + push: + +jobs: + docker: + runs-on: ubuntu-latest + steps: + - + name: Set up Docker + uses: crazy-max/ghaction-setup-docker@v1 + with: + daemon-config: | + { + "debug": true, + "features": { + "containerd-snapshotter": true + } + } +``` + ## Customizing ### inputs Following inputs can be used as `step.with` keys -| Name | Type | Default | Description | -|-----------|--------|-----------------------|---------------------------------------------------------------------------------------------------| -| `version` | String | `latest` | Docker CE version (e.g., `v23.0.1`). | -| `channel` | String | `stable` | Docker CE [channel](https://download.docker.com/linux/static/) (e.g, `stable`, `edge` or `test`). | -| `context` | String | `setup-docker-action` | Docker context name. | +| Name | Type | Default | Description | +|-----------------|--------|-----------------------|-----------------------------------------------------------------------------------------------------------------------------| +| `version` | String | `latest` | Docker CE version (e.g., `v23.0.1`). | +| `channel` | String | `stable` | Docker CE [channel](https://download.docker.com/linux/static/) (e.g, `stable`, `edge` or `test`). | +| `daemon-config` | String | | [Docker daemon JSON configuration](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file) | +| `context` | String | `setup-docker-action` | Docker context name. | ## Notes diff --git a/__tests__/context.test.ts b/__tests__/context.test.ts index bc23768..187bfbd 100644 --- a/__tests__/context.test.ts +++ b/__tests__/context.test.ts @@ -23,6 +23,7 @@ describe('getInputs', () => { version: 'v23.0.1', channel: '', context: '', + daemonConfig: '', } as context.Inputs ], [ @@ -31,11 +32,13 @@ describe('getInputs', () => { ['version', 'v23.0.0-rc.4'], ['channel', 'test'], ['context', 'foo'], + ['daemon-config', `{"debug":true,"features":{"containerd-snapshotter":true}}`], ]), { version: 'v23.0.0-rc.4', channel: 'test', context: 'foo', + daemonConfig: `{"debug":true,"features":{"containerd-snapshotter":true}}`, } as context.Inputs ], [ @@ -45,6 +48,7 @@ describe('getInputs', () => { version: 'latest', channel: '', context: '', + daemonConfig: '', } as context.Inputs ] ])( diff --git a/action.yml b/action.yml index 548a519..c8d8d0c 100644 --- a/action.yml +++ b/action.yml @@ -14,6 +14,9 @@ inputs: channel: description: 'Docker CE channel. (e.g, stable, edge or test)' required: false + daemon-config: + description: 'Docker daemon JSON configuration' + required: false context: description: 'Docker context name. (default setup-docker-action)' required: false diff --git a/src/context.ts b/src/context.ts index b5f0260..40ee91b 100644 --- a/src/context.ts +++ b/src/context.ts @@ -3,6 +3,7 @@ import * as core from '@actions/core'; export interface Inputs { version: string; channel: string; + daemonConfig?: string; context: string; } @@ -10,6 +11,7 @@ export function getInputs(): Inputs { return { version: core.getInput('version') || 'latest', channel: core.getInput('channel'), + daemonConfig: core.getInput('daemon-config'), context: core.getInput('context') }; } diff --git a/src/main.ts b/src/main.ts index e6d3930..27f259e 100644 --- a/src/main.ts +++ b/src/main.ts @@ -23,7 +23,8 @@ actionsToolkit.run( runDir: runDir, version: input.version, channel: input.channel || 'stable', - contextName: input.context || 'setup-docker-action' + contextName: input.context || 'setup-docker-action', + daemonConfig: input.daemonConfig }); let toolDir; if (!(await Docker.isAvailable()) || input.version) {