Compare commits

..

31 Commits

Author SHA1 Message Date
CrazyMax 9e3d36ea10 chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-07-22 13:01:47 +02:00
CrazyMax 14d6a7934e docker hub oidc support
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-07-22 13:01:46 +02:00
CrazyMax 03c851098f Merge pull request #1044 from docker/dependabot/npm_and_yarn/docker/actions-toolkit-0.93.0
build(deps): bump @docker/actions-toolkit from 0.92.0 to 0.93.0
2026-07-22 08:53:04 +02:00
CrazyMax ad8a81f098 Merge pull request #1046 from docker/dependabot/npm_and_yarn/brace-expansion-1.1.16
build(deps): bump brace-expansion from 1.1.13 to 1.1.16
2026-07-22 08:51:57 +02:00
github-actions[bot] 6d219a4928 [dependabot skip] chore: update generated content 2026-07-22 06:51:44 +00:00
dependabot[bot] b3200694f4 build(deps): bump @docker/actions-toolkit from 0.92.0 to 0.93.0
Bumps [@docker/actions-toolkit](https://github.com/docker/actions-toolkit) from 0.92.0 to 0.93.0.
- [Release notes](https://github.com/docker/actions-toolkit/releases)
- [Commits](https://github.com/docker/actions-toolkit/compare/v0.92.0...v0.93.0)

---
updated-dependencies:
- dependency-name: "@docker/actions-toolkit"
  dependency-version: 0.93.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-22 06:50:49 +00:00
github-actions[bot] 08d3680aa8 [dependabot skip] chore: update generated content 2026-07-22 06:50:38 +00:00
CrazyMax 381f5a4f5e Merge pull request #1042 from docker/dependabot/github_actions/codeql-actions-af2beed448
build(deps): bump the codeql-actions group with 2 updates
2026-07-22 08:49:44 +02:00
dependabot[bot] 4bc69ce4fd build(deps): bump brace-expansion from 1.1.13 to 1.1.16
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.13 to 1.1.16.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/v1.1.13...v1.1.16)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.16
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-22 06:49:44 +00:00
CrazyMax ddf94996dc Merge pull request #1043 from docker/dependabot/github_actions/actions/setup-node-7.0.0
build(deps): bump actions/setup-node from 6.4.0 to 7.0.0
2026-07-22 08:49:18 +02:00
CrazyMax d870eb57d3 Merge pull request #1045 from docker/dependabot/github_actions/actions/checkout-7.0.1
build(deps): bump actions/checkout from 7.0.0 to 7.0.1
2026-07-22 08:48:31 +02:00
CrazyMax 4d7b1348c8 Merge pull request #1038 from docker/dependabot/npm_and_yarn/js-yaml-5.2.1
build(deps): bump js-yaml from 5.2.0 to 5.2.1
2026-07-22 08:47:43 +02:00
dependabot[bot] 608836776e build(deps): bump actions/checkout from 7.0.0 to 7.0.1
Bumps [actions/checkout](https://github.com/actions/checkout) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0...3d3c42e5aac5ba805825da76410c181273ba90b1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-21 05:52:59 +00:00
dependabot[bot] 3bab31f360 build(deps): bump actions/setup-node from 6.4.0 to 7.0.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.4.0 to 7.0.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e...820762786026740c76f36085b0efc47a31fe5020)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-15 05:52:18 +00:00
dependabot[bot] dc654b7be1 build(deps): bump the codeql-actions group with 2 updates
Bumps the codeql-actions group with 2 updates: [github/codeql-action/init](https://github.com/github/codeql-action) and [github/codeql-action/analyze](https://github.com/github/codeql-action).


Updates `github/codeql-action/init` from 4.36.2 to 4.36.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/8aad20d150bbac5944a9f9d289da16a4b0d87c1e...54f647b7e1bb85c95cddabcd46b0c578ec92bc1a)

Updates `github/codeql-action/analyze` from 4.36.2 to 4.36.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/8aad20d150bbac5944a9f9d289da16a4b0d87c1e...54f647b7e1bb85c95cddabcd46b0c578ec92bc1a)

---
updated-dependencies:
- dependency-name: github/codeql-action/init
  dependency-version: 4.36.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql-actions
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.36.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 12:01:00 +00:00
CrazyMax c66a8fcb24 Merge pull request #1041 from crazy-max/group-codeql-dependabot-updates
chore: group codeql dependabot updates
2026-07-09 13:57:49 +02:00
CrazyMax 6d7f9d458a chore: group codeql dependabot updates
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-07-09 12:43:17 +02:00
CrazyMax 13169716da Merge pull request #1040 from docker/dependabot/github_actions/aws-actions/configure-aws-credentials-6.2.2
build(deps): bump aws-actions/configure-aws-credentials from 6.2.1 to 6.2.2
2026-07-09 10:17:14 +02:00
dependabot[bot] c1aa9e5f45 build(deps): bump aws-actions/configure-aws-credentials
Bumps [aws-actions/configure-aws-credentials](https://github.com/aws-actions/configure-aws-credentials) from 6.2.1 to 6.2.2.
- [Release notes](https://github.com/aws-actions/configure-aws-credentials/releases)
- [Changelog](https://github.com/aws-actions/configure-aws-credentials/blob/main/CHANGELOG.md)
- [Commits](https://github.com/aws-actions/configure-aws-credentials/compare/254c19bd240aabef8777f48595e9d2d7b972184b...517a711dbcd0e402f90c77e7e2f81e849156e31d)

---
updated-dependencies:
- dependency-name: aws-actions/configure-aws-credentials
  dependency-version: 6.2.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-09 05:53:39 +00:00
github-actions[bot] 026f3975fd [dependabot skip] chore: update generated content 2026-07-06 05:55:36 +00:00
dependabot[bot] 3dbb99fd00 build(deps): bump js-yaml from 5.2.0 to 5.2.1
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 5.2.0 to 5.2.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/5.2.0...5.2.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 5.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-06 05:54:34 +00:00
CrazyMax af1e73f918 Merge pull request #1034 from docker/dependabot/npm_and_yarn/aws-sdk-dependencies-853218ef63
build(deps): bump the aws-sdk-dependencies group across 1 directory with 2 updates
2026-07-03 15:02:31 +02:00
github-actions[bot] da722bde43 [dependabot skip] chore: update generated content 2026-07-03 13:00:13 +00:00
dependabot[bot] 2916ad60bd build(deps): bump the aws-sdk-dependencies group across 1 directory with 2 updates
Bumps the aws-sdk-dependencies group with 2 updates in the / directory: [@aws-sdk/client-ecr](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-ecr) and [@aws-sdk/client-ecr-public](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-ecr-public).


Updates `@aws-sdk/client-ecr` from 3.1076.0 to 3.1077.0
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-ecr/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.1077.0/clients/client-ecr)

Updates `@aws-sdk/client-ecr-public` from 3.1076.0 to 3.1077.0
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-ecr-public/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.1077.0/clients/client-ecr-public)

---
updated-dependencies:
- dependency-name: "@aws-sdk/client-ecr"
  dependency-version: 3.1077.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: aws-sdk-dependencies
- dependency-name: "@aws-sdk/client-ecr-public"
  dependency-version: 3.1077.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: aws-sdk-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-03 12:59:24 +00:00
CrazyMax ca0a662f78 Merge pull request #1035 from crazy-max/fix-registry-auth-empty-mask
skip empty registry-auth secret mask
2026-07-03 14:56:11 +02:00
CrazyMax c455755a57 chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-07-03 14:12:13 +02:00
CrazyMax 48351901f8 skip empty registry-auth secret mask
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-07-03 14:12:12 +02:00
CrazyMax 992421c6e6 Merge pull request #1033 from docker/dependabot/github_actions/docker/bake-action-7.3.0
build(deps): bump docker/bake-action from 7.2.0 to 7.3.0
2026-07-03 11:10:14 +02:00
CrazyMax b249b43765 Merge pull request #1032 from docker/dependabot/github_actions/docker/bake-action/subaction/matrix-7.3.0
build(deps): bump docker/bake-action/subaction/matrix from 7.2.0 to 7.3.0
2026-07-03 11:09:46 +02:00
dependabot[bot] 1b67977736 build(deps): bump docker/bake-action from 7.2.0 to 7.3.0
Bumps [docker/bake-action](https://github.com/docker/bake-action) from 7.2.0 to 7.3.0.
- [Release notes](https://github.com/docker/bake-action/releases)
- [Commits](https://github.com/docker/bake-action/compare/6614cfa25eff9a0b2b2697efb0b6159e7680d584...d3418bd7d0e9324001bca92fa8ba175ea7e6dc9b)

---
updated-dependencies:
- dependency-name: docker/bake-action
  dependency-version: 7.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-03 05:53:41 +00:00
dependabot[bot] 9d49d6a323 build(deps): bump docker/bake-action/subaction/matrix
Bumps [docker/bake-action/subaction/matrix](https://github.com/docker/bake-action) from 7.2.0 to 7.3.0.
- [Release notes](https://github.com/docker/bake-action/releases)
- [Commits](https://github.com/docker/bake-action/compare/6614cfa25eff9a0b2b2697efb0b6159e7680d584...d3418bd7d0e9324001bca92fa8ba175ea7e6dc9b)

---
updated-dependencies:
- dependency-name: docker/bake-action/subaction/matrix
  dependency-version: 7.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-03 05:53:34 +00:00
18 changed files with 765 additions and 1151 deletions
+3
View File
@@ -10,6 +10,9 @@ updates:
crazy-max-dot-github:
patterns:
- "crazy-max/.github/*"
codeql-actions:
patterns:
- "github/codeql-action/*"
labels:
- "dependencies"
- "bot"
+50 -27
View File
@@ -25,7 +25,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Stop docker
run: |
@@ -49,7 +49,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to GitHub Container Registry
uses: ./
@@ -67,7 +67,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to GitHub Container Registry
uses: ./
@@ -97,7 +97,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to GitHub Container Registry
uses: ./
@@ -122,7 +122,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to ACR
uses: ./
@@ -142,7 +142,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to Docker Hub
uses: ./
@@ -150,6 +150,29 @@ jobs:
username: ${{ vars.DOCKERPUBLICBOT_USERNAME }}
password: ${{ secrets.DOCKERPUBLICBOT_READ_PAT }}
dockerhub-oidc:
permissions:
contents: read
id-token: write
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- windows-latest
steps:
-
name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to Docker Hub with OIDC
uses: ./
env:
DOCKERHUB_OIDC_CONNECTIONID: ${{ vars.DOCKERHUB_OIDC_CONNECTIONID }}
with:
username: ${{ vars.DOCKERHUB_OIDC_USERNAME }}
ecr:
runs-on: ${{ matrix.os }}
strategy:
@@ -161,7 +184,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to ECR
uses: ./
@@ -181,10 +204,10 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@254c19bd240aabef8777f48595e9d2d7b972184b # v6.2.1
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d # v6.2.2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
@@ -209,10 +232,10 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@254c19bd240aabef8777f48595e9d2d7b972184b # v6.2.1
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d # v6.2.2
with:
role-to-assume: arn:aws:iam::175142243308:role/official_gha_cicd_login_action
aws-region: us-east-1
@@ -233,7 +256,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to Public ECR
continue-on-error: ${{ matrix.os == 'windows-latest' }}
@@ -256,10 +279,10 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@254c19bd240aabef8777f48595e9d2d7b972184b # v6.2.1
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d # v6.2.2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
@@ -285,10 +308,10 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@254c19bd240aabef8777f48595e9d2d7b972184b # v6.2.1
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d # v6.2.2
with:
role-to-assume: arn:aws:iam::175142243308:role/official_gha_cicd_login_action
aws-region: us-east-1
@@ -310,7 +333,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to GitHub Container Registry
uses: ./
@@ -330,7 +353,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to GitLab
uses: ./
@@ -350,7 +373,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to Google Artifact Registry
uses: ./
@@ -370,7 +393,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to Google Container Registry
uses: ./
@@ -384,7 +407,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to registries
uses: ./
@@ -407,7 +430,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to registries
uses: ./
@@ -428,7 +451,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to registries
id: login
@@ -460,7 +483,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to Docker Hub
uses: ./
@@ -490,7 +513,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to Docker Hub
uses: ./
@@ -520,7 +543,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to GitHub Container Registry
uses: ./
@@ -551,7 +574,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Login to GitHub Container Registry
uses: ./
+4 -4
View File
@@ -22,7 +22,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Enable corepack
run: |
@@ -30,17 +30,17 @@ jobs:
yarn --version
-
name: Set up Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: ${{ env.NODE_VERSION }}
-
name: Initialize CodeQL
uses: github/codeql-action/init@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v4.36.2
uses: github/codeql-action/init@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4.36.3
with:
languages: javascript-typescript
build-mode: none
-
name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v4.36.2
uses: github/codeql-action/analyze@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4.36.3
with:
category: "/language:javascript-typescript"
+1 -1
View File
@@ -22,7 +22,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Publish
uses: actions/publish-immutable-action@4bc8754ffc40f27910afb20287dbbbb675a4e978 # v0.0.4
+2 -2
View File
@@ -20,10 +20,10 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Test
uses: docker/bake-action@6614cfa25eff9a0b2b2697efb0b6159e7680d584 # v7.2.0
uses: docker/bake-action@d3418bd7d0e9324001bca92fa8ba175ea7e6dc9b # v7.3.0
with:
source: .
targets: test
+2 -2
View File
@@ -30,14 +30,14 @@ jobs:
permission-contents: write
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.event.pull_request.head.ref }}
fetch-depth: 0
token: ${{ steps.docker-read-app.outputs.token }}
-
name: Build
uses: docker/bake-action@6614cfa25eff9a0b2b2697efb0b6159e7680d584 # v7.2.0
uses: docker/bake-action@d3418bd7d0e9324001bca92fa8ba175ea7e6dc9b # v7.3.0
with:
source: .
targets: build
+3 -3
View File
@@ -22,11 +22,11 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
-
name: Generate matrix
id: generate
uses: docker/bake-action/subaction/matrix@6614cfa25eff9a0b2b2697efb0b6159e7680d584 # v7.2.0
uses: docker/bake-action/subaction/matrix@d3418bd7d0e9324001bca92fa8ba175ea7e6dc9b # v7.3.0
with:
target: validate
@@ -41,6 +41,6 @@ jobs:
steps:
-
name: Validate
uses: docker/bake-action@6614cfa25eff9a0b2b2697efb0b6159e7680d584 # v7.2.0
uses: docker/bake-action@d3418bd7d0e9324001bca92fa8ba175ea7e6dc9b # v7.3.0
with:
targets: ${{ matrix.target }}
+40
View File
@@ -28,6 +28,7 @@ ___
* [Set scopes for the authentication token](#set-scopes-for-the-authentication-token)
* [Customizing](#customizing)
* [inputs](#inputs)
* [environment variables](#environment-variables)
* [Contributing](#contributing)
## Usage
@@ -57,6 +58,36 @@ jobs:
password: ${{ secrets.DOCKERHUB_TOKEN }}
```
You can also [authenticate to Docker Hub with OpenID Connect](https://docs.docker.com/enterprise/security/oidc-connections/)
when your Docker Hub organization has an OIDC connection configured. The
workflow must grant the `id-token: write` permission, pass the Docker Hub
organization name as `username`, omit `password`, and set the OIDC connection
ID in `DOCKERHUB_OIDC_CONNECTIONID` environment variable.
```yaml
name: ci
on:
push:
branches: main
permissions:
contents: read
id-token: write
jobs:
login:
runs-on: ubuntu-latest
steps:
-
name: Login to Docker Hub
uses: docker/login-action@v4
env:
DOCKERHUB_OIDC_CONNECTIONID: ${{ vars.DOCKERHUB_OIDC_CONNECTIONID }}
with:
username: ${{ vars.DOCKERHUB_ORGANIZATION }}
```
### GitHub Container Registry
To authenticate to the [GitHub Container Registry](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry),
@@ -690,6 +721,15 @@ The following inputs can be used as `step.with` keys:
> [!NOTE]
> The `registry-auth` input cannot be used with other inputs except `logout`.
### environment variables
The following environment variables can be set as `step.env` keys:
| Name | Type | Default | Description |
|-------------------------------|--------|---------|-----------------------------------------------------------------------------|
| `DOCKERHUB_OIDC_CONNECTIONID` | String | | Docker Hub OIDC connection ID. Required for Docker Hub OIDC login |
| `DOCKERHUB_OIDC_EXPIREIN` | Number | `300` | Docker Hub OIDC token lifetime in seconds. Must be between `300` and `3600` |
## Contributing
Want to contribute? Awesome! You can find information about contributing to
+36 -1
View File
@@ -1,4 +1,4 @@
import {afterEach, expect, test} from 'vitest';
import {afterEach, expect, test, vi} from 'vitest';
import * as path from 'path';
import {Buildx} from '@docker/actions-toolkit/lib/buildx/buildx.js';
@@ -6,6 +6,7 @@ import {Buildx} from '@docker/actions-toolkit/lib/buildx/buildx.js';
import {getAuthList, getInputs} from '../src/context.js';
afterEach(() => {
vi.restoreAllMocks();
for (const key of Object.keys(process.env)) {
if (key.startsWith('INPUT_')) {
delete process.env[key];
@@ -33,3 +34,37 @@ test('getAuthList uses the default Docker Hub registry when computing scoped con
configDir: path.join(Buildx.configDir, 'config', 'registry-1.docker.io', 'myscope')
});
});
test('getAuthList skips secret masking when registry-auth password is absent', async () => {
const stdoutWriteSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
const [auth] = getAuthList({
registry: '',
username: '',
password: '',
scope: '',
ecr: '',
logout: true,
registryAuth: '- registry: public.ecr.aws\n'
});
expect(stdoutWriteSpy.mock.calls.map(call => call[0]).join('')).not.toContain('::add-mask::');
expect(auth).toMatchObject({
registry: 'public.ecr.aws',
ecr: 'auto'
});
});
test('getAuthList masks registry-auth password when present', async () => {
const stdoutWriteSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
getAuthList({
registry: '',
username: '',
password: '',
scope: '',
ecr: '',
logout: true,
registryAuth: '- registry: ghcr.io\n username: dbowie\n password: groundcontrol\n'
});
expect(stdoutWriteSpy.mock.calls.map(call => call[0]).join('')).toContain('::add-mask::groundcontrol');
});
+133
View File
@@ -0,0 +1,133 @@
import * as core from '@actions/core';
import * as httpm from '@actions/http-client';
import {beforeEach, describe, expect, test, vi} from 'vitest';
import * as dockerhub from '../src/dockerhub.js';
vi.mock('@actions/core', () => ({
getIDToken: vi.fn(),
info: vi.fn(),
setSecret: vi.fn()
}));
const validConnectionID = '123e4567-e89b-42d3-a456-426614174000';
const httpResponse = (statusCode: number, body: string, headers: Record<string, string> = {}): httpm.HttpClientResponse => {
return {
message: {
statusCode,
headers
},
readBody: vi.fn(async () => body)
} as unknown as httpm.HttpClientResponse;
};
describe('isDockerHubOIDC', () => {
beforeEach(() => {
delete process.env.DOCKERHUB_OIDC_CONNECTIONID;
});
test.each(['', 'docker.io', 'registry-1.docker.io', 'registry-1-stage.docker.io'])('detects Docker Hub registry %p with empty password', registry => {
process.env.DOCKERHUB_OIDC_CONNECTIONID = validConnectionID;
expect(dockerhub.isDockerHubOIDC(registry, '')).toBe(true);
});
test('requires connection ID env var', () => {
expect(dockerhub.isDockerHubOIDC('docker.io', '')).toBe(false);
});
test('requires empty password', () => {
process.env.DOCKERHUB_OIDC_CONNECTIONID = validConnectionID;
expect(dockerhub.isDockerHubOIDC('docker.io', 'groundcontrol')).toBe(false);
});
test('ignores non-Docker Hub registries', () => {
process.env.DOCKERHUB_OIDC_CONNECTIONID = validConnectionID;
expect(dockerhub.isDockerHubOIDC('ghcr.io', '')).toBe(false);
});
});
describe('getOIDCToken', () => {
const getIDTokenMock = vi.mocked(core.getIDToken);
const setSecretMock = vi.mocked(core.setSecret);
let postSpy: ReturnType<typeof vi.spyOn>;
beforeEach(() => {
process.env.DOCKERHUB_OIDC_CONNECTIONID = validConnectionID;
delete process.env.DOCKERHUB_OIDC_EXPIREIN;
getIDTokenMock.mockResolvedValue('github-id-token');
postSpy = vi.spyOn(httpm.HttpClient.prototype, 'post').mockResolvedValue(httpResponse(200, JSON.stringify({access_token: 'hub-token'})));
});
test('exchanges GitHub OIDC token for Docker Hub token', async () => {
const credentials = await dockerhub.getOIDCToken('docker.io', 'dbowie');
expect(credentials).toEqual({
username: 'dbowie',
token: 'hub-token'
});
expect(getIDTokenMock).toHaveBeenCalledWith('https://identity.docker.com');
expect(postSpy).toHaveBeenCalledTimes(1);
expect(postSpy.mock.calls[0][0]).toBe('https://identity.docker.com/oauth/token');
const http = postSpy.mock.contexts[0] as httpm.HttpClient;
expect(http.userAgent).toBe('github.com/docker/login-action');
expect(http.requestOptions?.headers).toEqual({
'Content-Type': 'application/x-www-form-urlencoded'
});
const body = new URLSearchParams(postSpy.mock.calls[0][1]);
expect(body.get('grant_type')).toBe('urn:ietf:params:oauth:grant-type:token-exchange');
expect(body.get('subject_token_type')).toBe('urn:ietf:params:oauth:token-type:id_token');
expect(body.get('subject_token')).toBe('github-id-token');
expect(body.get('connection_id')).toBe(validConnectionID);
expect(body.get('expires_in')).toBe('300');
expect(setSecretMock).toHaveBeenCalledWith('hub-token');
});
test('uses custom token expiration', async () => {
process.env.DOCKERHUB_OIDC_EXPIREIN = '900';
await dockerhub.getOIDCToken('docker.io', 'dbowie');
const body = new URLSearchParams(postSpy.mock.calls[0][1]);
expect(body.get('expires_in')).toBe('900');
});
test('uses stage identity host for stage registry', async () => {
await dockerhub.getOIDCToken('registry-1-stage.docker.io', 'dbowie');
expect(getIDTokenMock).toHaveBeenCalledWith('https://identity-stage.docker.com');
expect(postSpy.mock.calls[0][0]).toBe('https://identity-stage.docker.com/oauth/token');
});
test('requires connection ID env var', async () => {
delete process.env.DOCKERHUB_OIDC_CONNECTIONID;
await expect(dockerhub.getOIDCToken('docker.io', 'dbowie')).rejects.toThrow('DOCKERHUB_OIDC_CONNECTIONID is required for Docker Hub OIDC login');
expect(getIDTokenMock).not.toHaveBeenCalled();
expect(postSpy).not.toHaveBeenCalled();
});
test('validates connection ID', async () => {
process.env.DOCKERHUB_OIDC_CONNECTIONID = 'not-a-uuid';
await expect(dockerhub.getOIDCToken('docker.io', 'dbowie')).rejects.toThrow('Invalid DOCKERHUB_OIDC_CONNECTIONID. Must be a valid UUID.');
expect(getIDTokenMock).not.toHaveBeenCalled();
expect(postSpy).not.toHaveBeenCalled();
});
test.each(['not-a-number', '299', '3601'])('validates token expiration %p', async expiresIn => {
process.env.DOCKERHUB_OIDC_EXPIREIN = expiresIn;
await expect(dockerhub.getOIDCToken('docker.io', 'dbowie')).rejects.toThrow(`Invalid DOCKERHUB_OIDC_EXPIREIN: ${expiresIn}. Must be between 300 and 3600`);
expect(getIDTokenMock).not.toHaveBeenCalled();
expect(postSpy).not.toHaveBeenCalled();
});
test('retries rate limited token requests with Retry-After', async () => {
postSpy.mockResolvedValueOnce(httpResponse(429, '', {'retry-after': '0'})).mockResolvedValueOnce(httpResponse(200, JSON.stringify({access_token: 'hub-token'})));
await dockerhub.getOIDCToken('docker.io', 'dbowie');
expect(postSpy).toHaveBeenCalledTimes(2);
expect(core.info).toHaveBeenCalledWith('Docker Hub OIDC token request rate limited, retrying in 0ms (attempt 1/5)');
});
test('throws Docker Hub API errors', async () => {
postSpy.mockResolvedValue(httpResponse(400, JSON.stringify({description: 'bad connection'})));
await expect(dockerhub.getOIDCToken('docker.io', 'dbowie')).rejects.toThrow('Docker Hub API: bad status code 400: bad connection');
});
});
Generated Vendored
+143 -168
View File
File diff suppressed because one or more lines are too long
Generated Vendored
+4 -4
View File
File diff suppressed because one or more lines are too long
Generated Vendored
+36 -657
View File
@@ -184,217 +184,6 @@ Apache License
-----------
The following npm packages may be included in this product:
- @aws-crypto/sha256-browser@5.2.0
- @aws-crypto/supports-web-crypto@5.2.0
These packages each contain the following license:
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-----------
The following npm packages may be included in this product:
- @sigstore/bundle@5.0.0
@@ -610,7 +399,7 @@ Apache License
The following npm package may be included in this product:
- @docker/actions-toolkit@0.92.0
- @docker/actions-toolkit@0.93.0
This package contains the following license:
@@ -2124,219 +1913,8 @@ Apache License
The following npm packages may be included in this product:
- @aws-crypto/crc32@5.2.0
- @aws-crypto/util@5.2.0
These packages each contain the following license:
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-----------
The following npm packages may be included in this product:
- @aws-sdk/client-ecr-public@3.1076.0
- @aws-sdk/client-ecr@3.1076.0
- @aws-sdk/client-ecr-public@3.1077.0
- @aws-sdk/client-ecr@3.1077.0
These packages each contain the following license:
@@ -2546,10 +2124,8 @@ Apache License
The following npm packages may be included in this product:
- @aws-sdk/signature-v4-multi-region@3.996.36
- @smithy/core@3.27.0
- @aws-sdk/signature-v4-multi-region@3.996.37
- @smithy/core@3.28.0
- @smithy/types@2.11.0
- @smithy/types@4.15.0
These packages each contain the following license:
@@ -2822,7 +2398,7 @@ SOFTWARE.
The following npm package may be included in this product:
- js-yaml@5.2.0
- js-yaml@5.2.1
This package contains the following license:
@@ -3599,7 +3175,7 @@ software or this license, under any kind of legal claim.***
The following npm package may be included in this product:
- @aws-sdk/core@3.974.24
- @aws-sdk/core@3.974.25
This package contains the following license:
@@ -3807,233 +3383,18 @@ Apache License
-----------
The following npm package may be included in this product:
- @aws-crypto/sha256-js@5.2.0
This package contains the following license:
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-----------
The following npm packages may be included in this product:
- @aws-sdk/credential-provider-env@3.972.50
- @aws-sdk/credential-provider-ini@3.972.57
- @aws-sdk/credential-provider-node@3.972.59
- @aws-sdk/token-providers@3.1076.0
- @aws-sdk/types@3.523.0
- @aws-sdk/credential-provider-env@3.972.51
- @aws-sdk/credential-provider-ini@3.972.58
- @aws-sdk/credential-provider-node@3.972.60
- @aws-sdk/token-providers@3.1077.0
- @aws-sdk/types@3.973.14
- @aws-sdk/util-locate-window@3.37.0
- @aws-sdk/xml-builder@3.972.32
- @smithy/credential-provider-imds@4.4.4
- @smithy/fetch-http-handler@5.6.1
- @smithy/is-array-buffer@2.2.0
- @smithy/node-http-handler@4.9.1
- @smithy/signature-v4@5.6.0
- @smithy/util-buffer-from@2.2.0
- @smithy/util-utf8@2.3.0
These packages each contain the following license:
@@ -4243,9 +3604,9 @@ Apache License
The following npm packages may be included in this product:
- @aws-sdk/credential-provider-process@3.972.50
- @aws-sdk/credential-provider-sso@3.972.56
- @aws-sdk/credential-provider-web-identity@3.972.56
- @aws-sdk/credential-provider-process@3.972.51
- @aws-sdk/credential-provider-sso@3.972.57
- @aws-sdk/credential-provider-web-identity@3.972.57
These packages each contain the following license:
@@ -4519,9 +3880,9 @@ END OF TERMS AND CONDITIONS
The following npm packages may be included in this product:
- @aws-sdk/credential-provider-http@3.972.52
- @aws-sdk/credential-provider-login@3.972.56
- @aws-sdk/nested-clients@3.997.24
- @aws-sdk/credential-provider-http@3.972.53
- @aws-sdk/credential-provider-login@3.972.57
- @aws-sdk/nested-clients@3.997.25
- @sigstore/verify@4.1.0
These packages each contain the following license:
@@ -5229,7 +4590,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
The following npm packages may be included in this product:
- brace-expansion@1.1.13
- brace-expansion@1.1.16
- brace-expansion@2.0.3
These packages each contain the following license:
@@ -6201,7 +5562,7 @@ THE SOFTWARE.
The following npm package may be included in this product:
- csv-parse@7.0.0
- csv-parse@7.0.1
This package contains the following license:
@@ -6229,6 +5590,24 @@ SOFTWARE.
-----------
The following npm package may be included in this product:
- uuid@14.0.1
This package contains the following license:
The MIT License (MIT)
Copyright (c) 2010-2020 Robert Kieffer and other contributors
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-----------
The following npm package may be included in this product:
- tunnel@0.0.6
+6 -4
View File
@@ -24,12 +24,14 @@
"packageManager": "yarn@4.15.0",
"dependencies": {
"@actions/core": "^3.0.1",
"@aws-sdk/client-ecr": "^3.1076.0",
"@aws-sdk/client-ecr-public": "^3.1076.0",
"@docker/actions-toolkit": "^0.92.0",
"@actions/http-client": "^4.0.1",
"@aws-sdk/client-ecr": "^3.1077.0",
"@aws-sdk/client-ecr-public": "^3.1077.0",
"@docker/actions-toolkit": "^0.93.0",
"http-proxy-agent": "^9.1.0",
"https-proxy-agent": "^9.1.0",
"js-yaml": "^5.2.0"
"js-yaml": "^5.2.1",
"uuid": "^14.0.1"
},
"devDependencies": {
"@eslint/js": "^9.39.3",
+3 -1
View File
@@ -53,7 +53,9 @@ export function getAuthList(inputs: Inputs): Array<Auth> {
});
} else {
auths = (yaml.load(inputs.registryAuth) as Array<Auth>).map(auth => {
core.setSecret(auth.password); // redacted in workflow logs
if (auth.password) {
core.setSecret(auth.password); // redacted in workflow logs
}
const registry = auth.registry || 'docker.io';
return {
registry,
+9 -1
View File
@@ -4,12 +4,20 @@ import {Docker} from '@docker/actions-toolkit/lib/docker/docker.js';
import * as aws from './aws.js';
import * as context from './context.js';
import * as dockerhub from './dockerhub.js';
export async function login(auth: context.Auth): Promise<void> {
if (/true/i.test(auth.ecr) || (auth.ecr == 'auto' && aws.isECR(auth.registry))) {
await loginECR(auth.registry, auth.username, auth.password, auth.scope);
} else {
await loginStandard(auth.registry, auth.username, auth.password, auth.scope);
let username = auth.username;
let password = auth.password;
if (dockerhub.isDockerHubOIDC(auth.registry, password)) {
const credentials = await dockerhub.getOIDCToken(auth.registry, username);
username = credentials.username;
password = credentials.token;
}
await loginStandard(auth.registry, username, password, auth.scope);
}
}
+134
View File
@@ -0,0 +1,134 @@
import * as core from '@actions/core';
import * as httpm from '@actions/http-client';
import {HttpCodes} from '@actions/http-client';
import {validate as uuidValidate} from 'uuid';
export interface LoginCredentials {
username: string;
token: string;
}
interface OIDCTokenResponse {
access_token: string;
}
const defaultExpiresIn = 300;
const minExpiresIn = 300;
const maxExpiresIn = 3600;
const maxRetries = 5;
export const isDockerHubOIDC = (registry: string, password: string): boolean => {
return process.env.DOCKERHUB_OIDC_CONNECTIONID !== undefined && !password && isDockerHubRegistry(registry);
};
const isDockerHubRegistry = (registry: string): boolean => {
return registry === '' || registry === 'docker.io' || registry === 'registry-1.docker.io' || registry === 'registry-1-stage.docker.io';
};
export const getOIDCToken = async (registry: string, username: string): Promise<LoginCredentials> => {
const connectionID = process.env.DOCKERHUB_OIDC_CONNECTIONID?.trim();
if (!connectionID) {
throw new Error('DOCKERHUB_OIDC_CONNECTIONID is required for Docker Hub OIDC login');
}
if (!uuidValidate(connectionID)) {
throw new Error('Invalid DOCKERHUB_OIDC_CONNECTIONID. Must be a valid UUID.');
}
const expiresIn = getExpiresIn();
const identityHost = registry === 'registry-1-stage.docker.io' ? 'identity-stage.docker.com' : 'identity.docker.com';
const audience = `https://${identityHost}`;
const idToken = await core.getIDToken(audience);
const http: httpm.HttpClient = new httpm.HttpClient('github.com/docker/login-action', [], {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
});
const data = new URLSearchParams();
data.set('grant_type', 'urn:ietf:params:oauth:grant-type:token-exchange');
data.set('subject_token_type', 'urn:ietf:params:oauth:token-type:id_token');
data.set('subject_token', idToken);
data.set('connection_id', connectionID);
data.set('expires_in', expiresIn.toString());
const resp = await postWithRetry(http, `https://${identityHost}/oauth/token`, data.toString());
const tokenResp = <OIDCTokenResponse>JSON.parse(await handleResponse(resp));
core.setSecret(tokenResp.access_token);
return {
username,
token: tokenResp.access_token
};
};
const getExpiresIn = (): number => {
const expiresInInput = process.env.DOCKERHUB_OIDC_EXPIREIN?.trim() || defaultExpiresIn.toString();
const expiresIn = Number(expiresInInput);
if (isNaN(expiresIn) || expiresIn < minExpiresIn || expiresIn > maxExpiresIn) {
throw new Error(`Invalid DOCKERHUB_OIDC_EXPIREIN: ${expiresInInput}. Must be between ${minExpiresIn} and ${maxExpiresIn}`);
}
return expiresIn;
};
const postWithRetry = async (http: httpm.HttpClient, url: string, data: string): Promise<httpm.HttpClientResponse> => {
let resp = await http.post(url, data);
for (let attempt = 0; (resp.message.statusCode || HttpCodes.InternalServerError) === HttpCodes.TooManyRequests && attempt < maxRetries; attempt++) {
const delay = parseRetryAfter(resp.message.headers['retry-after']);
if (delay === null) {
break;
}
await resp.readBody();
core.info(`Docker Hub OIDC token request rate limited, retrying in ${delay}ms (attempt ${attempt + 1}/${maxRetries})`);
await new Promise(resolve => setTimeout(resolve, delay));
resp = await http.post(url, data);
}
return resp;
};
const parseRetryAfter = (value: string | string[] | undefined): number | null => {
if (value === undefined) {
return null;
}
if (Array.isArray(value)) {
value = value[0];
}
const seconds = Number(value);
if (isNaN(seconds)) {
return null;
}
return Math.max(0, seconds * 1000);
};
const handleResponse = async (resp: httpm.HttpClientResponse): Promise<string> => {
const body = await resp.readBody();
const statusCode = resp.message.statusCode || HttpCodes.InternalServerError;
if (statusCode < HttpCodes.OK || statusCode >= HttpCodes.MultipleChoices) {
throw parseError(statusCode, body);
}
return body;
};
const parseError = (statusCode: number, body: string): Error => {
if (statusCode === 401) {
throw new Error(`Docker Hub API: operation not permitted`);
}
if (body) {
const errResp = parseErrorBody(body);
for (const k of ['description', 'message', 'detail', 'error']) {
if (errResp[k]) {
throw new Error(`Docker Hub API: bad status code ${statusCode}: ${errResp[k]}`);
}
}
}
throw new Error(`Docker Hub API: bad status code ${statusCode}`);
};
const parseErrorBody = (body: string): Record<string, string> => {
try {
return <Record<string, string>>JSON.parse(body);
} catch {
return {};
}
};
+156 -276
View File
@@ -170,290 +170,217 @@ __metadata:
languageName: node
linkType: hard
"@aws-crypto/crc32@npm:5.2.0":
version: 5.2.0
resolution: "@aws-crypto/crc32@npm:5.2.0"
"@aws-sdk/client-ecr-public@npm:^3.1077.0":
version: 3.1077.0
resolution: "@aws-sdk/client-ecr-public@npm:3.1077.0"
dependencies:
"@aws-crypto/util": "npm:^5.2.0"
"@aws-sdk/types": "npm:^3.222.0"
tslib: "npm:^2.6.2"
checksum: 10/1b0a56ad4cb44c9512d8b1668dcf9306ab541d3a73829f435ca97abaec8d56f3db953db03ad0d0698754fea16fcd803d11fa42e0889bc7b803c6a030b04c63de
languageName: node
linkType: hard
"@aws-crypto/sha256-browser@npm:5.2.0":
version: 5.2.0
resolution: "@aws-crypto/sha256-browser@npm:5.2.0"
dependencies:
"@aws-crypto/sha256-js": "npm:^5.2.0"
"@aws-crypto/supports-web-crypto": "npm:^5.2.0"
"@aws-crypto/util": "npm:^5.2.0"
"@aws-sdk/types": "npm:^3.222.0"
"@aws-sdk/util-locate-window": "npm:^3.0.0"
"@smithy/util-utf8": "npm:^2.0.0"
tslib: "npm:^2.6.2"
checksum: 10/2b1b701ca6caa876333b4eb2b96e5187d71ebb51ebf8e2d632690dbcdedeff038202d23adcc97e023437ed42bb1963b7b463e343687edf0635fd4b98b2edad1a
languageName: node
linkType: hard
"@aws-crypto/sha256-js@npm:5.2.0, @aws-crypto/sha256-js@npm:^5.2.0":
version: 5.2.0
resolution: "@aws-crypto/sha256-js@npm:5.2.0"
dependencies:
"@aws-crypto/util": "npm:^5.2.0"
"@aws-sdk/types": "npm:^3.222.0"
tslib: "npm:^2.6.2"
checksum: 10/f46aace7b873c615be4e787ab0efd0148ef7de48f9f12c7d043e05c52e52b75bb0bf6dbcb9b2852d940d7724fab7b6d5ff1469160a3dd024efe7a68b5f70df8c
languageName: node
linkType: hard
"@aws-crypto/supports-web-crypto@npm:^5.2.0":
version: 5.2.0
resolution: "@aws-crypto/supports-web-crypto@npm:5.2.0"
dependencies:
tslib: "npm:^2.6.2"
checksum: 10/6ed0c7e17f4f6663d057630805c45edb35d5693380c24ab52d4c453ece303c6c8a6ade9ee93c97dda77d9f6cae376ffbb44467057161c513dffa3422250edaf5
languageName: node
linkType: hard
"@aws-crypto/util@npm:^5.2.0":
version: 5.2.0
resolution: "@aws-crypto/util@npm:5.2.0"
dependencies:
"@aws-sdk/types": "npm:^3.222.0"
"@smithy/util-utf8": "npm:^2.0.0"
tslib: "npm:^2.6.2"
checksum: 10/f80a174c404e1ad4364741c942f440e75f834c08278fa754349fe23a6edc679d480ea9ced5820774aee58091ed270067022d8059ecf1a7ef452d58134ac7e9e1
languageName: node
linkType: hard
"@aws-sdk/client-ecr-public@npm:^3.1076.0":
version: 3.1076.0
resolution: "@aws-sdk/client-ecr-public@npm:3.1076.0"
dependencies:
"@aws-crypto/sha256-browser": "npm:5.2.0"
"@aws-crypto/sha256-js": "npm:5.2.0"
"@aws-sdk/core": "npm:^3.974.24"
"@aws-sdk/credential-provider-node": "npm:^3.972.59"
"@aws-sdk/core": "npm:^3.974.25"
"@aws-sdk/credential-provider-node": "npm:^3.972.60"
"@aws-sdk/types": "npm:^3.973.14"
"@smithy/core": "npm:^3.27.0"
"@smithy/fetch-http-handler": "npm:^5.6.0"
"@smithy/node-http-handler": "npm:^4.9.0"
"@smithy/core": "npm:^3.28.0"
"@smithy/fetch-http-handler": "npm:^5.6.1"
"@smithy/node-http-handler": "npm:^4.9.1"
"@smithy/types": "npm:^4.15.0"
tslib: "npm:^2.6.2"
checksum: 10/0fca29edaa3a70a9162b92cb26000918d7854fa4516afc1c58881044a1f69e83c8f0936d0ee96e352348659293594d234ccc7c50397a67557c69d7681f3e9d90
checksum: 10/916cf62d4db13bfcecc8023b26e9cdcc69e1df9c7daa7cbbe8b205998ccb9443251cae24fe3a06f5f20d2fbffee4e400e0714c2963dc75536a3482fd60544f53
languageName: node
linkType: hard
"@aws-sdk/client-ecr@npm:^3.1076.0":
version: 3.1076.0
resolution: "@aws-sdk/client-ecr@npm:3.1076.0"
"@aws-sdk/client-ecr@npm:^3.1077.0":
version: 3.1077.0
resolution: "@aws-sdk/client-ecr@npm:3.1077.0"
dependencies:
"@aws-crypto/sha256-browser": "npm:5.2.0"
"@aws-crypto/sha256-js": "npm:5.2.0"
"@aws-sdk/core": "npm:^3.974.24"
"@aws-sdk/credential-provider-node": "npm:^3.972.59"
"@aws-sdk/core": "npm:^3.974.25"
"@aws-sdk/credential-provider-node": "npm:^3.972.60"
"@aws-sdk/types": "npm:^3.973.14"
"@smithy/core": "npm:^3.27.0"
"@smithy/fetch-http-handler": "npm:^5.6.0"
"@smithy/node-http-handler": "npm:^4.9.0"
"@smithy/core": "npm:^3.28.0"
"@smithy/fetch-http-handler": "npm:^5.6.1"
"@smithy/node-http-handler": "npm:^4.9.1"
"@smithy/types": "npm:^4.15.0"
tslib: "npm:^2.6.2"
checksum: 10/d04627d16f5423f5edd5bcf5e4396b0cc9d343e9ed33aee44b42f7d061f98423dbe68ccb424830482a3f52d9d710797ca535396cd90662bd59f728f9cdede32b
checksum: 10/5c70110f9a3cac414701b97710ae40147e1e982ab6239ccd6a839f8726f490b548874fc4e4d968ccc548bdc187cd2864b54c2d3d5ed3bfe32285e555c6a413a8
languageName: node
linkType: hard
"@aws-sdk/core@npm:^3.974.24":
version: 3.974.24
resolution: "@aws-sdk/core@npm:3.974.24"
"@aws-sdk/core@npm:^3.974.25":
version: 3.974.25
resolution: "@aws-sdk/core@npm:3.974.25"
dependencies:
"@aws-sdk/types": "npm:^3.973.14"
"@aws-sdk/xml-builder": "npm:^3.972.32"
"@aws/lambda-invoke-store": "npm:^0.2.2"
"@smithy/core": "npm:^3.27.0"
"@smithy/signature-v4": "npm:^5.5.3"
"@smithy/core": "npm:^3.28.0"
"@smithy/signature-v4": "npm:^5.6.0"
"@smithy/types": "npm:^4.15.0"
bowser: "npm:^2.11.0"
tslib: "npm:^2.6.2"
checksum: 10/fdfddb0a88ab997f09cb5515a581d96e5d3d6a524b31cbf5a708a2dfaf543979523a78db7f014fbb01b10ba6b87530c4abc8cd1e1463f0e1a4e5cba88ccce40c
checksum: 10/25ca1498913983d8f7c2f25485d3c825e9b23a48b15eeac3e695b70fd6393f815f644b4ca11bc8145eff2dec5cbee06360ae7bcf76b5fd9dbb214fd80abe81be
languageName: node
linkType: hard
"@aws-sdk/credential-provider-env@npm:^3.972.50":
version: 3.972.50
resolution: "@aws-sdk/credential-provider-env@npm:3.972.50"
"@aws-sdk/credential-provider-env@npm:^3.972.51":
version: 3.972.51
resolution: "@aws-sdk/credential-provider-env@npm:3.972.51"
dependencies:
"@aws-sdk/core": "npm:^3.974.24"
"@aws-sdk/core": "npm:^3.974.25"
"@aws-sdk/types": "npm:^3.973.14"
"@smithy/core": "npm:^3.27.0"
"@smithy/core": "npm:^3.28.0"
"@smithy/types": "npm:^4.15.0"
tslib: "npm:^2.6.2"
checksum: 10/92bad36f62f6d337be0cc33ef7db35c7ad7540d5883f9a67664de1236fd6e7cf5200a8a1dafe7841d2d148f390e47206118b2c643ed0214466c906d94b687851
checksum: 10/3e745169838f44f26828a6c860e32d662d9b52be6d7b63dd2407028b53567fdd24b8a2e92bfb27da73c2f71e07a051a17722bfe0c7dd5a665a0d3f302812a148
languageName: node
linkType: hard
"@aws-sdk/credential-provider-http@npm:^3.972.52":
version: 3.972.52
resolution: "@aws-sdk/credential-provider-http@npm:3.972.52"
"@aws-sdk/credential-provider-http@npm:^3.972.53":
version: 3.972.53
resolution: "@aws-sdk/credential-provider-http@npm:3.972.53"
dependencies:
"@aws-sdk/core": "npm:^3.974.24"
"@aws-sdk/core": "npm:^3.974.25"
"@aws-sdk/types": "npm:^3.973.14"
"@smithy/core": "npm:^3.27.0"
"@smithy/fetch-http-handler": "npm:^5.6.0"
"@smithy/node-http-handler": "npm:^4.9.0"
"@smithy/core": "npm:^3.28.0"
"@smithy/fetch-http-handler": "npm:^5.6.1"
"@smithy/node-http-handler": "npm:^4.9.1"
"@smithy/types": "npm:^4.15.0"
tslib: "npm:^2.6.2"
checksum: 10/ead75fd4f28ba3e598e7548357a9435d9e2367977f7147430c485d7c62a6f36a875c198118ed05c09870beb912533148ac20eddab2ac913085bc0ca7ddd760a3
checksum: 10/94247a81a8d0235c3eb14a2e8ac41b70314efa585ca62d0c16c0293f96a2d2f1d0b0ed947d6e15e46d0fdc565725d6d2a37d5e847523995d11f21fe254eb0094
languageName: node
linkType: hard
"@aws-sdk/credential-provider-ini@npm:^3.972.57":
"@aws-sdk/credential-provider-ini@npm:^3.972.58":
version: 3.972.58
resolution: "@aws-sdk/credential-provider-ini@npm:3.972.58"
dependencies:
"@aws-sdk/core": "npm:^3.974.25"
"@aws-sdk/credential-provider-env": "npm:^3.972.51"
"@aws-sdk/credential-provider-http": "npm:^3.972.53"
"@aws-sdk/credential-provider-login": "npm:^3.972.57"
"@aws-sdk/credential-provider-process": "npm:^3.972.51"
"@aws-sdk/credential-provider-sso": "npm:^3.972.57"
"@aws-sdk/credential-provider-web-identity": "npm:^3.972.57"
"@aws-sdk/nested-clients": "npm:^3.997.25"
"@aws-sdk/types": "npm:^3.973.14"
"@smithy/core": "npm:^3.28.0"
"@smithy/credential-provider-imds": "npm:^4.4.4"
"@smithy/types": "npm:^4.15.0"
tslib: "npm:^2.6.2"
checksum: 10/d9d0024c120fbe0de0a6436fe7d5fd8056549cfd630f385b389d131417cf06ba6848c56a45b0afad5fdeec6b850d2c1dc91fc165d47a671d904e9e1facd7001b
languageName: node
linkType: hard
"@aws-sdk/credential-provider-login@npm:^3.972.57":
version: 3.972.57
resolution: "@aws-sdk/credential-provider-ini@npm:3.972.57"
resolution: "@aws-sdk/credential-provider-login@npm:3.972.57"
dependencies:
"@aws-sdk/core": "npm:^3.974.24"
"@aws-sdk/credential-provider-env": "npm:^3.972.50"
"@aws-sdk/credential-provider-http": "npm:^3.972.52"
"@aws-sdk/credential-provider-login": "npm:^3.972.56"
"@aws-sdk/credential-provider-process": "npm:^3.972.50"
"@aws-sdk/credential-provider-sso": "npm:^3.972.56"
"@aws-sdk/credential-provider-web-identity": "npm:^3.972.56"
"@aws-sdk/nested-clients": "npm:^3.997.24"
"@aws-sdk/core": "npm:^3.974.25"
"@aws-sdk/nested-clients": "npm:^3.997.25"
"@aws-sdk/types": "npm:^3.973.14"
"@smithy/core": "npm:^3.27.0"
"@smithy/credential-provider-imds": "npm:^4.4.3"
"@smithy/core": "npm:^3.28.0"
"@smithy/types": "npm:^4.15.0"
tslib: "npm:^2.6.2"
checksum: 10/df6701f74a2be48570faf33804f9999d1f7c6bd5de7bb766a55ff0831e83b95017e72e2964e655595244e5eef60ea325a8597e87b016bc22bbd14620af4c963e
checksum: 10/22b24eedad0620c15ed78f6e02a6add822357c778acd452adf76a492a41a6750654aa01bd6a7877ee4cf96968988b305dbaf9a15278989f7960dddb53a11ddd0
languageName: node
linkType: hard
"@aws-sdk/credential-provider-login@npm:^3.972.56":
version: 3.972.56
resolution: "@aws-sdk/credential-provider-login@npm:3.972.56"
"@aws-sdk/credential-provider-node@npm:^3.972.60":
version: 3.972.60
resolution: "@aws-sdk/credential-provider-node@npm:3.972.60"
dependencies:
"@aws-sdk/core": "npm:^3.974.24"
"@aws-sdk/nested-clients": "npm:^3.997.24"
"@aws-sdk/credential-provider-env": "npm:^3.972.51"
"@aws-sdk/credential-provider-http": "npm:^3.972.53"
"@aws-sdk/credential-provider-ini": "npm:^3.972.58"
"@aws-sdk/credential-provider-process": "npm:^3.972.51"
"@aws-sdk/credential-provider-sso": "npm:^3.972.57"
"@aws-sdk/credential-provider-web-identity": "npm:^3.972.57"
"@aws-sdk/types": "npm:^3.973.14"
"@smithy/core": "npm:^3.27.0"
"@smithy/core": "npm:^3.28.0"
"@smithy/credential-provider-imds": "npm:^4.4.4"
"@smithy/types": "npm:^4.15.0"
tslib: "npm:^2.6.2"
checksum: 10/5394e50c07da78de8e1643f898c308537f1454ccf0e02b00cd7af9d2c03961058cf6f4cf585b79eb23ff586ed82bbd1e959776a5aed0e780635ba38f58ff1a12
checksum: 10/5249e3bf1ded99f207ef8b4c80c4c19ab934115304790916def3f29877061c850e3089f71fd65cca3688327763175837a86f5afa100ef926c9749782ca0b7a44
languageName: node
linkType: hard
"@aws-sdk/credential-provider-node@npm:^3.972.59":
version: 3.972.59
resolution: "@aws-sdk/credential-provider-node@npm:3.972.59"
"@aws-sdk/credential-provider-process@npm:^3.972.51":
version: 3.972.51
resolution: "@aws-sdk/credential-provider-process@npm:3.972.51"
dependencies:
"@aws-sdk/credential-provider-env": "npm:^3.972.50"
"@aws-sdk/credential-provider-http": "npm:^3.972.52"
"@aws-sdk/credential-provider-ini": "npm:^3.972.57"
"@aws-sdk/credential-provider-process": "npm:^3.972.50"
"@aws-sdk/credential-provider-sso": "npm:^3.972.56"
"@aws-sdk/credential-provider-web-identity": "npm:^3.972.56"
"@aws-sdk/core": "npm:^3.974.25"
"@aws-sdk/types": "npm:^3.973.14"
"@smithy/core": "npm:^3.27.0"
"@smithy/credential-provider-imds": "npm:^4.4.3"
"@smithy/core": "npm:^3.28.0"
"@smithy/types": "npm:^4.15.0"
tslib: "npm:^2.6.2"
checksum: 10/d35e5e27f581d864c5cbb9a30345eb9ac5f26b3604e7529448d3d5f149a066624ae99cc89ed5b90591a91f575b747729d09840a640c422d72b8ba6a408cef57e
checksum: 10/bdbd1dbd6aadbc8737b03ff776fc3b9c8d7c773214f35113ac7cb796f56bbb9ae141cf282b15a5a17b77c5f06133a28fdbd363053772f5aad9021bd08d777e8d
languageName: node
linkType: hard
"@aws-sdk/credential-provider-process@npm:^3.972.50":
version: 3.972.50
resolution: "@aws-sdk/credential-provider-process@npm:3.972.50"
"@aws-sdk/credential-provider-sso@npm:^3.972.57":
version: 3.972.57
resolution: "@aws-sdk/credential-provider-sso@npm:3.972.57"
dependencies:
"@aws-sdk/core": "npm:^3.974.24"
"@aws-sdk/core": "npm:^3.974.25"
"@aws-sdk/nested-clients": "npm:^3.997.25"
"@aws-sdk/token-providers": "npm:3.1077.0"
"@aws-sdk/types": "npm:^3.973.14"
"@smithy/core": "npm:^3.27.0"
"@smithy/core": "npm:^3.28.0"
"@smithy/types": "npm:^4.15.0"
tslib: "npm:^2.6.2"
checksum: 10/272e20945a7f18e7e8dbf47771421e347430dde2a623358188d347df02c4d56b50a745d1166b7a251223ccfbd321358d762ffeb641cb5dde3f88765e9c574638
checksum: 10/53fa4e00bcedd8673ac271503dfe452d3c4076ac780bb381012b0f71732511dcb63e83211b544db1f0bedc667925629af5dc5b3b5fa0e8c11372a4211cbf135d
languageName: node
linkType: hard
"@aws-sdk/credential-provider-sso@npm:^3.972.56":
version: 3.972.56
resolution: "@aws-sdk/credential-provider-sso@npm:3.972.56"
"@aws-sdk/credential-provider-web-identity@npm:^3.972.57":
version: 3.972.57
resolution: "@aws-sdk/credential-provider-web-identity@npm:3.972.57"
dependencies:
"@aws-sdk/core": "npm:^3.974.24"
"@aws-sdk/nested-clients": "npm:^3.997.24"
"@aws-sdk/token-providers": "npm:3.1076.0"
"@aws-sdk/core": "npm:^3.974.25"
"@aws-sdk/nested-clients": "npm:^3.997.25"
"@aws-sdk/types": "npm:^3.973.14"
"@smithy/core": "npm:^3.27.0"
"@smithy/core": "npm:^3.28.0"
"@smithy/types": "npm:^4.15.0"
tslib: "npm:^2.6.2"
checksum: 10/e1eac42cccd6842b089fbd59616ff3cdc3e0957eef1b408cb14b56312f5649eb9acbad260705f26608096e7014ffc9f3cb216583af9ba91f8bb42ab8be7dd9e7
checksum: 10/e3db324879b623695584fe4e591a360d930c82dc276fea4d344e537df29c1c821c52886562af51008573d0357e132fe6676a99ac49b545368f8e82ebd94a58f4
languageName: node
linkType: hard
"@aws-sdk/credential-provider-web-identity@npm:^3.972.56":
version: 3.972.56
resolution: "@aws-sdk/credential-provider-web-identity@npm:3.972.56"
"@aws-sdk/nested-clients@npm:^3.997.25":
version: 3.997.25
resolution: "@aws-sdk/nested-clients@npm:3.997.25"
dependencies:
"@aws-sdk/core": "npm:^3.974.24"
"@aws-sdk/nested-clients": "npm:^3.997.24"
"@aws-sdk/core": "npm:^3.974.25"
"@aws-sdk/signature-v4-multi-region": "npm:^3.996.37"
"@aws-sdk/types": "npm:^3.973.14"
"@smithy/core": "npm:^3.27.0"
"@smithy/core": "npm:^3.28.0"
"@smithy/fetch-http-handler": "npm:^5.6.1"
"@smithy/node-http-handler": "npm:^4.9.1"
"@smithy/types": "npm:^4.15.0"
tslib: "npm:^2.6.2"
checksum: 10/540da11269e18b43d840429d4151a10a4f1c0a14b00bdd69db502133153c35ea245b2f69c0322e1bb7b3eb119dce9c74b96df954d1024d49f7294273700b5b8b
checksum: 10/6e9507477672572d90e7802526f133b9956adb6306f401b51c1f76b55b60e93297943d9927e531cecba63303a157757bfadbf14524e164688a515e351f57d9de
languageName: node
linkType: hard
"@aws-sdk/nested-clients@npm:^3.997.24":
version: 3.997.24
resolution: "@aws-sdk/nested-clients@npm:3.997.24"
"@aws-sdk/signature-v4-multi-region@npm:^3.996.37":
version: 3.996.37
resolution: "@aws-sdk/signature-v4-multi-region@npm:3.996.37"
dependencies:
"@aws-crypto/sha256-browser": "npm:5.2.0"
"@aws-crypto/sha256-js": "npm:5.2.0"
"@aws-sdk/core": "npm:^3.974.24"
"@aws-sdk/signature-v4-multi-region": "npm:^3.996.36"
"@aws-sdk/types": "npm:^3.973.14"
"@smithy/core": "npm:^3.27.0"
"@smithy/fetch-http-handler": "npm:^5.6.0"
"@smithy/node-http-handler": "npm:^4.9.0"
"@smithy/signature-v4": "npm:^5.6.0"
"@smithy/types": "npm:^4.15.0"
tslib: "npm:^2.6.2"
checksum: 10/43efc86fba29bf23756c4bdf4d58658b625eeb712950b2a6ee26a5357dee38517401e85cb4348accab6c9910956581562a35b90cee47c2435edaf7ca105c3b00
checksum: 10/16608054281ae2b29c409ef772572f27d51c05269efc5965bfb2a72405675fb2449087d635f62e9e6438a73cf2edad15c1161287ddb2672ad8f08e8bc598df0a
languageName: node
linkType: hard
"@aws-sdk/signature-v4-multi-region@npm:^3.996.36":
version: 3.996.36
resolution: "@aws-sdk/signature-v4-multi-region@npm:3.996.36"
"@aws-sdk/token-providers@npm:3.1077.0":
version: 3.1077.0
resolution: "@aws-sdk/token-providers@npm:3.1077.0"
dependencies:
"@aws-sdk/core": "npm:^3.974.25"
"@aws-sdk/nested-clients": "npm:^3.997.25"
"@aws-sdk/types": "npm:^3.973.14"
"@smithy/signature-v4": "npm:^5.5.3"
"@smithy/core": "npm:^3.28.0"
"@smithy/types": "npm:^4.15.0"
tslib: "npm:^2.6.2"
checksum: 10/480ec04245c1707ee806be2bfad2897a2908d57dc3f771b8bc71ea6c8457dbcbaffdfa5e1f64f59b911a9946e4bc0106103c547a622f7a82ce967fd1b59d05ba
languageName: node
linkType: hard
"@aws-sdk/token-providers@npm:3.1076.0":
version: 3.1076.0
resolution: "@aws-sdk/token-providers@npm:3.1076.0"
dependencies:
"@aws-sdk/core": "npm:^3.974.24"
"@aws-sdk/nested-clients": "npm:^3.997.24"
"@aws-sdk/types": "npm:^3.973.14"
"@smithy/core": "npm:^3.27.0"
"@smithy/types": "npm:^4.15.0"
tslib: "npm:^2.6.2"
checksum: 10/960064c8f898fd13517b1a7659d2e41000c9007a87c38b8371a474256b9ff359550c78bb13e25311a343130834dbdd33f687b68ffdcdab7ed542e42e53d6e99a
languageName: node
linkType: hard
"@aws-sdk/types@npm:^3.222.0":
version: 3.523.0
resolution: "@aws-sdk/types@npm:3.523.0"
dependencies:
"@smithy/types": "npm:^2.10.1"
tslib: "npm:^2.5.0"
checksum: 10/2a33cc1a68d259de199526efde22da2551bd4b6f0f1265d4d378a83b87a22eb88fb3c5b26aa6d649392c04e22aadfd88e56e86d37c304260a6ccb7275d76ed27
checksum: 10/7b026fd9a234c52424dba53c86208143dc87b009efee933cee5522ac815e77ac567cc25fba013df34b3616268697f36737ad47c4a9e274da57519d4c5cf024f4
languageName: node
linkType: hard
@@ -467,15 +394,6 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/util-locate-window@npm:^3.0.0":
version: 3.37.0
resolution: "@aws-sdk/util-locate-window@npm:3.37.0"
dependencies:
tslib: "npm:^2.3.0"
checksum: 10/c8c8905bda0dd7381f64bffc4e40448ce859b3b094f54ea4d0ed23b7dbded6e12e5e2c7b8a459c0eca6dfdbe18830f2dfd1b11c3d9e95a3b715f38d6b37b45c8
languageName: node
linkType: hard
"@aws-sdk/xml-builder@npm:^3.972.32":
version: 3.972.32
resolution: "@aws-sdk/xml-builder@npm:3.972.32"
@@ -759,9 +677,9 @@ __metadata:
languageName: node
linkType: hard
"@docker/actions-toolkit@npm:^0.92.0":
version: 0.92.0
resolution: "@docker/actions-toolkit@npm:0.92.0"
"@docker/actions-toolkit@npm:^0.93.0":
version: 0.93.0
resolution: "@docker/actions-toolkit@npm:0.93.0"
dependencies:
"@actions/artifact": "npm:^6.2.1"
"@actions/cache": "npm:^6.1.0"
@@ -775,16 +693,16 @@ __metadata:
"@sigstore/tuf": "npm:^5.0.0"
"@sigstore/verify": "npm:^4.1.0"
async-retry: "npm:^1.3.3"
csv-parse: "npm:^7.0.0"
csv-parse: "npm:^7.0.1"
gunzip-maybe: "npm:^1.4.2"
handlebars: "npm:^4.7.9"
he: "npm:^1.2.0"
js-yaml: "npm:^5.2.0"
js-yaml: "npm:^5.2.1"
jwt-decode: "npm:^4.0.0"
semver: "npm:^7.8.5"
tar-stream: "npm:^3.2.0"
tmp: "npm:^0.2.7"
checksum: 10/599cea84b897069c53744a2f05371c6d9ad60da18448b4431273529b92fd2d77ddc718ee205cf0bf1da53083d412da90b1067f1e64a5fdac73fe71d486726064
checksum: 10/31643db575faf865666247661007d6e5fc8bc2b737001a522879829fcbeeab7b11b886d2cc26d074a26814361ec8427484d7b94ad9155d52c41398a7dc27000e
languageName: node
linkType: hard
@@ -2038,17 +1956,6 @@ __metadata:
languageName: node
linkType: hard
"@smithy/core@npm:^3.27.0":
version: 3.27.0
resolution: "@smithy/core@npm:3.27.0"
dependencies:
"@aws-crypto/crc32": "npm:5.2.0"
"@smithy/types": "npm:^4.15.0"
tslib: "npm:^2.6.2"
checksum: 10/d376e1e450cc51b8249ebf8049bdc047f535f94e8f399e69f53e947051d6f84386702b69dcf66cc6c4633fcd136ba9bda40721478f3d4d1298d4ead49529a98b
languageName: node
linkType: hard
"@smithy/core@npm:^3.28.0":
version: 3.28.0
resolution: "@smithy/core@npm:3.28.0"
@@ -2059,7 +1966,7 @@ __metadata:
languageName: node
linkType: hard
"@smithy/credential-provider-imds@npm:^4.4.3":
"@smithy/credential-provider-imds@npm:^4.4.4":
version: 4.4.4
resolution: "@smithy/credential-provider-imds@npm:4.4.4"
dependencies:
@@ -2070,7 +1977,7 @@ __metadata:
languageName: node
linkType: hard
"@smithy/fetch-http-handler@npm:^5.6.0":
"@smithy/fetch-http-handler@npm:^5.6.1":
version: 5.6.1
resolution: "@smithy/fetch-http-handler@npm:5.6.1"
dependencies:
@@ -2081,16 +1988,7 @@ __metadata:
languageName: node
linkType: hard
"@smithy/is-array-buffer@npm:^2.2.0":
version: 2.2.0
resolution: "@smithy/is-array-buffer@npm:2.2.0"
dependencies:
tslib: "npm:^2.6.2"
checksum: 10/d366743ecc7a9fc3bad21dbb3950d213c12bdd4aeb62b1265bf6cbe38309df547664ef3e51ab732e704485194f15e89d361943b0bfbe3fe1a4b3178b942913cc
languageName: node
linkType: hard
"@smithy/node-http-handler@npm:^4.9.0":
"@smithy/node-http-handler@npm:^4.9.1":
version: 4.9.1
resolution: "@smithy/node-http-handler@npm:4.9.1"
dependencies:
@@ -2101,7 +1999,7 @@ __metadata:
languageName: node
linkType: hard
"@smithy/signature-v4@npm:^5.5.3":
"@smithy/signature-v4@npm:^5.6.0":
version: 5.6.0
resolution: "@smithy/signature-v4@npm:5.6.0"
dependencies:
@@ -2112,15 +2010,6 @@ __metadata:
languageName: node
linkType: hard
"@smithy/types@npm:^2.10.1":
version: 2.11.0
resolution: "@smithy/types@npm:2.11.0"
dependencies:
tslib: "npm:^2.5.0"
checksum: 10/658cdb3e9710870729ab10921eb6eadd1cc7a1801ef3dc4562322a5674b1d1c1d9f8c283cd209e8389606b5cfc692b15484858406c35bbaede8fea15b2ef3de8
languageName: node
linkType: hard
"@smithy/types@npm:^4.15.0":
version: 4.15.0
resolution: "@smithy/types@npm:4.15.0"
@@ -2130,26 +2019,6 @@ __metadata:
languageName: node
linkType: hard
"@smithy/util-buffer-from@npm:^2.2.0":
version: 2.2.0
resolution: "@smithy/util-buffer-from@npm:2.2.0"
dependencies:
"@smithy/is-array-buffer": "npm:^2.2.0"
tslib: "npm:^2.6.2"
checksum: 10/53253e4e351df3c4b7907dca48a0a6ceae783e98a8e73526820b122b3047a53fd127c19f4d8301f68d852011d821da519da783de57e0b22eed57c4df5b90d089
languageName: node
linkType: hard
"@smithy/util-utf8@npm:^2.0.0":
version: 2.3.0
resolution: "@smithy/util-utf8@npm:2.3.0"
dependencies:
"@smithy/util-buffer-from": "npm:^2.2.0"
tslib: "npm:^2.6.2"
checksum: 10/c766ead8dac6bc6169f4cac1cc47ef7bd86928d06255148f9528228002f669c8cc49f78dc2b9ba5d7e214d40315024a9e32c5c9130b33e20f0fe4532acd0dff5
languageName: node
linkType: hard
"@standard-schema/spec@npm:^1.0.0":
version: 1.1.0
resolution: "@standard-schema/spec@npm:1.1.0"
@@ -2893,12 +2762,12 @@ __metadata:
linkType: hard
"brace-expansion@npm:^1.1.7":
version: 1.1.13
resolution: "brace-expansion@npm:1.1.13"
version: 1.1.16
resolution: "brace-expansion@npm:1.1.16"
dependencies:
balanced-match: "npm:^1.0.0"
concat-map: "npm:0.0.1"
checksum: 10/b5f4329fdbe9d2e25fa250c8f866ebd054ba946179426e99b86dcccddabdb1d481f0e40ee5430032e62a7d0a6c2837605ace6783d015aa1d65d85ca72154d936
checksum: 10/94498bead66c51536df5b7bf1b0a0e581a5b7f86888be10481d06920c4bd9d976e003b13a3d19fddc733f21a09d162ff72f90e18b2c9d062b15121e973d0e13b
languageName: node
linkType: hard
@@ -3234,10 +3103,10 @@ __metadata:
languageName: node
linkType: hard
"csv-parse@npm:^7.0.0":
version: 7.0.0
resolution: "csv-parse@npm:7.0.0"
checksum: 10/53c96e6b4ff80047713bb4d2967d06495890d4b628284a80271860be089fdb5a74cd97c76fd535a00ad26b11cc6e4fc5a243658e5377c0a6334ddd104620d169
"csv-parse@npm:^7.0.1":
version: 7.0.1
resolution: "csv-parse@npm:7.0.1"
checksum: 10/5c914f01181dbb381068b98e17b49361d853faa95db3e8e82bc96b6a0de5313ecc8325a77db35ff66644d7747099965ba3167ec21bd9ce4500edf21b5bdd49bf
languageName: node
linkType: hard
@@ -3286,9 +3155,10 @@ __metadata:
resolution: "docker-login@workspace:."
dependencies:
"@actions/core": "npm:^3.0.1"
"@aws-sdk/client-ecr": "npm:^3.1076.0"
"@aws-sdk/client-ecr-public": "npm:^3.1076.0"
"@docker/actions-toolkit": "npm:^0.92.0"
"@actions/http-client": "npm:^4.0.1"
"@aws-sdk/client-ecr": "npm:^3.1077.0"
"@aws-sdk/client-ecr-public": "npm:^3.1077.0"
"@docker/actions-toolkit": "npm:^0.93.0"
"@eslint/js": "npm:^9.39.3"
"@types/js-yaml": "npm:^4.0.9"
"@types/node": "npm:^24.11.0"
@@ -3304,9 +3174,10 @@ __metadata:
globals: "npm:^17.3.0"
http-proxy-agent: "npm:^9.1.0"
https-proxy-agent: "npm:^9.1.0"
js-yaml: "npm:^5.2.0"
js-yaml: "npm:^5.2.1"
prettier: "npm:^3.8.1"
typescript: "npm:^5.9.3"
uuid: "npm:^14.0.1"
vitest: "npm:^4.0.18"
languageName: unknown
linkType: soft
@@ -4475,14 +4346,14 @@ __metadata:
languageName: node
linkType: hard
"js-yaml@npm:^5.2.0":
version: 5.2.0
resolution: "js-yaml@npm:5.2.0"
"js-yaml@npm:^5.2.1":
version: 5.2.1
resolution: "js-yaml@npm:5.2.1"
dependencies:
argparse: "npm:^2.0.1"
bin:
js-yaml: bin/js-yaml.mjs
checksum: 10/8a5e55c5d0fcafae4ac02114a99dc070048b8e5a82a056089ce1f69f8a00fd8eb05b622e76ad50aac1f9d409010636c9616c6b2ed4e58dae138379a60d301220
checksum: 10/e1eca2d21c15572585bb236d9fde31d6789eb50b9c63e8753fa7e0777bc480f7521cad517bd7a0c66f27dfc27ddcd7100beeefa51c1a50e10e98f2e009633c3d
languageName: node
linkType: hard
@@ -6247,7 +6118,7 @@ __metadata:
languageName: node
linkType: hard
"tslib@npm:^2.2.0, tslib@npm:^2.3.0, tslib@npm:^2.5.0, tslib@npm:^2.6.2":
"tslib@npm:^2.2.0, tslib@npm:^2.3.0, tslib@npm:^2.6.2":
version: 2.6.2
resolution: "tslib@npm:2.6.2"
checksum: 10/bd26c22d36736513980091a1e356378e8b662ded04204453d353a7f34a4c21ed0afc59b5f90719d4ba756e581a162ecbf93118dc9c6be5acf70aa309188166ca
@@ -6431,6 +6302,15 @@ __metadata:
languageName: node
linkType: hard
"uuid@npm:^14.0.1":
version: 14.0.1
resolution: "uuid@npm:14.0.1"
bin:
uuid: dist-node/bin/uuid
checksum: 10/0f978fd5b0269d7acb615342aeb131f0b8d85eeb8ec34f2915d906baa3befcc14a079a430d0f8116aec6fd20c850cbfab65d1b3d1643fa81ed373c0cf9574f18
languageName: node
linkType: hard
"validate-npm-package-name@npm:^7.0.0":
version: 7.0.2
resolution: "validate-npm-package-name@npm:7.0.2"