mirror of
https://github.com/docker/setup-qemu-action.git
synced 2026-08-01 04:23:40 +00:00
Compare commits
12 Commits
fe3289b6f5
...
e53506fe6c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e53506fe6c | ||
|
|
610b4428f9 | ||
|
|
58a19f851c | ||
|
|
49a12c4cc8 | ||
|
|
2b8ac83d96 | ||
|
|
fdbeaac5ff | ||
|
|
c3bed4ec62 | ||
|
|
0d7f78d53b | ||
|
|
4556918418 | ||
|
|
e267f33184 | ||
|
|
8b562efa09 | ||
|
|
2f493fa515 |
23
.github/workflows/ci.yml
vendored
23
.github/workflows/ci.yml
vendored
@ -79,3 +79,26 @@ jobs:
|
|||||||
echo "::error::Should have failed"
|
echo "::error::Should have failed"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
cache-image:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
cache:
|
||||||
|
- true
|
||||||
|
- false
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
-
|
||||||
|
name: Set up QEMU
|
||||||
|
id: qemu
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
image: tonistiigi/binfmt:master
|
||||||
|
cache-image: ${{ matrix.cache }}
|
||||||
|
-
|
||||||
|
name: Available platforms
|
||||||
|
run: echo ${{ steps.qemu.outputs.platforms }}
|
||||||
|
|||||||
21
.github/workflows/publish.yml
vendored
Normal file
21
.github/workflows/publish.yml
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
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@v4
|
||||||
|
-
|
||||||
|
name: Publish
|
||||||
|
uses: actions/publish-immutable-action@v0.0.4
|
||||||
4
.github/workflows/test.yml
vendored
4
.github/workflows/test.yml
vendored
@ -25,7 +25,7 @@ jobs:
|
|||||||
targets: test
|
targets: test
|
||||||
-
|
-
|
||||||
name: Upload coverage
|
name: Upload coverage
|
||||||
uses: codecov/codecov-action@v4
|
uses: codecov/codecov-action@v5
|
||||||
with:
|
with:
|
||||||
file: ./coverage/clover.xml
|
files: ./coverage/clover.xml
|
||||||
token: ${{ secrets.CODECOV_TOKEN }}
|
token: ${{ secrets.CODECOV_TOKEN }}
|
||||||
|
|||||||
@ -42,9 +42,10 @@ 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 |
|
||||||
|-------------|--------|-------------------------------------------------------------------------------|--------------------------------------------------|
|
|---------------|--------|-------------------------------------------------------------------------------|----------------------------------------------------|
|
||||||
| `image` | String | [`tonistiigi/binfmt:latest`](https://hub.docker.com/r/tonistiigi/binfmt/tags) | QEMU static binaries Docker image |
|
| `image` | String | [`tonistiigi/binfmt:latest`](https://hub.docker.com/r/tonistiigi/binfmt/tags) | QEMU static binaries Docker image |
|
||||||
| `platforms` | String | `all` | Platforms to install (e.g., `arm64,riscv64,arm`) |
|
| `platforms` | String | `all` | Platforms to install (e.g., `arm64,riscv64,arm`) |
|
||||||
|
| `cache-image` | Bool | `true` | Cache binfmt image to GitHub Actions cache backend |
|
||||||
|
|
||||||
### outputs
|
### outputs
|
||||||
|
|
||||||
|
|||||||
@ -16,10 +16,13 @@ describe('getInputs', () => {
|
|||||||
test.each([
|
test.each([
|
||||||
[
|
[
|
||||||
0,
|
0,
|
||||||
new Map<string, string>([]),
|
new Map<string, string>([
|
||||||
|
['cache-image', 'true'],
|
||||||
|
]),
|
||||||
{
|
{
|
||||||
image: 'docker.io/tonistiigi/binfmt:latest',
|
image: 'docker.io/tonistiigi/binfmt:latest',
|
||||||
platforms: 'all',
|
platforms: 'all',
|
||||||
|
cacheImage: true,
|
||||||
} as context.Inputs
|
} as context.Inputs
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@ -27,20 +30,24 @@ describe('getInputs', () => {
|
|||||||
new Map<string, string>([
|
new Map<string, string>([
|
||||||
['image', 'docker/binfmt:latest'],
|
['image', 'docker/binfmt:latest'],
|
||||||
['platforms', 'arm64,riscv64,arm'],
|
['platforms', 'arm64,riscv64,arm'],
|
||||||
|
['cache-image', 'false'],
|
||||||
]),
|
]),
|
||||||
{
|
{
|
||||||
image: 'docker/binfmt:latest',
|
image: 'docker/binfmt:latest',
|
||||||
platforms: 'arm64,riscv64,arm',
|
platforms: 'arm64,riscv64,arm',
|
||||||
|
cacheImage: false,
|
||||||
} as context.Inputs
|
} as context.Inputs
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
2,
|
2,
|
||||||
new Map<string, string>([
|
new Map<string, string>([
|
||||||
['platforms', 'arm64, riscv64, arm '],
|
['platforms', 'arm64, riscv64, arm '],
|
||||||
|
['cache-image', 'true'],
|
||||||
]),
|
]),
|
||||||
{
|
{
|
||||||
image: 'docker.io/tonistiigi/binfmt:latest',
|
image: 'docker.io/tonistiigi/binfmt:latest',
|
||||||
platforms: 'arm64,riscv64,arm',
|
platforms: 'arm64,riscv64,arm',
|
||||||
|
cacheImage: true,
|
||||||
} as context.Inputs
|
} as context.Inputs
|
||||||
]
|
]
|
||||||
])(
|
])(
|
||||||
|
|||||||
@ -15,6 +15,10 @@ inputs:
|
|||||||
description: 'Platforms to install (e.g. arm64,riscv64,arm)'
|
description: 'Platforms to install (e.g. arm64,riscv64,arm)'
|
||||||
default: 'all'
|
default: 'all'
|
||||||
required: false
|
required: false
|
||||||
|
cache-image:
|
||||||
|
description: 'Cache binfmt image to GitHub Actions cache backend'
|
||||||
|
default: 'true'
|
||||||
|
required: false
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
platforms:
|
platforms:
|
||||||
@ -23,3 +27,4 @@ outputs:
|
|||||||
runs:
|
runs:
|
||||||
using: 'node20'
|
using: 'node20'
|
||||||
main: 'dist/index.js'
|
main: 'dist/index.js'
|
||||||
|
post: 'dist/index.js'
|
||||||
|
|||||||
30
dist/index.js
generated
vendored
30
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
@ -25,7 +25,7 @@
|
|||||||
"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.35.0"
|
"@docker/actions-toolkit": "^0.35.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
@ -4,11 +4,13 @@ import {Util} from '@docker/actions-toolkit/lib/util';
|
|||||||
export interface Inputs {
|
export interface Inputs {
|
||||||
image: string;
|
image: string;
|
||||||
platforms: string;
|
platforms: string;
|
||||||
|
cacheImage: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getInputs(): Inputs {
|
export function getInputs(): Inputs {
|
||||||
return {
|
return {
|
||||||
image: core.getInput('image') || 'docker.io/tonistiigi/binfmt:latest',
|
image: core.getInput('image') || 'docker.io/tonistiigi/binfmt:latest',
|
||||||
platforms: Util.getInputList('platforms').join(',') || 'all'
|
platforms: Util.getInputList('platforms').join(',') || 'all',
|
||||||
|
cacheImage: core.getBooleanInput('cache-image')
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,13 +20,7 @@ actionsToolkit.run(
|
|||||||
});
|
});
|
||||||
|
|
||||||
await core.group(`Pulling binfmt Docker image`, async () => {
|
await core.group(`Pulling binfmt Docker image`, async () => {
|
||||||
await Docker.getExecOutput(['pull', input.image], {
|
await Docker.pull(input.image, input.cacheImage);
|
||||||
ignoreReturnCode: true
|
|
||||||
}).then(res => {
|
|
||||||
if (res.stderr.length > 0 && res.exitCode != 0) {
|
|
||||||
throw new Error(res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
await core.group(`Image info`, async () => {
|
await core.group(`Image info`, async () => {
|
||||||
|
|||||||
18
yarn.lock
18
yarn.lock
@ -62,6 +62,16 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@actions/core@npm:^1.11.1":
|
||||||
|
version: 1.11.1
|
||||||
|
resolution: "@actions/core@npm:1.11.1"
|
||||||
|
dependencies:
|
||||||
|
"@actions/exec": ^1.1.1
|
||||||
|
"@actions/http-client": ^2.0.1
|
||||||
|
checksum: 9ac7a3e0b478bfefd862dcb4ddaa1d8c3f9076bb1931d3d280918d1749e7783480c6a009c1b009c8bf5093e2d77d9f4e023d70416145bf246f0071736d4ef839
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@actions/exec@npm:^1.0.0, @actions/exec@npm:^1.0.1, @actions/exec@npm:^1.1.1":
|
"@actions/exec@npm:^1.0.0, @actions/exec@npm:^1.0.1, @actions/exec@npm:^1.1.1":
|
||||||
version: 1.1.1
|
version: 1.1.1
|
||||||
resolution: "@actions/exec@npm:1.1.1"
|
resolution: "@actions/exec@npm:1.1.1"
|
||||||
@ -2895,13 +2905,13 @@ __metadata:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3":
|
"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3":
|
||||||
version: 7.0.3
|
version: 7.0.6
|
||||||
resolution: "cross-spawn@npm:7.0.3"
|
resolution: "cross-spawn@npm:7.0.6"
|
||||||
dependencies:
|
dependencies:
|
||||||
path-key: ^3.1.0
|
path-key: ^3.1.0
|
||||||
shebang-command: ^2.0.0
|
shebang-command: ^2.0.0
|
||||||
which: ^2.0.1
|
which: ^2.0.1
|
||||||
checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52
|
checksum: 8d306efacaf6f3f60e0224c287664093fa9185680b2d195852ba9a863f85d02dcc737094c6e512175f8ee0161f9b87c73c6826034c2422e39de7d6569cf4503b
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -3005,7 +3015,7 @@ __metadata:
|
|||||||
version: 0.0.0-use.local
|
version: 0.0.0-use.local
|
||||||
resolution: "docker-setup-qemu@workspace:."
|
resolution: "docker-setup-qemu@workspace:."
|
||||||
dependencies:
|
dependencies:
|
||||||
"@actions/core": ^1.10.1
|
"@actions/core": ^1.11.1
|
||||||
"@docker/actions-toolkit": ^0.35.0
|
"@docker/actions-toolkit": ^0.35.0
|
||||||
"@types/node": ^20.12.12
|
"@types/node": ^20.12.12
|
||||||
"@typescript-eslint/eslint-plugin": ^7.9.0
|
"@typescript-eslint/eslint-plugin": ^7.9.0
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user