mirror of
https://github.com/docker/setup-docker-action.git
synced 2025-06-14 07:27:13 +02:00
Compare commits
114 Commits
releases/v
...
v3.5.0
Author | SHA1 | Date | |
---|---|---|---|
635d07c09d | |||
34a3d15d63 | |||
560d8b137b | |||
482b1d74c1 | |||
f0ff59fe55 | |||
939fbc5e6e | |||
a0bafae0b8 | |||
a37e5b7d61 | |||
f6d883591e | |||
02c50bf68d | |||
6ec0bb821a | |||
3b54d1cfdf | |||
eaea3291c9 | |||
8b555caf8d | |||
40162ae1f1 | |||
7d1184f528 | |||
2419f2cbba | |||
332d315257 | |||
343f86705e | |||
bcd97be19b | |||
e02739be38 | |||
0d3aa44c5c | |||
a508bb356e | |||
3e94cecda0 | |||
701f172a16 | |||
90aad53e72 | |||
a9ddd812ce | |||
91cbfc7996 | |||
7de04ecfd0 | |||
8321f1dc18 | |||
ff9a36b06e | |||
cd5049af64 | |||
810b53a8ba | |||
ba5a8c50ed | |||
8677037d08 | |||
ff2661333b | |||
26145a578d | |||
0692aeebfc | |||
47611ea40b | |||
7bb565780b | |||
9794ac9406 | |||
701bc4e9ed | |||
958155397b | |||
de4e249b98 | |||
a2e96b1577 | |||
2e05eb17ec | |||
b52307508d | |||
a3485f7b8f | |||
1977c86a96 | |||
e98084b722 | |||
ca246a1805 | |||
40c64fb090 | |||
4acbcb8479 | |||
8f832606d8 | |||
4f5bb9fcef | |||
da44386179 | |||
f4a5b99d88 | |||
c794b17d99 | |||
e188b1d368 | |||
e0c95fcf69 | |||
25cb73f3c4 | |||
a93701ec9b | |||
3a19e60609 | |||
78318f8be5 | |||
54f3988321 | |||
f437b67409 | |||
06b9bc80b3 | |||
a6fae2d4e8 | |||
a4ef905acc | |||
41a5151e81 | |||
e96e0e2c98 | |||
8d0a8e33ff | |||
9bd97ff018 | |||
bca5e4d3e2 | |||
031a2987b7 | |||
753106f35c | |||
a1e4314d8f | |||
a7f3aad3f5 | |||
faa196892b | |||
796ce734cb | |||
3eb24de4f6 | |||
5bddaa4323 | |||
17819a1af9 | |||
d20884258e | |||
b74351ab97 | |||
0f5a011c3d | |||
99cad45695 | |||
aceee1722e | |||
0cb459c59a | |||
81886c7276 | |||
fdc6583d4e | |||
a4b15f09d5 | |||
c2351bbd0b | |||
c14b6e1c32 | |||
f1d16883d0 | |||
5de1d6bef5 | |||
7d4fd999a5 | |||
38c07112bd | |||
c6f8a8a2ba | |||
2960188cea | |||
8e060aa468 | |||
fc6fa62ba9 | |||
7864da88cb | |||
36eedea576 | |||
95a170fa60 | |||
1ea15ee881 | |||
729d91c21f | |||
c553dd0c3f | |||
a307846a9f | |||
57929789e6 | |||
d9be6cade4 | |||
e1c24ba1f0 | |||
979d352bf6 | |||
db8a75eba6 |
5
.github/dependabot.yml
vendored
5
.github/dependabot.yml
vendored
@ -4,6 +4,11 @@ updates:
|
|||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
ignore:
|
||||||
|
# ignore this dependency
|
||||||
|
# it seems a bug with dependabot as pining to commit sha should not
|
||||||
|
# trigger a new version similar to https://github.com/docker/buildx/pull/2222#issuecomment-1919092153
|
||||||
|
- dependency-name: "docker/actions-toolkit"
|
||||||
labels:
|
labels:
|
||||||
- "dependencies"
|
- "dependencies"
|
||||||
- "bot"
|
- "bot"
|
||||||
|
119
.github/workflows/ci.yml
vendored
119
.github/workflows/ci.yml
vendored
@ -1,5 +1,9 @@
|
|||||||
name: ci
|
name: ci
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
schedule:
|
schedule:
|
||||||
@ -13,7 +17,7 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
|
|
||||||
env:
|
env:
|
||||||
DOCKER_VERSION: v23.0.6
|
DOCKER_VERSION: v27.3.1
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
main:
|
main:
|
||||||
@ -23,32 +27,21 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- ubuntu-latest
|
- ubuntu-latest
|
||||||
|
#- macos-14 # no virt: https://github.com/docker/actions-toolkit/issues/317
|
||||||
- macos-13
|
- macos-13
|
||||||
- macos-latest
|
|
||||||
- windows-latest
|
- windows-latest
|
||||||
version:
|
version:
|
||||||
- pinned
|
- v27.3.1
|
||||||
- latest
|
- type=image,tag=27.3.1
|
||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
-
|
|
||||||
name: Set version
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ "${{ matrix.version }}" != "pinned" ]; then
|
|
||||||
echo "DOCKER_VERSION=${{ matrix.version }}" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
-
|
-
|
||||||
name: Set up Docker
|
name: Set up Docker
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
version: ${{ env.DOCKER_VERSION }}
|
version: ${{ matrix.version }}
|
||||||
-
|
|
||||||
name: Dump context
|
|
||||||
if: always()
|
|
||||||
uses: crazy-max/ghaction-dump-context@v2
|
|
||||||
|
|
||||||
channel:
|
channel:
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
@ -57,7 +50,8 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- ubuntu-latest
|
- ubuntu-latest
|
||||||
- macos-latest
|
#- macos-14 # no virt: https://github.com/docker/actions-toolkit/issues/317
|
||||||
|
- macos-13
|
||||||
- windows-latest
|
- windows-latest
|
||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
@ -67,12 +61,8 @@ jobs:
|
|||||||
name: Set up Docker
|
name: Set up Docker
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
version: v23.0.0-rc.4
|
version: ${{ env.DOCKER_VERSION }}
|
||||||
channel: test
|
channel: test
|
||||||
-
|
|
||||||
name: Dump context
|
|
||||||
if: always()
|
|
||||||
uses: crazy-max/ghaction-dump-context@v2
|
|
||||||
|
|
||||||
daemon-config:
|
daemon-config:
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
@ -81,7 +71,8 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- ubuntu-latest
|
- ubuntu-latest
|
||||||
- macos-latest
|
#- macos-14 # no virt: https://github.com/docker/actions-toolkit/issues/317
|
||||||
|
- macos-13
|
||||||
- windows-latest
|
- windows-latest
|
||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
@ -91,6 +82,7 @@ jobs:
|
|||||||
name: Set up Docker
|
name: Set up Docker
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
|
version: ${{ env.DOCKER_VERSION }}
|
||||||
daemon-config: |
|
daemon-config: |
|
||||||
{
|
{
|
||||||
"debug": true,
|
"debug": true,
|
||||||
@ -98,10 +90,6 @@ jobs:
|
|||||||
"containerd-snapshotter": true
|
"containerd-snapshotter": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
-
|
|
||||||
name: Dump context
|
|
||||||
if: always()
|
|
||||||
uses: crazy-max/ghaction-dump-context@v2
|
|
||||||
|
|
||||||
context:
|
context:
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
@ -110,7 +98,8 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- ubuntu-latest
|
- ubuntu-latest
|
||||||
- macos-latest
|
#- macos-14 # no virt: https://github.com/docker/actions-toolkit/issues/317
|
||||||
|
- macos-13
|
||||||
- windows-latest
|
- windows-latest
|
||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
@ -126,13 +115,10 @@ jobs:
|
|||||||
name: Check context
|
name: Check context
|
||||||
run: |
|
run: |
|
||||||
docker context inspect foo
|
docker context inspect foo
|
||||||
-
|
|
||||||
name: Dump context
|
|
||||||
if: always()
|
|
||||||
uses: crazy-max/ghaction-dump-context@v2
|
|
||||||
|
|
||||||
colima-start-args:
|
lima-start-args:
|
||||||
runs-on: macos-latest
|
#runs-on: macos-14 # no virt: https://github.com/docker/actions-toolkit/issues/317
|
||||||
|
runs-on: macos-13
|
||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
@ -140,15 +126,28 @@ jobs:
|
|||||||
-
|
-
|
||||||
name: Set up Docker
|
name: Set up Docker
|
||||||
uses: ./
|
uses: ./
|
||||||
|
with:
|
||||||
|
version: ${{ env.DOCKER_VERSION }}
|
||||||
env:
|
env:
|
||||||
COLIMA_START_ARGS: --cpu 4 --memory 8 --disk 32 --dns 1.1.1.1 --dns 8.8.8.8 --dns-host example.com=1.2.3.4
|
LIMA_START_ARGS: --cpus 4 --memory 8
|
||||||
|
|
||||||
build-linux:
|
build-linux:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
containerd:
|
||||||
|
- containerd-system
|
||||||
|
- containerd-tarball
|
||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
-
|
||||||
|
name: Uninstall containerd
|
||||||
|
if: matrix.containerd == 'containerd-tarball'
|
||||||
|
run: |
|
||||||
|
sudo apt-get remove -y containerd.io
|
||||||
-
|
-
|
||||||
name: Set up Docker
|
name: Set up Docker
|
||||||
uses: ./
|
uses: ./
|
||||||
@ -166,7 +165,7 @@ jobs:
|
|||||||
driver-opts: network=host
|
driver-opts: network=host
|
||||||
-
|
-
|
||||||
name: Build and push
|
name: Build and push
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: ./test
|
context: ./test
|
||||||
push: true
|
push: true
|
||||||
@ -176,10 +175,6 @@ jobs:
|
|||||||
name: Inspect
|
name: Inspect
|
||||||
run: |
|
run: |
|
||||||
docker buildx imagetools inspect localhost:5000/name/app:latest --format '{{json .}}'
|
docker buildx imagetools inspect localhost:5000/name/app:latest --format '{{json .}}'
|
||||||
-
|
|
||||||
name: Dump context
|
|
||||||
if: always()
|
|
||||||
uses: crazy-max/ghaction-dump-context@v2
|
|
||||||
|
|
||||||
build-macos:
|
build-macos:
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
@ -187,8 +182,8 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
|
#- macos-14 # no virt: https://github.com/docker/actions-toolkit/issues/317
|
||||||
- macos-13
|
- macos-13
|
||||||
- macos-latest
|
|
||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
@ -210,7 +205,7 @@ jobs:
|
|||||||
driver-opts: network=host
|
driver-opts: network=host
|
||||||
-
|
-
|
||||||
name: Build and push
|
name: Build and push
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: ./test
|
context: ./test
|
||||||
push: true
|
push: true
|
||||||
@ -220,10 +215,6 @@ jobs:
|
|||||||
name: Inspect
|
name: Inspect
|
||||||
run: |
|
run: |
|
||||||
docker buildx imagetools inspect localhost:5000/name/app:latest --format '{{json .}}'
|
docker buildx imagetools inspect localhost:5000/name/app:latest --format '{{json .}}'
|
||||||
-
|
|
||||||
name: Dump context
|
|
||||||
if: always()
|
|
||||||
uses: crazy-max/ghaction-dump-context@v2
|
|
||||||
|
|
||||||
build-windows:
|
build-windows:
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
@ -245,7 +236,37 @@ jobs:
|
|||||||
name: Inspect
|
name: Inspect
|
||||||
run: |
|
run: |
|
||||||
docker image inspect test
|
docker image inspect test
|
||||||
|
|
||||||
|
set-host:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
-
|
-
|
||||||
name: Dump context
|
name: Checkout
|
||||||
if: always()
|
uses: actions/checkout@v4
|
||||||
uses: crazy-max/ghaction-dump-context@v2
|
-
|
||||||
|
name: Set up Docker
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
version: ${{ env.DOCKER_VERSION }}
|
||||||
|
set-host: true
|
||||||
|
-
|
||||||
|
name: List contexts
|
||||||
|
run: |
|
||||||
|
docker context ls
|
||||||
|
|
||||||
|
rootless:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
-
|
||||||
|
name: Set up Docker
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
version: ${{ env.DOCKER_VERSION }}
|
||||||
|
rootless: true
|
||||||
|
-
|
||||||
|
name: List contexts
|
||||||
|
run: |
|
||||||
|
docker context ls
|
||||||
|
11
.github/workflows/test.yml
vendored
11
.github/workflows/test.yml
vendored
@ -1,5 +1,9 @@
|
|||||||
name: test
|
name: test
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
@ -16,11 +20,12 @@ jobs:
|
|||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
-
|
-
|
||||||
name: Test
|
name: Test
|
||||||
uses: docker/bake-action@v4
|
uses: docker/bake-action@v5
|
||||||
with:
|
with:
|
||||||
targets: test
|
targets: test
|
||||||
-
|
-
|
||||||
name: Upload coverage
|
name: Upload coverage
|
||||||
uses: codecov/codecov-action@v3
|
uses: codecov/codecov-action@v5
|
||||||
with:
|
with:
|
||||||
file: ./coverage/clover.xml
|
files: ./coverage/clover.xml
|
||||||
|
token: ${{ secrets.CODECOV_TOKEN }}
|
||||||
|
6
.github/workflows/validate.yml
vendored
6
.github/workflows/validate.yml
vendored
@ -1,5 +1,9 @@
|
|||||||
name: validate
|
name: validate
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
@ -36,6 +40,6 @@ jobs:
|
|||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
-
|
-
|
||||||
name: Validate
|
name: Validate
|
||||||
uses: docker/bake-action@v4
|
uses: docker/bake-action@v5
|
||||||
with:
|
with:
|
||||||
targets: ${{ matrix.target }}
|
targets: ${{ matrix.target }}
|
||||||
|
874
.yarn/releases/yarn-3.6.3.cjs
vendored
874
.yarn/releases/yarn-3.6.3.cjs
vendored
File diff suppressed because one or more lines are too long
@ -11,5 +11,3 @@ nodeLinker: node-modules
|
|||||||
plugins:
|
plugins:
|
||||||
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
|
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
|
||||||
spec: "@yarnpkg/plugin-interactive-tools"
|
spec: "@yarnpkg/plugin-interactive-tools"
|
||||||
|
|
||||||
yarnPath: .yarn/releases/yarn-3.6.3.cjs
|
|
||||||
|
34
README.md
34
README.md
@ -9,6 +9,11 @@
|
|||||||
GitHub Action to set up (download and install) [Docker CE](https://docs.docker.com/engine/).
|
GitHub Action to set up (download and install) [Docker CE](https://docs.docker.com/engine/).
|
||||||
Works on Linux, macOS and Windows.
|
Works on Linux, macOS and Windows.
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Does not work on macOS runners with ARM architecture (no nested virtualization):
|
||||||
|
> * https://github.com/crazy-max/ghaction-setup-docker/pull/53
|
||||||
|
> * https://github.com/docker/actions-toolkit/issues/317
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
___
|
___
|
||||||
@ -16,9 +21,10 @@ ___
|
|||||||
* [Usage](#usage)
|
* [Usage](#usage)
|
||||||
* [Quick start](#quick-start)
|
* [Quick start](#quick-start)
|
||||||
* [Daemon configuration](#daemon-configuration)
|
* [Daemon configuration](#daemon-configuration)
|
||||||
* [Define custom `colima start` arguments (macOS)](#define-custom-colima-start-arguments-macos)
|
* [Define custom `limactl start` arguments (macOS)](#define-custom-limactl-start-arguments-macos)
|
||||||
* [Customizing](#customizing)
|
* [Customizing](#customizing)
|
||||||
* [inputs](#inputs)
|
* [inputs](#inputs)
|
||||||
|
* [outputs](#outputs)
|
||||||
* [Contributing](#contributing)
|
* [Contributing](#contributing)
|
||||||
* [License](#license)
|
* [License](#license)
|
||||||
|
|
||||||
@ -38,7 +44,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Set up Docker
|
name: Set up Docker
|
||||||
uses: crazy-max/ghaction-setup-docker@v2
|
uses: crazy-max/ghaction-setup-docker@v3
|
||||||
```
|
```
|
||||||
|
|
||||||
### Daemon configuration
|
### Daemon configuration
|
||||||
@ -60,7 +66,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Set up Docker
|
name: Set up Docker
|
||||||
uses: crazy-max/ghaction-setup-docker@v2
|
uses: crazy-max/ghaction-setup-docker@v3
|
||||||
with:
|
with:
|
||||||
daemon-config: |
|
daemon-config: |
|
||||||
{
|
{
|
||||||
@ -71,10 +77,10 @@ jobs:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Define custom `colima start` arguments (macOS)
|
### Define custom `limactl start` arguments (macOS)
|
||||||
|
|
||||||
You can define custom [`colima start` arguments](https://github.com/abiosoft/colima#customizing-the-vm)
|
You can define custom [`limactl start` arguments](https://lima-vm.io/docs/reference/limactl_start/)
|
||||||
using the `COLIMA_START_ARGS` environment variable to customize the VM:
|
using the `LIMA_START_ARGS` environment variable to customize the VM:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
name: ci
|
name: ci
|
||||||
@ -88,16 +94,16 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Set up Docker
|
name: Set up Docker
|
||||||
uses: crazy-max/ghaction-setup-docker@v2
|
uses: crazy-max/ghaction-setup-docker@v3
|
||||||
env:
|
env:
|
||||||
COLIMA_START_ARGS: --cpu 4 --memory 8 --disk 32
|
LIMA_START_ARGS: --cpus 4 --memory 8
|
||||||
```
|
```
|
||||||
|
|
||||||
## Customizing
|
## Customizing
|
||||||
|
|
||||||
### inputs
|
### inputs
|
||||||
|
|
||||||
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 |
|
||||||
|-----------------|--------|-----------------------|-----------------------------------------------------------------------------------------------------------------------------|
|
|-----------------|--------|-----------------------|-----------------------------------------------------------------------------------------------------------------------------|
|
||||||
@ -105,6 +111,16 @@ Following inputs can be used as `step.with` keys
|
|||||||
| `channel` | String | `stable` | Docker CE [channel](https://download.docker.com/linux/static/) (e.g, `stable`, `edge` or `test`). |
|
| `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) |
|
| `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. |
|
| `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 |
|
||||||
|
|
||||||
|
### outputs
|
||||||
|
|
||||||
|
The following outputs are available
|
||||||
|
|
||||||
|
| Name | Type | Description |
|
||||||
|
|--------|--------|--------------------|
|
||||||
|
| `sock` | String | Docker socket path |
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
# Troubleshooting
|
|
||||||
|
|
||||||
## macOS: `qemu[stderr]: qemu-system-x86_64: Unknown Error`
|
|
||||||
|
|
||||||
Colima may fail to start with the following error:
|
|
||||||
|
|
||||||
```
|
|
||||||
time="2023-08-26T06:30:33Z" level=info msg="[hostagent] Starting QEMU (hint: to watch the boot progress, see \"/Users/runner/.lima/colima/serial*.log\")"
|
|
||||||
time="2023-08-26T06:30:34Z" level=info msg="SSH Local Port: 49209"
|
|
||||||
time="2023-08-26T06:30:34Z" level=info msg="[hostagent] Waiting for the essential requirement 1 of 3: \"ssh\""
|
|
||||||
time="2023-08-26T06:30:34Z" level=info msg="[hostagent] Driver stopped due to error: \"exit status 255\""
|
|
||||||
time="2023-08-26T06:30:34Z" level=info msg="[hostagent] Shutting down the host agent"
|
|
||||||
time="2023-08-26T06:30:34Z" level=warning msg="[hostagent] failed to exit SSH master"
|
|
||||||
time="2023-08-26T06:30:34Z" level=info msg="[hostagent] Shutting down QEMU with ACPI"
|
|
||||||
time="2023-08-26T06:30:34Z" level=warning msg="[hostagent] failed to open the QMP socket \"/Users/runner/.lima/colima/qmp.sock\", forcibly killing QEMU"
|
|
||||||
time="2023-08-26T06:30:34Z" level=info msg="[hostagent] QEMU has already exited"
|
|
||||||
time="2023-08-26T06:30:34Z" level=fatal msg="exiting, status={Running:false Degraded:false Exiting:true Errors:[] SSHLocalPort:0} (hint: see \"/Users/runner/.lima/colima/ha.stderr.log\")"
|
|
||||||
time="2023-08-26T06:30:34Z" level=fatal msg="error starting vm: error at 'creating and starting': exit status 1"
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
{"level":"debug","msg":"executing [ssh-keygen -t ed25519 -q -N -f /Users/runner/.lima/_config/user]","time":"2023-08-26T07:16:40Z"}
|
|
||||||
{"level":"debug","msg":"Creating iso file /Users/runner/.lima/colima/cidata.iso","time":"2023-08-26T07:16:41Z"}
|
|
||||||
{"level":"debug","msg":"Using /var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/diskfs_iso3418167253 as workspace","time":"2023-08-26T07:16:41Z"}
|
|
||||||
{"level":"debug","msg":"OpenSSH version 8.6.1 detected","time":"2023-08-26T07:16:41Z"}
|
|
||||||
{"level":"debug","msg":"AES accelerator seems available, prioritizing aes128-gcm@openssh.com and aes256-gcm@openssh.com","time":"2023-08-26T07:16:41Z"}
|
|
||||||
{"level":"debug","msg":"QEMU version 8.0.4 detected","time":"2023-08-26T07:16:43Z"}
|
|
||||||
{"level":"debug","msg":"firmware candidates = [/Users/runner/.local/share/qemu/edk2-x86_64-code.fd /Users/runner/.colima/_wrapper/4e1b408f843d1c63afbbdcf80c40e4c88d33509f/share/qemu/edk2-x86_64-code.fd /usr/share/OVMF/OVMF_CODE.fd /usr/share/qemu/ovmf-x86_64-code.bin /usr/share/edk2-ovmf/x64/OVMF_CODE.fd]","time":"2023-08-26T07:16:43Z"}
|
|
||||||
{"level":"info","msg":"Starting QEMU (hint: to watch the boot progress, see \"/Users/runner/.lima/colima/serial*.log\")","time":"2023-08-26T07:16:43Z"}
|
|
||||||
{"level":"debug","msg":"qCmd.Args: [/Users/runner/.colima/_wrapper/4e1b408f843d1c63afbbdcf80c40e4c88d33509f/bin/qemu-system-x86_64 -m 2048 -cpu host,-pdpe1gb -machine q35,accel=hvf -smp 2,sockets=1,cores=2,threads=1 -drive if=pflash,format=raw,readonly=on,file=/Users/runner/.colima/_wrapper/4e1b408f843d1c63afbbdcf80c40e4c88d33509f/share/qemu/edk2-x86_64-code.fd -boot order=d,splash-time=0,menu=on -drive file=/Users/runner/.lima/colima/basedisk,format=raw,media=cdrom,readonly=on -drive file=/Users/runner/.lima/colima/diffdisk,if=virtio,discard=on -drive id=cdrom0,if=none,format=raw,readonly=on,file=/Users/runner/.lima/colima/cidata.iso -device virtio-scsi-pci,id=scsi0 -device scsi-cd,bus=scsi0.0,drive=cdrom0 -netdev user,id=net0,net=192.168.5.0/24,dhcpstart=192.168.5.15,hostfwd=tcp:127.0.0.1:49168-:22 -device virtio-net-pci,netdev=net0,mac=52:55:55:be:6e:dd -device virtio-rng-pci -display none -device virtio-vga -device virtio-keyboard-pci -device virtio-mouse-pci -device qemu-xhci,id=usb-bus -parallel none -chardev socket,id=char-serial,path=/Users/runner/.lima/colima/serial.sock,server=on,wait=off,logfile=/Users/runner/.lima/colima/serial.log -serial chardev:char-serial -chardev socket,id=char-serial-virtio,path=/Users/runner/.lima/colima/serialv.sock,server=on,wait=off,logfile=/Users/runner/.lima/colima/serialv.log -device virtio-serial-pci,id=virtio-serial0,max_ports=1 -device virtconsole,chardev=char-serial-virtio,id=console0 -virtfs local,mount_tag=mount0,path=/Users/runner,security_model=none -virtfs local,mount_tag=mount1,path=/tmp/colima,security_model=none -chardev socket,id=char-qmp,path=/Users/runner/.lima/colima/qmp.sock,server=on,wait=off -qmp chardev:char-qmp -name lima-colima -pidfile /Users/runner/.lima/colima/qemu.pid]","time":"2023-08-26T07:16:43Z"}
|
|
||||||
{"level":"info","msg":"Waiting for the essential requirement 1 of 3: \"ssh\"","time":"2023-08-26T07:16:43Z"}
|
|
||||||
{"level":"debug","msg":"executing script \"ssh\"","time":"2023-08-26T07:16:43Z"}
|
|
||||||
{"level":"debug","msg":"executing ssh for script \"ssh\": /usr/bin/ssh [ssh -F /dev/null -o IdentityFile=\"/Users/runner/.lima/_config/user\" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o NoHostAuthenticationForLocalhost=yes -o GSSAPIAuthentication=no -o PreferredAuthentications=publickey -o Compression=no -o BatchMode=yes -o IdentitiesOnly=yes -o Ciphers=\"^aes128-gcm@openssh.com,aes256-gcm@openssh.com\" -o User=runner -o ControlMaster=auto -o ControlPath=\"/Users/runner/.lima/colima/ssh.sock\" -o ControlPersist=5m -p 49168 127.0.0.1 -- /bin/bash]","time":"2023-08-26T07:16:43Z"}
|
|
||||||
{"level":"debug","msg":"stdout=\"\", stderr=\"ssh: connect to host 127.0.0.1 port 49168: Connection refused\\r\\n\", err=failed to execute script \"ssh\": stdout=\"\", stderr=\"ssh: connect to host 127.0.0.1 port 49168: Connection refused\\r\\n\": exit status 255","time":"2023-08-26T07:16:43Z"}
|
|
||||||
{"level":"debug","msg":"qemu[stderr]: qemu-system-x86_64: Unknown Error","time":"2023-08-26T07:16:43Z"}
|
|
||||||
{"level":"info","msg":"Driver stopped due to error: \"exit status 255\"","time":"2023-08-26T07:16:43Z"}
|
|
||||||
{"level":"info","msg":"Shutting down the host agent","time":"2023-08-26T07:16:44Z"}
|
|
||||||
{"level":"debug","msg":"shutting down the SSH master","time":"2023-08-26T07:16:44Z"}
|
|
||||||
{"level":"debug","msg":"executing ssh for exiting the master: /usr/bin/ssh [ssh -F /dev/null -o IdentityFile=\"/Users/runner/.lima/_config/user\" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o NoHostAuthenticationForLocalhost=yes -o GSSAPIAuthentication=no -o PreferredAuthentications=publickey -o Compression=no -o BatchMode=yes -o IdentitiesOnly=yes -o Ciphers=\"^aes128-gcm@openssh.com,aes256-gcm@openssh.com\" -o User=runner -o ControlMaster=auto -o ControlPath=\"/Users/runner/.lima/colima/ssh.sock\" -o ControlPersist=5m -O exit -p 49168 127.0.0.1]","time":"2023-08-26T07:16:44Z"}
|
|
||||||
{"error":"failed to execute `ssh -O exit -p 49168 127.0.0.1`, out=\"Control socket connect(/Users/runner/.lima/colima/ssh.sock): No such file or directory\\r\\n\": exit status 255","level":"warning","msg":"failed to exit SSH master","time":"2023-08-26T07:16:44Z"}
|
|
||||||
{"level":"info","msg":"Shutting down QEMU with ACPI","time":"2023-08-26T07:16:44Z"}
|
|
||||||
{"error":"dial unix /Users/runner/.lima/colima/qmp.sock: connect: connection refused","level":"warning","msg":"failed to open the QMP socket \"/Users/runner/.lima/colima/qmp.sock\", forcibly killing QEMU","time":"2023-08-26T07:16:44Z"}
|
|
||||||
{"level":"info","msg":"QEMU has already exited","time":"2023-08-26T07:16:44Z"}
|
|
||||||
```
|
|
||||||
|
|
||||||
To fix this issue you can replace the existing signature of QEMU binary with
|
|
||||||
the required entitlements as suggested in https://github.com/abiosoft/colima/issues/786#issuecomment-1693629650.
|
|
||||||
This can be done within this action by setting the env var `SIGN_QEMU_BINARY=1`:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
-
|
|
||||||
name: Set up Docker
|
|
||||||
uses: crazy-max/ghaction-setup-docker@v2
|
|
||||||
env:
|
|
||||||
SIGN_QEMU_BINARY: 1
|
|
||||||
```
|
|
@ -17,40 +17,174 @@ describe('getInputs', () => {
|
|||||||
[
|
[
|
||||||
0,
|
0,
|
||||||
new Map<string, string>([
|
new Map<string, string>([
|
||||||
['version', 'v23.0.1'],
|
['version', 'v24.0.8'],
|
||||||
|
['set-host', 'false'],
|
||||||
|
['rootless', 'false'],
|
||||||
]),
|
]),
|
||||||
{
|
{
|
||||||
version: 'v23.0.1',
|
source: {
|
||||||
channel: '',
|
type: 'archive',
|
||||||
|
version: 'v24.0.8',
|
||||||
|
channel: 'stable'
|
||||||
|
},
|
||||||
context: '',
|
context: '',
|
||||||
daemonConfig: '',
|
daemonConfig: '',
|
||||||
|
rootless: false,
|
||||||
|
setHost: false
|
||||||
} as context.Inputs
|
} as context.Inputs
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1,
|
1,
|
||||||
new Map<string, string>([
|
new Map<string, string>([
|
||||||
['version', 'v23.0.0-rc.4'],
|
['version', 'v24.0.0-rc.4'],
|
||||||
['channel', 'test'],
|
['channel', 'test'],
|
||||||
['context', 'foo'],
|
['context', 'foo'],
|
||||||
['daemon-config', `{"debug":true,"features":{"containerd-snapshotter":true}}`],
|
['daemon-config', `{"debug":true,"features":{"containerd-snapshotter":true}}`],
|
||||||
|
['set-host', 'false'],
|
||||||
|
['rootless', 'false'],
|
||||||
]),
|
]),
|
||||||
{
|
{
|
||||||
version: 'v23.0.0-rc.4',
|
source: {
|
||||||
channel: 'test',
|
type: 'archive',
|
||||||
|
version: 'v24.0.0-rc.4',
|
||||||
|
channel: 'test'
|
||||||
|
},
|
||||||
context: 'foo',
|
context: 'foo',
|
||||||
daemonConfig: `{"debug":true,"features":{"containerd-snapshotter":true}}`,
|
daemonConfig: `{"debug":true,"features":{"containerd-snapshotter":true}}`,
|
||||||
|
rootless: false,
|
||||||
|
setHost: false
|
||||||
} as context.Inputs
|
} as context.Inputs
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
2,
|
2,
|
||||||
new Map<string, string>([]),
|
new Map<string, string>([
|
||||||
|
['set-host', 'true'],
|
||||||
|
['rootless', 'false'],
|
||||||
|
]),
|
||||||
{
|
{
|
||||||
version: 'latest',
|
source: {
|
||||||
channel: '',
|
type: 'archive',
|
||||||
|
version: 'latest',
|
||||||
|
channel: 'stable',
|
||||||
|
},
|
||||||
context: '',
|
context: '',
|
||||||
daemonConfig: '',
|
daemonConfig: '',
|
||||||
|
rootless: false,
|
||||||
|
setHost: true
|
||||||
} as context.Inputs
|
} as context.Inputs
|
||||||
]
|
],
|
||||||
|
[
|
||||||
|
3,
|
||||||
|
new Map<string, string>([
|
||||||
|
['version', 'type=image,tag=master'],
|
||||||
|
['context', 'foo'],
|
||||||
|
['daemon-config', `{"debug":true,"features":{"containerd-snapshotter":true}}`],
|
||||||
|
['set-host', 'false'],
|
||||||
|
['rootless', 'false'],
|
||||||
|
]),
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
type: 'image',
|
||||||
|
tag: 'master',
|
||||||
|
},
|
||||||
|
context: 'foo',
|
||||||
|
daemonConfig: `{"debug":true,"features":{"containerd-snapshotter":true}}`,
|
||||||
|
rootless: false,
|
||||||
|
setHost: false
|
||||||
|
} as context.Inputs
|
||||||
|
],
|
||||||
|
[
|
||||||
|
4,
|
||||||
|
new Map<string, string>([
|
||||||
|
['version', 'type=image'],
|
||||||
|
['set-host', 'false'],
|
||||||
|
['rootless', 'false'],
|
||||||
|
]),
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
type: 'image',
|
||||||
|
tag: 'latest',
|
||||||
|
},
|
||||||
|
context: '',
|
||||||
|
daemonConfig: '',
|
||||||
|
rootless: false,
|
||||||
|
setHost: false
|
||||||
|
} as context.Inputs
|
||||||
|
],
|
||||||
|
[
|
||||||
|
5,
|
||||||
|
new Map<string, string>([
|
||||||
|
['version', 'type=archive'],
|
||||||
|
['set-host', 'false'],
|
||||||
|
['rootless', 'false'],
|
||||||
|
]),
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
type: 'archive',
|
||||||
|
version: 'latest',
|
||||||
|
channel: 'stable',
|
||||||
|
},
|
||||||
|
setHost: false,
|
||||||
|
context: '',
|
||||||
|
daemonConfig: '',
|
||||||
|
rootless: false,
|
||||||
|
} as context.Inputs
|
||||||
|
],
|
||||||
|
[
|
||||||
|
6,
|
||||||
|
new Map<string, string>([
|
||||||
|
['version', 'version=v27.2.0,channel=test'],
|
||||||
|
['set-host', 'false'],
|
||||||
|
['rootless', 'false'],
|
||||||
|
]),
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
type: 'archive',
|
||||||
|
version: 'v27.2.0',
|
||||||
|
channel: 'test',
|
||||||
|
},
|
||||||
|
setHost: false,
|
||||||
|
context: '',
|
||||||
|
daemonConfig: '',
|
||||||
|
rootless: false,
|
||||||
|
} as context.Inputs
|
||||||
|
],
|
||||||
|
[
|
||||||
|
7,
|
||||||
|
new Map<string, string>([
|
||||||
|
['version', 'type=image,tag=27.2.1'],
|
||||||
|
['set-host', 'false'],
|
||||||
|
['rootless', 'false'],
|
||||||
|
]),
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
type: 'image',
|
||||||
|
tag: '27.2.1',
|
||||||
|
},
|
||||||
|
setHost: false,
|
||||||
|
context: '',
|
||||||
|
daemonConfig: '',
|
||||||
|
rootless: false,
|
||||||
|
} as context.Inputs
|
||||||
|
],
|
||||||
|
[
|
||||||
|
8,
|
||||||
|
new Map<string, string>([
|
||||||
|
['version', 'type=image,tag=27.2.1'],
|
||||||
|
['set-host', 'false'],
|
||||||
|
['rootless', 'true']
|
||||||
|
]),
|
||||||
|
{
|
||||||
|
source: {
|
||||||
|
type: 'image',
|
||||||
|
tag: '27.2.1',
|
||||||
|
},
|
||||||
|
setHost: false,
|
||||||
|
context: '',
|
||||||
|
daemonConfig: '',
|
||||||
|
rootless: true,
|
||||||
|
} as context.Inputs
|
||||||
|
],
|
||||||
])(
|
])(
|
||||||
'[%d] given %p as inputs, returns %p',
|
'[%d] given %p as inputs, returns %p',
|
||||||
async (num: number, inputs: Map<string, string>, expected: context.Inputs) => {
|
async (num: number, inputs: Map<string, string>, expected: context.Inputs) => {
|
||||||
|
14
action.yml
14
action.yml
@ -8,7 +8,7 @@ branding:
|
|||||||
|
|
||||||
inputs:
|
inputs:
|
||||||
version:
|
version:
|
||||||
description: 'Docker CE version. (e.g, v23.0.1)'
|
description: 'Docker CE version. (e.g, v24.0.9)'
|
||||||
required: false
|
required: false
|
||||||
default: 'latest'
|
default: 'latest'
|
||||||
channel:
|
channel:
|
||||||
@ -20,6 +20,18 @@ inputs:
|
|||||||
context:
|
context:
|
||||||
description: 'Docker context name. (default setup-docker-action)'
|
description: 'Docker context name. (default setup-docker-action)'
|
||||||
required: false
|
required: false
|
||||||
|
set-host:
|
||||||
|
description: 'Set DOCKER_HOST environment variable to docker socket path'
|
||||||
|
default: 'false'
|
||||||
|
required: false
|
||||||
|
rootless:
|
||||||
|
description: 'Enable Docker rootless mode'
|
||||||
|
default: 'false'
|
||||||
|
required: false
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
sock:
|
||||||
|
description: "Docker socket path"
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: 'node20'
|
using: 'node20'
|
||||||
|
@ -4,8 +4,13 @@ ARG NODE_VERSION=20
|
|||||||
|
|
||||||
FROM node:${NODE_VERSION}-alpine AS base
|
FROM node:${NODE_VERSION}-alpine AS base
|
||||||
RUN apk add --no-cache cpio findutils git
|
RUN apk add --no-cache cpio findutils git
|
||||||
RUN yarn config set --home enableTelemetry 0
|
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
|
RUN --mount=type=bind,target=.,rw \
|
||||||
|
--mount=type=cache,target=/src/.yarn/cache <<EOT
|
||||||
|
corepack enable
|
||||||
|
yarn --version
|
||||||
|
yarn config set --home enableTelemetry 0
|
||||||
|
EOT
|
||||||
|
|
||||||
FROM base AS deps
|
FROM base AS deps
|
||||||
RUN --mount=type=bind,target=.,rw \
|
RUN --mount=type=bind,target=.,rw \
|
||||||
|
95
dist/index.js
generated
vendored
95
dist/index.js
generated
vendored
File diff suppressed because one or more lines are too long
2
dist/index.js.map
generated
vendored
2
dist/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
3297
dist/licenses.txt
generated
vendored
3297
dist/licenses.txt
generated
vendored
File diff suppressed because it is too large
Load Diff
@ -26,9 +26,8 @@
|
|||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"packageManager": "yarn@3.6.3",
|
"packageManager": "yarn@3.6.3",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.10.1",
|
"@actions/core": "^1.11.1",
|
||||||
"@docker/actions-toolkit": "^0.14.0",
|
"@docker/actions-toolkit": "^0.46.0"
|
||||||
"uuid": "^9.0.1"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20.6.0",
|
"@types/node": "^20.6.0",
|
||||||
|
@ -1,17 +1,98 @@
|
|||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
|
import {InstallSource} from '@docker/actions-toolkit/lib/docker/install';
|
||||||
|
import {parse} from 'csv-parse/sync';
|
||||||
|
|
||||||
export interface Inputs {
|
export interface Inputs {
|
||||||
version: string;
|
source: InstallSource;
|
||||||
channel: string;
|
|
||||||
daemonConfig?: string;
|
daemonConfig?: string;
|
||||||
context: string;
|
context: string;
|
||||||
|
setHost: boolean;
|
||||||
|
rootless: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getInputs(): Inputs {
|
export function getInputs(): Inputs {
|
||||||
|
const rawVersion = core.getInput('version') || 'latest';
|
||||||
|
const source = parseSource(rawVersion);
|
||||||
|
const channel = core.getInput('channel');
|
||||||
|
if (channel && source.type === 'archive') {
|
||||||
|
source.channel = channel;
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
version: core.getInput('version') || 'latest',
|
source: source,
|
||||||
channel: core.getInput('channel'),
|
|
||||||
daemonConfig: core.getInput('daemon-config'),
|
daemonConfig: core.getInput('daemon-config'),
|
||||||
context: core.getInput('context')
|
context: core.getInput('context'),
|
||||||
|
setHost: core.getBooleanInput('set-host'),
|
||||||
|
rootless: core.getBooleanInput('rootless')
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function parseSource(input: string): InstallSource {
|
||||||
|
let [type, version, channel, tag] = ['archive', 'latest', 'stable', 'latest'];
|
||||||
|
|
||||||
|
const fields = parse(input, {
|
||||||
|
relaxColumnCount: true,
|
||||||
|
skipEmptyLines: true
|
||||||
|
})[0];
|
||||||
|
for (const field of fields) {
|
||||||
|
const parts = field
|
||||||
|
.toString()
|
||||||
|
.split(/(?<=^[^=]+?)=/)
|
||||||
|
.map(item => item.trim());
|
||||||
|
|
||||||
|
switch (parts[0]) {
|
||||||
|
case 'type':
|
||||||
|
type = parts[1];
|
||||||
|
break;
|
||||||
|
case 'version':
|
||||||
|
version = parts[1];
|
||||||
|
break;
|
||||||
|
case 'channel':
|
||||||
|
channel = parts[1];
|
||||||
|
break;
|
||||||
|
case 'tag':
|
||||||
|
tag = parts[1];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (fields.length === 1) {
|
||||||
|
version = parts[0];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
throw new Error(`Invalid field: ${parts[0]}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!type) {
|
||||||
|
throw new Error(`Invalid type: ${type}`);
|
||||||
|
}
|
||||||
|
if (!channel) {
|
||||||
|
throw new Error(`Invalid channel: ${channel}`);
|
||||||
|
}
|
||||||
|
if (!version) {
|
||||||
|
throw new Error(`Invalid version: ${version}`);
|
||||||
|
}
|
||||||
|
if (!tag) {
|
||||||
|
throw new Error(`Invalid tag: ${tag}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
let src: InstallSource;
|
||||||
|
switch (type) {
|
||||||
|
case 'archive':
|
||||||
|
src = {
|
||||||
|
type: 'archive',
|
||||||
|
version: version,
|
||||||
|
channel: channel
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case 'image':
|
||||||
|
src = {
|
||||||
|
type: 'image',
|
||||||
|
tag: tag
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new Error(`Invalid version: ${input}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return src;
|
||||||
|
}
|
||||||
|
23
src/main.ts
23
src/main.ts
@ -1,6 +1,6 @@
|
|||||||
|
import * as crypto from 'crypto';
|
||||||
import os from 'os';
|
import os from 'os';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import * as uuid from 'uuid';
|
|
||||||
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';
|
||||||
@ -13,7 +13,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-${uuid.v4()}`);
|
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.`);
|
||||||
@ -21,20 +21,31 @@ actionsToolkit.run(
|
|||||||
|
|
||||||
const install = new Install({
|
const install = new Install({
|
||||||
runDir: runDir,
|
runDir: runDir,
|
||||||
version: input.version,
|
source: input.source,
|
||||||
channel: input.channel || 'stable',
|
rootless: input.rootless,
|
||||||
contextName: input.context || 'setup-docker-action',
|
contextName: input.context || 'setup-docker-action',
|
||||||
daemonConfig: input.daemonConfig
|
daemonConfig: input.daemonConfig
|
||||||
});
|
});
|
||||||
let toolDir;
|
let toolDir;
|
||||||
if (!(await Docker.isAvailable()) || input.version) {
|
if (!(await Docker.isAvailable()) || input.source) {
|
||||||
await core.group(`Download docker`, async () => {
|
await core.group(`Download docker`, async () => {
|
||||||
toolDir = await install.download();
|
toolDir = await install.download();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (toolDir) {
|
if (toolDir) {
|
||||||
stateHelper.setRunDir(runDir);
|
stateHelper.setRunDir(runDir);
|
||||||
await install.install();
|
const sockPath = await install.install();
|
||||||
|
await core.group(`Setting outputs`, async () => {
|
||||||
|
core.info(`sock=${sockPath}`);
|
||||||
|
core.setOutput('sock', sockPath);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (input.setHost) {
|
||||||
|
await core.group(`Setting Docker host`, async () => {
|
||||||
|
core.exportVariable('DOCKER_HOST', sockPath);
|
||||||
|
core.info(`DOCKER_HOST=${sockPath}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await core.group(`Docker info`, async () => {
|
await core.group(`Docker info`, async () => {
|
||||||
|
Reference in New Issue
Block a user