Compare commits

...

5 Commits

Author SHA1 Message Date
CrazyMax 62a971216d
Merge 1f530c4b33 into 471d1dc4e0 2025-02-26 15:49:59 +01:00
CrazyMax 471d1dc4e0
Merge pull request #1330 from docker/dependabot/npm_and_yarn/docker/actions-toolkit-0.56.0
chore(deps): Bump @docker/actions-toolkit from 0.55.0 to 0.56.0
2025-02-26 15:30:30 +01:00
CrazyMax b89ff0a6f2
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-02-26 15:27:47 +01:00
dependabot[bot] 1e3ae3a4d3
chore(deps): Bump @docker/actions-toolkit from 0.55.0 to 0.56.0
Bumps [@docker/actions-toolkit](https://github.com/docker/actions-toolkit) from 0.55.0 to 0.56.0.
- [Release notes](https://github.com/docker/actions-toolkit/releases)
- [Commits](https://github.com/docker/actions-toolkit/compare/v0.55.0...v0.56.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>
2025-02-26 14:25:15 +00:00
CrazyMax 1f530c4b33
reusable workflow to distribute multi-platform builds
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-02-17 16:18:33 +01:00
7 changed files with 591 additions and 177 deletions

View File

@ -1542,3 +1542,12 @@ jobs:
echo "::error::Should have failed"
exit 1
fi
distribute:
uses: ./.github/workflows/reusable-distribute.yml
with:
push: false
meta-image: user/app
build-context: "{{defaultContext}}:test"
build-file: multi.Dockerfile
build-platforms: linux/amd64,linux/arm64

View File

@ -0,0 +1,541 @@
# Reusable workflow to distribute multi-platform builds efficiently
# https://docs.docker.com/build/ci/github-actions/multi-platform/#distribute-build-across-multiple-runners
name: reusable-distribute
on:
workflow_call:
inputs:
# inputs specific to this reusable worklow
runner:
type: string
description: "Runner instance"
required: false
default: 'auto'
push:
type: boolean
description: "Push image to registry"
required: false
default: false
set-meta-annotations:
type: boolean
description: "Set metadata-action annotations"
required: false
default: false
set-meta-labels:
type: boolean
description: "Set metadata-action labels"
required: false
default: false
setup-qemu:
type: boolean
description: "Install QEMU static binaries"
required: false
default: true
# same as docker/metadata-action inputs (minus sep-tags, sep-labels, sep-annotations, bake-target)
meta-image:
type: string
description: "Image to use as base name for tags"
required: true
meta-tags:
type: string
description: 'List of tags as key-value pair attributes'
required: false
meta-flavor:
type: string
description: 'Flavors to apply'
required: false
meta-labels:
type: string
description: 'List of custom labels'
required: false
meta-annotations:
type: string
description: 'List of custom annotations'
required: false
# same as docker/login-action inputs (minus logout)
login-registry:
type: string
description: 'Server address of Docker registry. If not set then will default to Docker Hub'
required: false
login-username:
type: string
description: 'Username used to log against the Docker registry'
required: false
login-ecr:
type: string
description: 'Specifies whether the given registry is ECR (auto, true or false)'
default: 'auto'
required: false
# same as docker/setup-qemu-action inputs (minus platforms, cache-image)
qemu-image:
type: string
description: 'QEMU static binaries Docker image (e.g. tonistiigi/binfmt:latest)'
required: false
# same as docker/build-push-action inputs (minus builder, call, load, outputs, platforms, push, tags)
build-add-hosts:
type: string
description: "List of a customs host-to-IP mapping (e.g., docker:10.180.0.1)"
required: false
build-allow:
type: string
description: "List of extra privileged entitlement (e.g., network.host,security.insecure)"
required: false
build-annotations:
type: string
description: "List of annotation to set to the image"
required: false
build-attests:
type: string
description: "List of attestation parameters (e.g., type=sbom,generator=image)"
required: false
build-args:
type: string
description: "List of build-time variables"
required: false
build-cache-from:
type: string
description: "List of external cache sources for buildx (e.g., user/app:cache, type=local,src=path/to/dir)"
required: false
build-cache-to:
type: string
description: "List of cache export destinations for buildx (e.g., user/app:cache, type=local,dest=path/to/dir)"
required: false
build-cgroup-parent:
type: string
description: "Optional parent cgroup for the container used in the build"
required: false
build-context:
type: string
description: "Build's context is the set of files located in the specified PATH or URL"
required: false
build-contexts:
type: string
description: "List of additional build contexts (e.g., name=path)"
required: false
build-file:
type: string
description: "Path to the Dockerfile"
required: false
build-labels:
type: string
description: "List of metadata for an image"
required: false
build-network:
type: string
description: "Set the networking mode for the RUN instructions during build"
required: false
build-no-cache:
type: boolean
description: "Do not use cache when building the image"
required: false
default: false
build-no-cache-filters:
type: string
description: "Do not cache specified stages"
required: false
build-platforms:
type: string
description: "List of target platforms for build"
required: true
build-provenance:
type: string
description: "Generate provenance attestation for the build (shorthand for --attest=type=provenance)"
required: false
build-pull:
type: boolean
description: "Always attempt to pull all referenced images"
required: false
default: false
build-sbom:
type: string
description: "Generate SBOM attestation for the build (shorthand for --attest=type=sbom)"
required: false
build-secrets:
type: string
description: "List of secrets to expose to the build (e.g., key=string, GIT_AUTH_TOKEN=mytoken)"
required: false
build-secret-envs:
type: string
description: "List of secret env vars to expose to the build (e.g., key=envname, MY_SECRET=MY_ENV_VAR)"
required: false
build-secret-files:
type: string
description: "List of secret files to expose to the build (e.g., key=filename, MY_SECRET=./secret.txt)"
required: false
build-shm-size:
type: string
description: "Size of /dev/shm (e.g., 2g)"
required: false
build-ssh:
type: string
description: "List of SSH agent socket or keys to expose to the build"
required: false
build-target:
type: string
description: "Sets the target stage to build"
required: false
build-ulimit:
type: string
description: "Ulimit options (e.g., nofile=1024:1024)"
required: false
secrets:
login-username:
description: 'Username used to log against the Docker registry'
required: false
login-password:
description: "Password or personal access token used to log against the Docker registry"
required: false
github-token:
description: "GitHub Token used to authenticate against a repository for Git context"
required: false
env:
ACTIONS_TOOLKIT_VERSION: "0.54.0"
jobs:
prepare:
runs-on: ubuntu-latest
outputs:
includes: ${{ steps.set.outputs.includes }}
steps:
-
name: Install npm dependencies
uses: actions/github-script@v7
with:
script: |
await exec.exec('npm', ['install',
'@docker/actions-toolkit@${{ env.ACTIONS_TOOLKIT_VERSION }}'
]);
-
name: Set includes
id: set
uses: actions/github-script@v7
env:
INPUT_RUNNER: ${{ inputs.runner }}
INPUT_META-IMAGE: ${{ inputs.meta-image }}
INPUT_BUILD-PLATFORMS: ${{ inputs.build-platforms }}
GITHUB_TOKEN: ${{ secrets.github-token || github.token }}
with:
script: |
const { Util } = require('@docker/actions-toolkit/lib/util');
if (Util.getInputList('meta-image').length > 1) {
throw new Error('Only one meta-image is allowed');
}
const inpRunner = core.getInput('runner');
const inpBuildPlatforms = Util.getInputList('build-platforms');
if (inpBuildPlatforms.length > 100) {
throw new Error('Too many platforms');
} else if (inpBuildPlatforms.length <= 1) {
throw new Error('At least 2 platforms are required');
}
await core.group(`Set includes`, async () => {
let includes = [];
inpBuildPlatforms.forEach((platform, index) => {
let runner = inpRunner;
if (runner === 'auto') {
runner = platform.startsWith('linux/arm') ? 'ubuntu-24.04-arm' : 'ubuntu-latest';
}
includes.push({
index: index,
platform: platform,
runner: runner
});
});
core.info(JSON.stringify(includes, null, 2));
core.setOutput('includes', JSON.stringify(includes));
});
build:
runs-on: ${{ matrix.runner }}
needs:
- prepare
outputs:
# needs predefined outputs as we can't use dynamic ones atm: https://github.com/actions/runner/pull/2477
# 100 is the maximum number of platforms supported by the matrix strategy
digest_0: ${{ steps.digest.outputs.digest_0 }}
digest_1: ${{ steps.digest.outputs.digest_1 }}
digest_2: ${{ steps.digest.outputs.digest_2 }}
digest_3: ${{ steps.digest.outputs.digest_3 }}
digest_4: ${{ steps.digest.outputs.digest_4 }}
digest_5: ${{ steps.digest.outputs.digest_5 }}
digest_6: ${{ steps.digest.outputs.digest_6 }}
digest_7: ${{ steps.digest.outputs.digest_7 }}
digest_8: ${{ steps.digest.outputs.digest_8 }}
digest_9: ${{ steps.digest.outputs.digest_9 }}
digest_10: ${{ steps.digest.outputs.digest_10 }}
digest_11: ${{ steps.digest.outputs.digest_11 }}
digest_12: ${{ steps.digest.outputs.digest_12 }}
digest_13: ${{ steps.digest.outputs.digest_13 }}
digest_14: ${{ steps.digest.outputs.digest_14 }}
digest_15: ${{ steps.digest.outputs.digest_15 }}
digest_16: ${{ steps.digest.outputs.digest_16 }}
digest_17: ${{ steps.digest.outputs.digest_17 }}
digest_18: ${{ steps.digest.outputs.digest_18 }}
digest_19: ${{ steps.digest.outputs.digest_19 }}
digest_20: ${{ steps.digest.outputs.digest_20 }}
digest_21: ${{ steps.digest.outputs.digest_21 }}
digest_22: ${{ steps.digest.outputs.digest_22 }}
digest_23: ${{ steps.digest.outputs.digest_23 }}
digest_24: ${{ steps.digest.outputs.digest_24 }}
digest_25: ${{ steps.digest.outputs.digest_25 }}
digest_26: ${{ steps.digest.outputs.digest_26 }}
digest_27: ${{ steps.digest.outputs.digest_27 }}
digest_28: ${{ steps.digest.outputs.digest_28 }}
digest_29: ${{ steps.digest.outputs.digest_29 }}
digest_30: ${{ steps.digest.outputs.digest_30 }}
digest_31: ${{ steps.digest.outputs.digest_31 }}
digest_32: ${{ steps.digest.outputs.digest_32 }}
digest_33: ${{ steps.digest.outputs.digest_33 }}
digest_34: ${{ steps.digest.outputs.digest_34 }}
digest_35: ${{ steps.digest.outputs.digest_35 }}
digest_36: ${{ steps.digest.outputs.digest_36 }}
digest_37: ${{ steps.digest.outputs.digest_37 }}
digest_38: ${{ steps.digest.outputs.digest_38 }}
digest_39: ${{ steps.digest.outputs.digest_39 }}
digest_40: ${{ steps.digest.outputs.digest_40 }}
digest_41: ${{ steps.digest.outputs.digest_41 }}
digest_42: ${{ steps.digest.outputs.digest_42 }}
digest_43: ${{ steps.digest.outputs.digest_43 }}
digest_44: ${{ steps.digest.outputs.digest_44 }}
digest_45: ${{ steps.digest.outputs.digest_45 }}
digest_46: ${{ steps.digest.outputs.digest_46 }}
digest_47: ${{ steps.digest.outputs.digest_47 }}
digest_48: ${{ steps.digest.outputs.digest_48 }}
digest_49: ${{ steps.digest.outputs.digest_49 }}
digest_50: ${{ steps.digest.outputs.digest_50 }}
digest_51: ${{ steps.digest.outputs.digest_51 }}
digest_52: ${{ steps.digest.outputs.digest_52 }}
digest_53: ${{ steps.digest.outputs.digest_53 }}
digest_54: ${{ steps.digest.outputs.digest_54 }}
digest_55: ${{ steps.digest.outputs.digest_55 }}
digest_56: ${{ steps.digest.outputs.digest_56 }}
digest_57: ${{ steps.digest.outputs.digest_57 }}
digest_58: ${{ steps.digest.outputs.digest_58 }}
digest_59: ${{ steps.digest.outputs.digest_59 }}
digest_60: ${{ steps.digest.outputs.digest_60 }}
digest_61: ${{ steps.digest.outputs.digest_61 }}
digest_62: ${{ steps.digest.outputs.digest_62 }}
digest_63: ${{ steps.digest.outputs.digest_63 }}
digest_64: ${{ steps.digest.outputs.digest_64 }}
digest_65: ${{ steps.digest.outputs.digest_65 }}
digest_66: ${{ steps.digest.outputs.digest_66 }}
digest_67: ${{ steps.digest.outputs.digest_67 }}
digest_68: ${{ steps.digest.outputs.digest_68 }}
digest_69: ${{ steps.digest.outputs.digest_69 }}
digest_70: ${{ steps.digest.outputs.digest_70 }}
digest_71: ${{ steps.digest.outputs.digest_71 }}
digest_72: ${{ steps.digest.outputs.digest_72 }}
digest_73: ${{ steps.digest.outputs.digest_73 }}
digest_74: ${{ steps.digest.outputs.digest_74 }}
digest_75: ${{ steps.digest.outputs.digest_75 }}
digest_76: ${{ steps.digest.outputs.digest_76 }}
digest_77: ${{ steps.digest.outputs.digest_77 }}
digest_78: ${{ steps.digest.outputs.digest_78 }}
digest_79: ${{ steps.digest.outputs.digest_79 }}
digest_80: ${{ steps.digest.outputs.digest_80 }}
digest_81: ${{ steps.digest.outputs.digest_81 }}
digest_82: ${{ steps.digest.outputs.digest_82 }}
digest_83: ${{ steps.digest.outputs.digest_83 }}
digest_84: ${{ steps.digest.outputs.digest_84 }}
digest_85: ${{ steps.digest.outputs.digest_85 }}
digest_86: ${{ steps.digest.outputs.digest_86 }}
digest_87: ${{ steps.digest.outputs.digest_87 }}
digest_88: ${{ steps.digest.outputs.digest_88 }}
digest_89: ${{ steps.digest.outputs.digest_89 }}
digest_90: ${{ steps.digest.outputs.digest_90 }}
digest_91: ${{ steps.digest.outputs.digest_91 }}
digest_92: ${{ steps.digest.outputs.digest_92 }}
digest_93: ${{ steps.digest.outputs.digest_93 }}
digest_94: ${{ steps.digest.outputs.digest_94 }}
digest_95: ${{ steps.digest.outputs.digest_95 }}
digest_96: ${{ steps.digest.outputs.digest_96 }}
digest_97: ${{ steps.digest.outputs.digest_97 }}
digest_98: ${{ steps.digest.outputs.digest_98 }}
digest_99: ${{ steps.digest.outputs.digest_99 }}
strategy:
fail-fast: false
matrix:
include: ${{ fromJson(needs.prepare.outputs.includes) }}
steps:
-
name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ inputs.meta-image }}
tags: ${{ inputs.meta-tags }}
flavor: ${{ inputs.meta-flavor }}
labels: ${{ inputs.meta-labels }}
annotations: ${{ inputs.meta-annotations }}
-
name: Login to registry
uses: docker/login-action@v3
if: ${{ inputs.push }}
with:
registry: ${{ inputs.login-registry }}
username: ${{ inputs.login-username || secrets.login-username }}
password: ${{ secrets.login-password }}
-
name: Set up QEMU
uses: docker/setup-qemu-action@v3
if: ${{ inputs.setup-qemu }}
with:
image: ${{ inputs.qemu-image }}
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
-
name: Set build inputs
id: build-inputs
uses: actions/github-script@v7
env:
INPUT_SET-META-ANNOTATIONS: ${{ inputs.set-meta-annotations }}
INPUT_SET-META-LABELS: ${{ inputs.set-meta-labels }}
INPUT_BUILD-ANNOTATIONS: ${{ inputs.build-annotations }}
INPUT_BUILD-LABELS: ${{ inputs.build-labels }}
with:
script: |
const inpSetMetaAnnotations = core.getBooleanInput('set-meta-annotations');
const inpSetMetaLabels = core.getBooleanInput('set-meta-labels');
let inpBuildAnnotations = core.getInput('build-annotations');
if (inpSetMetaAnnotations) {
inpBuildAnnotations += `\n${{ steps.meta.outputs.annotations }}`;
}
let inpBuildLabels = core.getInput('build-labels');
if (inpSetMetaLabels) {
inpBuildLabels += `\n${{ steps.meta.outputs.labels }}`;
}
core.setOutput('annotations', inpBuildAnnotations);
core.setOutput('labels', inpBuildLabels);
-
name: Build
id: build
uses: docker/build-push-action@v6
with:
add-hosts: ${{ inputs.build-add-hosts }}
allow: ${{ inputs.build-allow }}
annotations: ${{ steps.build-inputs.outputs.annotations }}
attests: ${{ inputs.build-attests }}
build-args: ${{ inputs.build-build-args }}
build-contexts: ${{ inputs.build-contexts }}
cache-from: ${{ inputs.build-cache-from }}
cache-to: ${{ inputs.build-cache-to }}
cgroup-parent: ${{ inputs.build-cgroup-parent }}
context: ${{ inputs.build-context }}
file: ${{ inputs.build-file }}
labels: ${{ steps.build-inputs.outputs.labels }}
network: ${{ inputs.build-network }}
no-cache: ${{ inputs.build-no-cache }}
no-cache-filters: ${{ inputs.build-no-cache-filters }}
outputs: |
type=image,"name=${{ inputs.meta-image }}",push-by-digest=true,name-canonical=true,push=${{ inputs.push }}
platforms: ${{ matrix.platform }}
provenance: ${{ inputs.build-provenance }}
pull: ${{ inputs.build-pull }}
sbom: ${{ inputs.build-sbom }}
secrets: ${{ inputs.build-secrets }}
secret-envs: ${{ inputs.build-secret-envs }}
secret-files: ${{ inputs.build-secret-files }}
shm-size: ${{ inputs.build-shm-size }}
ssh: ${{ inputs.build-ssh }}
target: ${{ inputs.build-target }}
ulimit: ${{ inputs.build-ulimit }}
-
name: Set digest output
id: digest
uses: actions/github-script@v7
with:
script: |
const metadata = JSON.parse(`${{ steps.build.outputs.metadata }}`);
const digest = metadata['containerimage.digest'];
const outputKey = `digest_${{ matrix.index }}`;
core.info(`Setting digest output: ${outputKey}=${digest}`);
core.setOutput(outputKey, digest);
merge:
runs-on: ubuntu-latest
needs:
- build
steps:
-
name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ inputs.meta-image }}
tags: ${{ inputs.meta-tags }}
flavor: ${{ inputs.meta-flavor }}
-
name: Login to registry
uses: docker/login-action@v3
if: ${{ inputs.push }}
with:
registry: ${{ inputs.login-registry }}
username: ${{ inputs.login-username || secrets.login-username }}
password: ${{ secrets.login-password }}
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
if: ${{ inputs.push }}
-
name: Create manifest list
uses: actions/github-script@v7
env:
INPUT_PUSH: ${{ inputs.push }}
INPUT_META-IMAGE: ${{ inputs.meta-image }}
with:
script: |
const inpPush = core.getBooleanInput('push');
const inpMetaImage = core.getInput('meta-image');
let digests = [];
await core.group(`Digests`, async () => {
digests = Object.values(JSON.parse(`${{ toJSON(needs.build.outputs) }}`));
core.info(JSON.stringify(digests, null, 2));
});
let tags = [];
await core.group(`Tags`, async () => {
tags = `${{ steps.meta.outputs.tags }}`.split('\n').filter(Boolean);
core.info(JSON.stringify(tags, null, 2));
});
let createArgs = ['buildx', 'imagetools', 'create'];
for (const tag of tags) {
createArgs.push(`-t`, tag);
}
for (const digest of digests) {
createArgs.push(`${inpMetaImage}@${digest}`);
}
if (inpPush) {
if (tags.length === 0) {
throw new Error('No tags to create manifest list');
}
await exec.getExecOutput('docker', createArgs, {
ignoreReturnCode: true
}).then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
throw new Error(res.stderr);
}
});
await core.group(`Inspect image`, async () => {
await exec.getExecOutput('docker', ['buildx', 'imagetools', 'inspect', `${inpMetaImage}:${tags[0]}`], {
ignoreReturnCode: true
}).then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
throw new Error(res.stderr);
}
});
});
} else {
await core.group(`Generated imagetools create command`, async () => {
core.info(`docker ${createArgs.join(' ')}`);
});
core.info(`Push is disabled, skipping manifest list creation`);
}

30
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

6
dist/licenses.txt generated vendored
View File

@ -2358,9 +2358,6 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
dot-object
MIT
encoding
MIT
Copyright (c) 2012-2014 Andris Reinman
@ -3691,9 +3688,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
twirp-ts
MIT
undici
MIT
MIT License

View File

@ -27,7 +27,7 @@
"packageManager": "yarn@3.6.3",
"dependencies": {
"@actions/core": "^1.11.1",
"@docker/actions-toolkit": "0.55.0",
"@docker/actions-toolkit": "0.56.0",
"handlebars": "^4.7.7"
},
"devDependencies": {

178
yarn.lock
View File

@ -12,9 +12,9 @@ __metadata:
languageName: node
linkType: hard
"@actions/artifact@npm:^2.2.1":
version: 2.2.1
resolution: "@actions/artifact@npm:2.2.1"
"@actions/artifact@npm:^2.2.2":
version: 2.2.2
resolution: "@actions/artifact@npm:2.2.2"
dependencies:
"@actions/core": ^1.10.0
"@actions/github": ^5.1.1
@ -27,15 +27,14 @@ __metadata:
"@protobuf-ts/plugin": ^2.2.3-alpha.1
archiver: ^7.0.1
jwt-decode: ^3.1.2
twirp-ts: ^2.5.0
unzip-stream: ^0.3.1
checksum: 6ce4e62d941f17743c845637cdd832ca34c77efe0c31cf7f6ab3ad0531e54e62d4379198e8af5e84463b5f5ae0bc0ea11d41cc77c5fae7e511c7ef01742892ea
checksum: 1501b3d0ceb671f370786ccf70014de9586c5a78c95d235248fc16c73bf928f8de2aa932a679258f6d9bc2f2e570648d830551af9f063298f05d19f3330b33bc
languageName: node
linkType: hard
"@actions/cache@npm:^4.0.1":
version: 4.0.1
resolution: "@actions/cache@npm:4.0.1"
"@actions/cache@npm:^4.0.2":
version: 4.0.2
resolution: "@actions/cache@npm:4.0.2"
dependencies:
"@actions/core": ^1.11.1
"@actions/exec": ^1.0.1
@ -47,7 +46,7 @@ __metadata:
"@azure/storage-blob": ^12.13.0
"@protobuf-ts/plugin": ^2.9.4
semver: ^6.3.1
checksum: ca2cc59c8682817788f387bdb83279e1924dece32cb5a0789b0d57837c317caf35a90ec240f7671798ca3bf620a72085ddbdc86ef1c309a79e4b8efe73074bae
checksum: 208f11238a26194f331b329bb99d50a87c1a3ccef1dbae181e5c142b3faf41715203e0c5cbc491519d3d97540a68fbd418c25fb6e16caabf76248c40867c02b4
languageName: node
linkType: hard
@ -1073,12 +1072,12 @@ __metadata:
languageName: node
linkType: hard
"@docker/actions-toolkit@npm:0.55.0":
version: 0.55.0
resolution: "@docker/actions-toolkit@npm:0.55.0"
"@docker/actions-toolkit@npm:0.56.0":
version: 0.56.0
resolution: "@docker/actions-toolkit@npm:0.56.0"
dependencies:
"@actions/artifact": ^2.2.1
"@actions/cache": ^4.0.1
"@actions/artifact": ^2.2.2
"@actions/cache": ^4.0.2
"@actions/core": ^1.11.1
"@actions/exec": ^1.1.1
"@actions/github": ^6.0.0
@ -1098,7 +1097,7 @@ __metadata:
semver: ^7.7.1
tar-stream: ^3.1.7
tmp: ^0.2.3
checksum: 1d596fa95e26273d8974f9d3310018b0a0bdc5e1994c8e088a148b17298ec6bf398ed2a257b9c6eee221a095168d05ea81ce3f0b5d6fd422550dce4100529408
checksum: 0f1b569f8bb206399f8c26e566c78e30e4a311bbd64486016e7fa1d35fbbb4c94d4f55afa6b711afa4b41c5835b40b038f48c3d1bfdfdc6f7c6680973e922d9e
languageName: node
linkType: hard
@ -1891,7 +1890,7 @@ __metadata:
languageName: node
linkType: hard
"@protobuf-ts/plugin-framework@npm:^2.0.7, @protobuf-ts/plugin-framework@npm:^2.9.4":
"@protobuf-ts/plugin-framework@npm:^2.9.4":
version: 2.9.4
resolution: "@protobuf-ts/plugin-framework@npm:2.9.4"
dependencies:
@ -2770,16 +2769,6 @@ __metadata:
languageName: node
linkType: hard
"camel-case@npm:^4.1.2":
version: 4.1.2
resolution: "camel-case@npm:4.1.2"
dependencies:
pascal-case: ^3.1.2
tslib: ^2.0.3
checksum: bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6
languageName: node
linkType: hard
"camelcase@npm:^5.3.1":
version: 5.3.1
resolution: "camelcase@npm:5.3.1"
@ -2939,13 +2928,6 @@ __metadata:
languageName: node
linkType: hard
"commander@npm:^6.1.0":
version: 6.2.1
resolution: "commander@npm:6.2.1"
checksum: d7090410c0de6bc5c67d3ca41c41760d6d268f3c799e530aafb73b7437d1826bbf0d2a3edac33f8b57cc9887b4a986dce307fa5557e109be40eadb7c43b21742
languageName: node
linkType: hard
"compress-commons@npm:^6.0.2":
version: 6.0.2
resolution: "compress-commons@npm:6.0.2"
@ -3161,7 +3143,7 @@ __metadata:
resolution: "docker-build-push@workspace:."
dependencies:
"@actions/core": ^1.11.1
"@docker/actions-toolkit": 0.55.0
"@docker/actions-toolkit": 0.56.0
"@types/node": ^20.12.12
"@typescript-eslint/eslint-plugin": ^7.9.0
"@typescript-eslint/parser": ^7.9.0
@ -3188,18 +3170,6 @@ __metadata:
languageName: node
linkType: hard
"dot-object@npm:^2.1.4":
version: 2.1.5
resolution: "dot-object@npm:2.1.5"
dependencies:
commander: ^6.1.0
glob: ^7.1.6
bin:
dot-object: bin/dot-object
checksum: 3e5a681bbea32dfc1cd0b1254adc93531bd462f7474a355e981738ef37253e4bc5c9482926289ef4d3c6ef9adb0a7ed894725ed3a69aa22063343dc2a57dd764
languageName: node
linkType: hard
"duplexify@npm:^3.5.0, duplexify@npm:^3.6.0":
version: 3.7.1
resolution: "duplexify@npm:3.7.1"
@ -3852,20 +3822,6 @@ __metadata:
languageName: node
linkType: hard
"glob@npm:^7.1.6":
version: 7.2.3
resolution: "glob@npm:7.2.3"
dependencies:
fs.realpath: ^1.0.0
inflight: ^1.0.4
inherits: 2
minimatch: ^3.1.1
once: ^1.3.0
path-is-absolute: ^1.0.0
checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133
languageName: node
linkType: hard
"globals@npm:^11.1.0":
version: 11.12.0
resolution: "globals@npm:11.12.0"
@ -4947,15 +4903,6 @@ __metadata:
languageName: node
linkType: hard
"lower-case@npm:^2.0.2":
version: 2.0.2
resolution: "lower-case@npm:2.0.2"
dependencies:
tslib: ^2.0.3
checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010
languageName: node
linkType: hard
"lru-cache@npm:^10.0.1":
version: 10.2.2
resolution: "lru-cache@npm:10.2.2"
@ -5080,7 +5027,7 @@ __metadata:
languageName: node
linkType: hard
"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":
"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.2":
version: 3.1.2
resolution: "minimatch@npm:3.1.2"
dependencies:
@ -5260,16 +5207,6 @@ __metadata:
languageName: node
linkType: hard
"no-case@npm:^3.0.4":
version: 3.0.4
resolution: "no-case@npm:3.0.4"
dependencies:
lower-case: ^2.0.2
tslib: ^2.0.3
checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c
languageName: node
linkType: hard
"node-fetch@npm:^2.6.7":
version: 2.6.7
resolution: "node-fetch@npm:2.6.7"
@ -5464,16 +5401,6 @@ __metadata:
languageName: node
linkType: hard
"pascal-case@npm:^3.1.2":
version: 3.1.2
resolution: "pascal-case@npm:3.1.2"
dependencies:
no-case: ^3.0.4
tslib: ^2.0.3
checksum: ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e
languageName: node
linkType: hard
"path-exists@npm:^4.0.0":
version: 4.0.0
resolution: "path-exists@npm:4.0.0"
@ -5512,13 +5439,6 @@ __metadata:
languageName: node
linkType: hard
"path-to-regexp@npm:^6.2.0":
version: 6.3.0
resolution: "path-to-regexp@npm:6.3.0"
checksum: eca78602e6434a1b6799d511d375ec044e8d7e28f5a48aa5c28d57d8152fb52f3fc62fb1cfc5dfa2198e1f041c2a82ed14043d75740a2fe60e91b5089a153250
languageName: node
linkType: hard
"path-type@npm:^4.0.0":
version: 4.0.0
resolution: "path-type@npm:4.0.0"
@ -5583,15 +5503,6 @@ __metadata:
languageName: node
linkType: hard
"prettier@npm:^2.5.1":
version: 2.8.8
resolution: "prettier@npm:2.8.8"
bin:
prettier: bin-prettier.js
checksum: b49e409431bf129dd89238d64299ba80717b57ff5a6d1c1a8b1a28b590d998a34e083fa13573bc732bb8d2305becb4c9a4407f8486c81fa7d55100eb08263cf8
languageName: node
linkType: hard
"prettier@npm:^3.2.5":
version: 3.2.5
resolution: "prettier@npm:3.2.5"
@ -6402,16 +6313,6 @@ __metadata:
languageName: node
linkType: hard
"ts-poet@npm:^4.5.0":
version: 4.15.0
resolution: "ts-poet@npm:4.15.0"
dependencies:
lodash: ^4.17.15
prettier: ^2.5.1
checksum: 93490e8b5921e23ac65afdecc00b4dd53f3560d7d9c19778a3f0bd9a300ba7ca71585a989d564508313bc73e8c431413714d513ebca2d5c428f909ec36bcf6e9
languageName: node
linkType: hard
"tslib@npm:^1.10.0":
version: 1.14.1
resolution: "tslib@npm:1.14.1"
@ -6419,13 +6320,6 @@ __metadata:
languageName: node
linkType: hard
"tslib@npm:^2.0.3, tslib@npm:^2.6.2":
version: 2.6.2
resolution: "tslib@npm:2.6.2"
checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad
languageName: node
linkType: hard
"tslib@npm:^2.2.0":
version: 2.6.1
resolution: "tslib@npm:2.6.1"
@ -6433,6 +6327,13 @@ __metadata:
languageName: node
linkType: hard
"tslib@npm:^2.6.2":
version: 2.6.2
resolution: "tslib@npm:2.6.2"
checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad
languageName: node
linkType: hard
"tunnel@npm:0.0.6, tunnel@npm:^0.0.6":
version: 0.0.6
resolution: "tunnel@npm:0.0.6"
@ -6440,30 +6341,6 @@ __metadata:
languageName: node
linkType: hard
"twirp-ts@npm:^2.5.0":
version: 2.5.0
resolution: "twirp-ts@npm:2.5.0"
dependencies:
"@protobuf-ts/plugin-framework": ^2.0.7
camel-case: ^4.1.2
dot-object: ^2.1.4
path-to-regexp: ^6.2.0
ts-poet: ^4.5.0
yaml: ^1.10.2
peerDependencies:
"@protobuf-ts/plugin": ^2.5.0
ts-proto: ^1.81.3
peerDependenciesMeta:
"@protobuf-ts/plugin":
optional: true
ts-proto:
optional: true
bin:
protoc-gen-twirp_ts: protoc-gen-twirp_ts
checksum: e7cf87d77ab4d2cd327c9d8307e82ff61afc5af56883aed5fb6ac7d57999b646945e11158be87c10f0340aeef2efde6eb896f2efd60599498f17b4f310d66e4f
languageName: node
linkType: hard
"type-check@npm:^0.4.0, type-check@npm:~0.4.0":
version: 0.4.0
resolution: "type-check@npm:0.4.0"
@ -6790,13 +6667,6 @@ __metadata:
languageName: node
linkType: hard
"yaml@npm:^1.10.2":
version: 1.10.2
resolution: "yaml@npm:1.10.2"
checksum: ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f
languageName: node
linkType: hard
"yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1":
version: 21.1.1
resolution: "yargs-parser@npm:21.1.1"