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" echo "::error::Should have failed"
exit 1 exit 1
fi 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. IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
dot-object
MIT
encoding encoding
MIT MIT
Copyright (c) 2012-2014 Andris Reinman 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. THE SOFTWARE.
twirp-ts
MIT
undici undici
MIT MIT
MIT License MIT License

View File

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

178
yarn.lock
View File

@ -12,9 +12,9 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@actions/artifact@npm:^2.2.1": "@actions/artifact@npm:^2.2.2":
version: 2.2.1 version: 2.2.2
resolution: "@actions/artifact@npm:2.2.1" resolution: "@actions/artifact@npm:2.2.2"
dependencies: dependencies:
"@actions/core": ^1.10.0 "@actions/core": ^1.10.0
"@actions/github": ^5.1.1 "@actions/github": ^5.1.1
@ -27,15 +27,14 @@ __metadata:
"@protobuf-ts/plugin": ^2.2.3-alpha.1 "@protobuf-ts/plugin": ^2.2.3-alpha.1
archiver: ^7.0.1 archiver: ^7.0.1
jwt-decode: ^3.1.2 jwt-decode: ^3.1.2
twirp-ts: ^2.5.0
unzip-stream: ^0.3.1 unzip-stream: ^0.3.1
checksum: 6ce4e62d941f17743c845637cdd832ca34c77efe0c31cf7f6ab3ad0531e54e62d4379198e8af5e84463b5f5ae0bc0ea11d41cc77c5fae7e511c7ef01742892ea checksum: 1501b3d0ceb671f370786ccf70014de9586c5a78c95d235248fc16c73bf928f8de2aa932a679258f6d9bc2f2e570648d830551af9f063298f05d19f3330b33bc
languageName: node languageName: node
linkType: hard linkType: hard
"@actions/cache@npm:^4.0.1": "@actions/cache@npm:^4.0.2":
version: 4.0.1 version: 4.0.2
resolution: "@actions/cache@npm:4.0.1" resolution: "@actions/cache@npm:4.0.2"
dependencies: dependencies:
"@actions/core": ^1.11.1 "@actions/core": ^1.11.1
"@actions/exec": ^1.0.1 "@actions/exec": ^1.0.1
@ -47,7 +46,7 @@ __metadata:
"@azure/storage-blob": ^12.13.0 "@azure/storage-blob": ^12.13.0
"@protobuf-ts/plugin": ^2.9.4 "@protobuf-ts/plugin": ^2.9.4
semver: ^6.3.1 semver: ^6.3.1
checksum: ca2cc59c8682817788f387bdb83279e1924dece32cb5a0789b0d57837c317caf35a90ec240f7671798ca3bf620a72085ddbdc86ef1c309a79e4b8efe73074bae checksum: 208f11238a26194f331b329bb99d50a87c1a3ccef1dbae181e5c142b3faf41715203e0c5cbc491519d3d97540a68fbd418c25fb6e16caabf76248c40867c02b4
languageName: node languageName: node
linkType: hard linkType: hard
@ -1073,12 +1072,12 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@docker/actions-toolkit@npm:0.55.0": "@docker/actions-toolkit@npm:0.56.0":
version: 0.55.0 version: 0.56.0
resolution: "@docker/actions-toolkit@npm:0.55.0" resolution: "@docker/actions-toolkit@npm:0.56.0"
dependencies: dependencies:
"@actions/artifact": ^2.2.1 "@actions/artifact": ^2.2.2
"@actions/cache": ^4.0.1 "@actions/cache": ^4.0.2
"@actions/core": ^1.11.1 "@actions/core": ^1.11.1
"@actions/exec": ^1.1.1 "@actions/exec": ^1.1.1
"@actions/github": ^6.0.0 "@actions/github": ^6.0.0
@ -1098,7 +1097,7 @@ __metadata:
semver: ^7.7.1 semver: ^7.7.1
tar-stream: ^3.1.7 tar-stream: ^3.1.7
tmp: ^0.2.3 tmp: ^0.2.3
checksum: 1d596fa95e26273d8974f9d3310018b0a0bdc5e1994c8e088a148b17298ec6bf398ed2a257b9c6eee221a095168d05ea81ce3f0b5d6fd422550dce4100529408 checksum: 0f1b569f8bb206399f8c26e566c78e30e4a311bbd64486016e7fa1d35fbbb4c94d4f55afa6b711afa4b41c5835b40b038f48c3d1bfdfdc6f7c6680973e922d9e
languageName: node languageName: node
linkType: hard linkType: hard
@ -1891,7 +1890,7 @@ __metadata:
languageName: node languageName: node
linkType: hard 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 version: 2.9.4
resolution: "@protobuf-ts/plugin-framework@npm:2.9.4" resolution: "@protobuf-ts/plugin-framework@npm:2.9.4"
dependencies: dependencies:
@ -2770,16 +2769,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "camelcase@npm:^5.3.1":
version: 5.3.1 version: 5.3.1
resolution: "camelcase@npm:5.3.1" resolution: "camelcase@npm:5.3.1"
@ -2939,13 +2928,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "compress-commons@npm:^6.0.2":
version: 6.0.2 version: 6.0.2
resolution: "compress-commons@npm:6.0.2" resolution: "compress-commons@npm:6.0.2"
@ -3161,7 +3143,7 @@ __metadata:
resolution: "docker-build-push@workspace:." resolution: "docker-build-push@workspace:."
dependencies: dependencies:
"@actions/core": ^1.11.1 "@actions/core": ^1.11.1
"@docker/actions-toolkit": 0.55.0 "@docker/actions-toolkit": 0.56.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
"@typescript-eslint/parser": ^7.9.0 "@typescript-eslint/parser": ^7.9.0
@ -3188,18 +3170,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "duplexify@npm:^3.5.0, duplexify@npm:^3.6.0":
version: 3.7.1 version: 3.7.1
resolution: "duplexify@npm:3.7.1" resolution: "duplexify@npm:3.7.1"
@ -3852,20 +3822,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "globals@npm:^11.1.0":
version: 11.12.0 version: 11.12.0
resolution: "globals@npm:11.12.0" resolution: "globals@npm:11.12.0"
@ -4947,15 +4903,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "lru-cache@npm:^10.0.1":
version: 10.2.2 version: 10.2.2
resolution: "lru-cache@npm:10.2.2" resolution: "lru-cache@npm:10.2.2"
@ -5080,7 +5027,7 @@ __metadata:
languageName: node languageName: node
linkType: hard 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 version: 3.1.2
resolution: "minimatch@npm:3.1.2" resolution: "minimatch@npm:3.1.2"
dependencies: dependencies:
@ -5260,16 +5207,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "node-fetch@npm:^2.6.7":
version: 2.6.7 version: 2.6.7
resolution: "node-fetch@npm:2.6.7" resolution: "node-fetch@npm:2.6.7"
@ -5464,16 +5401,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "path-exists@npm:^4.0.0":
version: 4.0.0 version: 4.0.0
resolution: "path-exists@npm:4.0.0" resolution: "path-exists@npm:4.0.0"
@ -5512,13 +5439,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "path-type@npm:^4.0.0":
version: 4.0.0 version: 4.0.0
resolution: "path-type@npm:4.0.0" resolution: "path-type@npm:4.0.0"
@ -5583,15 +5503,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "prettier@npm:^3.2.5":
version: 3.2.5 version: 3.2.5
resolution: "prettier@npm:3.2.5" resolution: "prettier@npm:3.2.5"
@ -6402,16 +6313,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "tslib@npm:^1.10.0":
version: 1.14.1 version: 1.14.1
resolution: "tslib@npm:1.14.1" resolution: "tslib@npm:1.14.1"
@ -6419,13 +6320,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "tslib@npm:^2.2.0":
version: 2.6.1 version: 2.6.1
resolution: "tslib@npm:2.6.1" resolution: "tslib@npm:2.6.1"
@ -6433,6 +6327,13 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "tunnel@npm:0.0.6, tunnel@npm:^0.0.6":
version: 0.0.6 version: 0.0.6
resolution: "tunnel@npm:0.0.6" resolution: "tunnel@npm:0.0.6"
@ -6440,30 +6341,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "type-check@npm:^0.4.0, type-check@npm:~0.4.0":
version: 0.4.0 version: 0.4.0
resolution: "type-check@npm:0.4.0" resolution: "type-check@npm:0.4.0"
@ -6790,13 +6667,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1":
version: 21.1.1 version: 21.1.1
resolution: "yargs-parser@npm:21.1.1" resolution: "yargs-parser@npm:21.1.1"