Compare commits

..

195 Commits

Author SHA1 Message Date
CrazyMax
c299e40c65
Merge pull request #569 from docker/dependabot/npm_and_yarn/docker/actions-toolkit-0.68.0
chore(deps): Bump @docker/actions-toolkit from 0.67.0 to 0.68.0
2025-11-27 13:36:24 +01:00
CrazyMax
f015d7914a
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-27 12:42:57 +01:00
dependabot[bot]
121bcc2ca8
chore(deps): Bump @docker/actions-toolkit from 0.67.0 to 0.68.0
Bumps [@docker/actions-toolkit](https://github.com/docker/actions-toolkit) from 0.67.0 to 0.68.0.
- [Release notes](https://github.com/docker/actions-toolkit/releases)
- [Commits](https://github.com/docker/actions-toolkit/compare/v0.67.0...v0.68.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-27 11:37:44 +00:00
CrazyMax
f7b6bf41b9
Merge pull request #564 from docker/dependabot/npm_and_yarn/js-yaml-3.14.2
chore(deps): Bump js-yaml from 3.14.1 to 3.14.2
2025-11-27 12:35:12 +01:00
CrazyMax
0b95c6b860
Merge pull request #565 from docker/dependabot/github_actions/actions/checkout-6
chore(deps): Bump actions/checkout from 5 to 6
2025-11-27 12:34:57 +01:00
CrazyMax
17f70d7525
Merge pull request #568 from motoki317/docs/fix-to-24h-schedule-pattern
docs(README): Fix date format from 12h to 24h in schedule pattern
2025-11-27 12:34:33 +01:00
motoki317
afd7e6d7bb
docs(README): Fix date format from 12h to 24h in schedule pattern
hh represents 12h format from 01 to 12 which is probably not suitable
for date tags.
The pattern example in the table below uses the 24h format HH, so this
makes the document consistent.

Signed-off-by: motoki317 <motoki317@gmail.com>
2025-11-27 12:57:49 +09:00
dependabot[bot]
602aff8e11
chore(deps): Bump actions/checkout from 5 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [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/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-20 19:01:45 +00:00
dependabot[bot]
aecb1a49a5
chore(deps): Bump js-yaml from 3.14.1 to 3.14.2
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.1 to 3.14.2.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.14.1...3.14.2)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 3.14.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-19 05:05:12 +00:00
CrazyMax
8d8c7c12f7
Merge pull request #559 from docker/dependabot/npm_and_yarn/docker/actions-toolkit-0.67.0
chore(deps): Bump @docker/actions-toolkit from 0.66.0 to 0.67.0
2025-11-05 16:15:03 +01:00
CrazyMax
15bd03a177
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-05 15:55:58 +01:00
dependabot[bot]
fdba5868fb
chore(deps): Bump @docker/actions-toolkit from 0.66.0 to 0.67.0
Bumps [@docker/actions-toolkit](https://github.com/docker/actions-toolkit) from 0.66.0 to 0.67.0.
- [Release notes](https://github.com/docker/actions-toolkit/releases)
- [Commits](https://github.com/docker/actions-toolkit/compare/v0.66.0...v0.67.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 13:53:44 +00:00
CrazyMax
318604b99e
Merge pull request #539 from docker/dependabot/npm_and_yarn/babel/runtime-corejs3-7.28.2
chore(deps): Bump @babel/runtime-corejs3 from 7.14.7 to 7.28.2
2025-11-04 16:31:36 +01:00
CrazyMax
49c0a55d55
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-04 16:28:52 +01:00
CrazyMax
486229e3f4
Merge pull request #558 from crazy-max/fix-dist
chore: fix dist
2025-11-04 16:25:53 +01:00
CrazyMax
f02aeab1ee
chore: fix dist
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-04 16:22:29 +01:00
dependabot[bot]
beafb97305
chore(deps): Bump @babel/runtime-corejs3 from 7.14.7 to 7.28.2
Bumps [@babel/runtime-corejs3](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime-corejs3) from 7.14.7 to 7.28.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.28.2/packages/babel-runtime-corejs3)

---
updated-dependencies:
- dependency-name: "@babel/runtime-corejs3"
  dependency-version: 7.28.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-04 15:16:45 +00:00
CrazyMax
3ff819c6c5
Merge pull request #557 from crazy-max/yarn-4.9.2
update yarn to 4.9.2
2025-11-04 16:14:33 +01:00
CrazyMax
05838e9769
update yarn to 4.9.2
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-04 16:05:10 +01:00
CrazyMax
43fa4ac0d3
Merge pull request #556 from crazy-max/dev-deps
update dev dependencies
2025-11-04 15:27:11 +01:00
CrazyMax
b3120f2f18
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-04 15:22:53 +01:00
CrazyMax
1f469d21ee
update dev dependencies
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-04 15:21:47 +01:00
CrazyMax
b0a2bcfe7b
Merge pull request #555 from docker/dependabot/npm_and_yarn/docker/actions-toolkit-0.66.0
chore(deps): Bump @docker/actions-toolkit from 0.62.1 to 0.66.0
2025-11-04 15:17:27 +01:00
CrazyMax
14973dfd4b
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-04 15:15:22 +01:00
dependabot[bot]
dae123c2bf
chore(deps): Bump @docker/actions-toolkit from 0.62.1 to 0.66.0
Bumps [@docker/actions-toolkit](https://github.com/docker/actions-toolkit) from 0.62.1 to 0.66.0.
- [Release notes](https://github.com/docker/actions-toolkit/releases)
- [Commits](https://github.com/docker/actions-toolkit/compare/v0.62.1...v0.66.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-04 14:10:29 +00:00
CrazyMax
fdb90a51ae
Merge pull request #554 from docker/dependabot/npm_and_yarn/multi-c9330d5d78
chore(deps): Bump semver and @types/semver
2025-11-04 15:08:10 +01:00
CrazyMax
e5afe339d8
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-04 15:05:58 +01:00
dependabot[bot]
17e37c2a42
chore(deps): Bump semver and @types/semver
Bumps [semver](https://github.com/npm/node-semver) and [@types/semver](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/semver). These dependencies needed to be updated together.

Updates `semver` from 7.7.2 to 7.7.3
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.7.2...v7.7.3)

Updates `@types/semver` from 7.7.0 to 7.7.1
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/semver)

---
updated-dependencies:
- dependency-name: semver
  dependency-version: 7.7.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: "@types/semver"
  dependency-version: 7.7.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-04 14:04:06 +00:00
CrazyMax
aa0be5b84c
Merge pull request #532 from docker/dependabot/npm_and_yarn/csv-parse-6.1.0
chore(deps): Bump csv-parse from 5.6.0 to 6.1.0
2025-11-04 15:01:36 +01:00
CrazyMax
136a4a23fe
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-04 14:58:59 +01:00
CrazyMax
5f9eb12581
tag: fix value type
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-04 14:58:00 +01:00
CrazyMax
be25a4ce07
@types/csv-parse not needed anymore
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-04 14:57:39 +01:00
dependabot[bot]
eced061233
chore(deps): Bump csv-parse from 5.6.0 to 6.1.0
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 5.6.0 to 6.1.0.
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@6.1.0/packages/csv-parse)

---
updated-dependencies:
- dependency-name: csv-parse
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-04 13:53:34 +00:00
CrazyMax
e7f20f98b1
Merge pull request #541 from docker/dependabot/npm_and_yarn/tmp-0.2.4
chore(deps): Bump tmp from 0.2.3 to 0.2.5
2025-11-04 14:51:27 +01:00
CrazyMax
95bdd37b1f
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-04 14:49:05 +01:00
dependabot[bot]
3fb4efdf45
chore(deps): Bump tmp from 0.2.3 to 0.2.4
Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.3 to 0.2.4.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/raszi/node-tmp/compare/v0.2.3...v0.2.4)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 0.2.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-04 13:47:59 +00:00
CrazyMax
f31cd74edd
Merge pull request #540 from docker/dependabot/npm_and_yarn/brace-expansion-1.1.12
chore(deps): Bump brace-expansion from 1.1.11 to 1.1.12
2025-11-04 14:45:31 +01:00
CrazyMax
840a42f4cf
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-04 14:41:33 +01:00
dependabot[bot]
ada8aa8ca0
chore(deps): Bump brace-expansion from 1.1.11 to 1.1.12
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.11 to 1.1.12.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-04 13:40:16 +00:00
CrazyMax
3fa6bb33cb
Merge pull request #550 from osman-butt/docs/update-checkout-v5
docs: update checkout action to v5 in README examples
2025-11-04 14:33:31 +01:00
osman-butt
8aa9733355
docs: update checkout action to v5 in README
Signed-off-by: osman-butt <butt.osman@gmail.com>
2025-11-04 14:25:27 +01:00
CrazyMax
d87caff40c
Merge pull request #549 from docker/dependabot/github_actions/actions/github-script-8
chore(deps): Bump actions/github-script from 7 to 8
2025-11-04 14:23:12 +01:00
CrazyMax
83e4951424
Merge pull request #553 from crazy-max/tag-names
tag-names output to return tag names without image base name
2025-11-04 14:22:33 +01:00
CrazyMax
9efc8723fe
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-04 14:14:12 +01:00
CrazyMax
ec2c9a30cf
tag-names output to return tag names without image base name
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-04 14:14:11 +01:00
dependabot[bot]
e427fa1e40
chore(deps): Bump actions/github-script from 7 to 8
Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 8.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v7...v8)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 19:01:57 +00:00
CrazyMax
032a4b3bda
Merge pull request #544 from docker/dependabot/github_actions/actions/checkout-5
chore(deps): Bump actions/checkout from 4 to 5
2025-08-20 14:27:56 +02:00
dependabot[bot]
06e11bf926
chore(deps): Bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [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/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 02:15:24 +00:00
CrazyMax
c1e51972af
Merge pull request #537 from crazy-max/pep440-match
allow to match part of the git tag or value for pep440 type
2025-08-01 10:56:28 +02:00
CrazyMax
89dd65a569
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-08-01 10:53:35 +02:00
CrazyMax
699ee45cf1
allow to match part of the git tag or value for pep440 type
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-08-01 10:52:31 +02:00
CrazyMax
e0542a6360
Merge pull request #536 from crazy-max/semver-match
allow to match part of the git tag or value for semver type
2025-08-01 10:41:39 +02:00
CrazyMax
b7facdfcef
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-07-31 18:15:00 +02:00
CrazyMax
81c60dfb8b
allow to match part of the git tag or value for semver type
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-07-31 18:13:25 +02:00
CrazyMax
de1119515d
Merge pull request #535 from crazy-max/not_def_branch
is_not_default_branch global expression
2025-07-31 15:22:34 +02:00
CrazyMax
2f9c64b1b1
Merge pull request #533 from docker/dependabot/npm_and_yarn/form-data-2.5.5
chore(deps): Bump form-data from 2.5.1 to 2.5.5
2025-07-31 15:21:20 +02:00
CrazyMax
510f746975
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-07-31 15:19:52 +02:00
CrazyMax
2bc3f4e0f1
is_not_default_branch global expression
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-07-31 15:18:21 +02:00
dependabot[bot]
f0cfcb57f6
chore(deps): Bump form-data from 2.5.1 to 2.5.5
Bumps [form-data](https://github.com/form-data/form-data) from 2.5.1 to 2.5.5.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/v2.5.5/CHANGELOG.md)
- [Commits](https://github.com/form-data/form-data/compare/v2.5.1...v2.5.5)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 2.5.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 23:17:35 +00:00
CrazyMax
be19121bfd
Merge pull request #528 from crazy-max/update-readme
readme: show additional case for semver
2025-06-25 17:03:18 +02:00
CrazyMax
c1eb0314a3
readme: show additional case for semver
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-06-25 16:56:20 +02:00
CrazyMax
b798ed8388
Merge pull request #526 from docker/dependabot/npm_and_yarn/docker/actions-toolkit-0.62.1
chore(deps): Bump @docker/actions-toolkit from 0.56.0 to 0.62.1
2025-06-13 16:17:57 +02:00
CrazyMax
07d42e0b4f
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-06-13 16:11:25 +02:00
dependabot[bot]
495d5ce528
chore(deps): Bump @docker/actions-toolkit from 0.56.0 to 0.62.1
Bumps [@docker/actions-toolkit](https://github.com/docker/actions-toolkit) from 0.56.0 to 0.62.1.
- [Release notes](https://github.com/docker/actions-toolkit/releases)
- [Commits](https://github.com/docker/actions-toolkit/compare/v0.56.0...v0.62.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-13 14:09:35 +00:00
CrazyMax
54b10fa1b6
Merge pull request #525 from docker/dependabot/npm_and_yarn/moment-timezone-0.6.0
chore(deps): Bump moment-timezone from 0.5.47 to 0.6.0
2025-06-13 16:07:29 +02:00
CrazyMax
c49a1eee09
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-06-13 16:01:14 +02:00
dependabot[bot]
f37a3b6e88
chore(deps): Bump moment-timezone from 0.5.47 to 0.6.0
Bumps [moment-timezone](https://github.com/moment/moment-timezone) from 0.5.47 to 0.6.0.
- [Release notes](https://github.com/moment/moment-timezone/releases)
- [Changelog](https://github.com/moment/moment-timezone/blob/develop/changelog.md)
- [Commits](https://github.com/moment/moment-timezone/compare/0.5.47...0.6.0)

---
updated-dependencies:
- dependency-name: moment-timezone
  dependency-version: 0.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-13 13:40:20 +00:00
CrazyMax
85eb7c9324
Merge pull request #524 from docker/dependabot/npm_and_yarn/multi-1172310dfd
chore(deps): Bump semver and @types/semver
2025-06-13 15:38:19 +02:00
CrazyMax
a1c21022b0
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-06-13 15:32:30 +02:00
dependabot[bot]
6547919405
chore(deps): Bump semver and @types/semver
Bumps [semver](https://github.com/npm/node-semver) and [@types/semver](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/semver). These dependencies needed to be updated together.

Updates `semver` from 7.7.1 to 7.7.2
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.7.1...v7.7.2)

Updates `@types/semver` from 7.5.8 to 7.7.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/semver)

---
updated-dependencies:
- dependency-name: semver
  dependency-version: 7.7.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: "@types/semver"
  dependency-version: 7.7.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-13 13:20:36 +00:00
CrazyMax
2e80e58e70
Merge pull request #523 from docker/dependabot/npm_and_yarn/actions/github-6.0.1
chore(deps): Bump @actions/github from 6.0.0 to 6.0.1
2025-06-13 15:18:33 +02:00
CrazyMax
a51254e5fa
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-06-13 15:16:17 +02:00
dependabot[bot]
dee3324b00
chore(deps): Bump @actions/github from 6.0.0 to 6.0.1
Bumps [@actions/github](https://github.com/actions/toolkit/tree/HEAD/packages/github) from 6.0.0 to 6.0.1.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/github/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/github)

---
updated-dependencies:
- dependency-name: "@actions/github"
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-07 19:45:38 +00:00
CrazyMax
418e4b98bf
Merge pull request #520 from crazy-max/pr-assign-author
pr-assign-author workflow
2025-04-23 16:10:09 +02:00
CrazyMax
e8ece87dc8
pr-assign-author workflow
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-04-23 14:17:36 +02:00
CrazyMax
12d9b9a905
Merge pull request #519 from crazy-max/fix-codecov
ci: fix missing source for codecov
2025-04-22 14:37:08 +02:00
CrazyMax
c88acc31ec
ci: fix missing source for codecov
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-04-22 14:29:47 +02:00
CrazyMax
902fa8ec7d
Merge pull request #504 from docker/dependabot/npm_and_yarn/semver-7.7.1
chore(deps): Bump semver from 7.6.3 to 7.7.1
2025-02-26 16:12:33 +01:00
CrazyMax
c30b9c27e6
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-02-26 16:08:18 +01:00
dependabot[bot]
0698804aab
chore(deps): Bump semver from 7.6.3 to 7.7.1
Bumps [semver](https://github.com/npm/node-semver) from 7.6.3 to 7.7.1.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.6.3...v7.7.1)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-26 14:56:20 +00:00
CrazyMax
bb3eecaaf8
Merge pull request #501 from docker/dependabot/npm_and_yarn/moment-timezone-0.5.47
chore(deps): Bump moment-timezone from 0.5.46 to 0.5.47
2025-02-26 15:53:52 +01:00
CrazyMax
94a839cf6a
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-02-26 15:34:33 +01:00
CrazyMax
ecd51a0f6a
Merge pull request #509 from docker/dependabot/npm_and_yarn/docker/actions-toolkit-0.56.0
chore(deps): Bump @docker/actions-toolkit from 0.55.0 to 0.56.0
2025-02-26 15:29:14 +01:00
dependabot[bot]
a85b1dbfe6
chore(deps): Bump @docker/actions-toolkit from 0.55.0 to 0.56.0
Bumps [@docker/actions-toolkit](https://github.com/docker/actions-toolkit) from 0.55.0 to 0.56.0.
- [Release notes](https://github.com/docker/actions-toolkit/releases)
- [Commits](https://github.com/docker/actions-toolkit/compare/v0.55.0...v0.56.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-26 14:25:36 +00:00
dependabot[bot]
5a76a0efcf
chore(deps): Bump moment-timezone from 0.5.46 to 0.5.47
Bumps [moment-timezone](https://github.com/moment/moment-timezone) from 0.5.46 to 0.5.47.
- [Release notes](https://github.com/moment/moment-timezone/releases)
- [Changelog](https://github.com/moment/moment-timezone/blob/develop/changelog.md)
- [Commits](https://github.com/moment/moment-timezone/compare/0.5.46...0.5.47)

---
updated-dependencies:
- dependency-name: moment-timezone
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-26 14:25:02 +00:00
CrazyMax
1cc4a9856a
Merge pull request #482 from docker/dependabot/npm_and_yarn/csv-parse-5.6.0
chore(deps): Bump csv-parse from 5.5.6 to 5.6.0
2025-02-26 15:22:56 +01:00
CrazyMax
d84de1e022
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-02-26 15:14:04 +01:00
dependabot[bot]
092f0474e9
chore(deps): Bump csv-parse from 5.5.6 to 5.6.0
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 5.5.6 to 5.6.0.
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@5.6.0/packages/csv-parse)

---
updated-dependencies:
- dependency-name: csv-parse
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-26 14:12:00 +00:00
CrazyMax
8b68062745
Merge pull request #507 from docker/dependabot/npm_and_yarn/docker/actions-toolkit-0.55.0
chore(deps): Bump @docker/actions-toolkit from 0.44.0 to 0.55.0
2025-02-26 15:09:39 +01:00
CrazyMax
0eaca2ee4e
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-02-26 15:06:28 +01:00
CrazyMax
db44dfae7a
Merge pull request #508 from crazy-max/typos
Fix typos
2025-02-26 15:01:46 +01:00
Igor Zubkov
2bd8a81e96
Fix typos
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-02-26 14:46:39 +01:00
dependabot[bot]
10ff2155d8
chore(deps): Bump @docker/actions-toolkit from 0.44.0 to 0.55.0
Bumps [@docker/actions-toolkit](https://github.com/docker/actions-toolkit) from 0.44.0 to 0.55.0.
- [Release notes](https://github.com/docker/actions-toolkit/releases)
- [Commits](https://github.com/docker/actions-toolkit/compare/v0.44.0...v0.55.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-26 13:46:33 +00:00
CrazyMax
a1a78f1e24
Merge pull request #506 from Yikun/patch-1
Add pep440 to Latest tag list
2025-02-26 14:43:18 +01:00
CrazyMax
95438bc6e5
Merge pull request #497 from omus/cv/output-env
Support disabling `DOCKER_METADATA_OUTPUT_*` environment variables
2025-02-26 14:37:22 +01:00
CrazyMax
0e4a06e6a2
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-02-26 14:33:12 +01:00
CrazyMax
a550435c60
use Util.parseBool to parse env
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-02-26 14:33:11 +01:00
Curtis Vogt
b539e14bf6
Add DOCKER_METADATA_SET_OUTPUT_ENV
Signed-off-by: Curtis Vogt <curtis.vogt@gmail.com>
2025-02-26 14:21:45 +01:00
Yikun Jiang
d931b83008
Update README.md
Signed-off-by: Yikun Jiang <yikunkero@gmail.com>
2025-02-16 02:23:35 +08:00
CrazyMax
8e1d5461f0
Merge pull request #494 from crazy-max/bake-v6
update bake-action to v6
2025-01-08 18:54:58 +01:00
CrazyMax
2af3007824
update build-push-action to v6
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-01-08 12:48:06 +01:00
CrazyMax
0d820067b8
update bake-action to v6
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-01-08 12:48:06 +01:00
Tõnis Tiigi
906ecf0fc0
Merge pull request #489 from crazy-max/labels-template
global expressions support for labels and annotations
2024-12-12 10:28:33 -08:00
CrazyMax
f78c299c14
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-12-09 12:32:17 +01:00
CrazyMax
87ff116aea
global expressions support for labels and annotations
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-12-09 12:29:03 +01:00
CrazyMax
b53be03109
Merge pull request #483 from crazy-max/update-readme
readme: update bake-action
2024-11-25 16:53:23 +01:00
CrazyMax
3da9c47fb9
remove UPGRADE.md
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-11-22 17:00:49 +01:00
CrazyMax
f5d655ce8b
readme: update bake-action
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-11-22 17:00:28 +01:00
CrazyMax
369eb591f4
Merge pull request #480 from crazy-max/back-to-sha-7
back to commit sha length of 7
2024-11-19 18:26:39 +01:00
CrazyMax
7d870ce854
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-11-19 18:24:29 +01:00
CrazyMax
e44a9cd788
back to commit sha length of 7
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-11-19 18:24:29 +01:00
CrazyMax
8cb0002d6a
Merge pull request #478 from crazy-max/commit-date-request
commiter_date: fix github api request fallback
2024-11-19 17:54:49 +01:00
CrazyMax
e01ddd3e3c
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-11-19 17:22:11 +01:00
CrazyMax
861d98a3bd
commiter_date: fix github api request fallback
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-11-19 17:22:11 +01:00
CrazyMax
359e915ab3
Merge pull request #475 from crazy-max/commit-date-changes
commit_date: code cleanup and readme updates
2024-11-19 15:51:51 +01:00
CrazyMax
0c395ebe62
commit_date: code cleanup and readme updates
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-11-19 15:48:18 +01:00
CrazyMax
115662203e
Merge pull request #474 from docker/dependabot/npm_and_yarn/cross-spawn-7.0.5
chore(deps): Bump cross-spawn from 7.0.3 to 7.0.5
2024-11-18 15:13:28 +01:00
dependabot[bot]
95ea8d0c40
chore(deps): Bump cross-spawn from 7.0.3 to 7.0.5
Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.5.
- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.5)

---
updated-dependencies:
- dependency-name: cross-spawn
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 13:45:03 +00:00
CrazyMax
a4c10ad2ed
Merge pull request #473 from docker/dependabot/github_actions/codecov/codecov-action-5
chore(deps): Bump codecov/codecov-action from 4 to 5
2024-11-18 14:43:11 +01:00
CrazyMax
c85c22ab59
Merge pull request #471 from trim21/commit-date
feat: add variable `commit_date`
2024-11-18 14:41:10 +01:00
Trim21
526d40319b
feat: add variable commit_date
Signed-off-by: Trim21 <trim21.me@gmail.com>
2024-11-17 01:04:19 +08:00
dependabot[bot]
86622a92ee
chore(deps): Bump codecov/codecov-action from 4 to 5
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4 to 5.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-14 19:06:18 +00:00
CrazyMax
44d81d6d2a
Merge pull request #472 from crazy-max/ci-context
ci: context job
2024-11-14 08:43:40 +01:00
CrazyMax
9aaeb628e0
ci: context job
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-11-14 08:36:54 +01:00
CrazyMax
32323e53fe
Merge pull request #470 from docker/dependabot/npm_and_yarn/docker/actions-toolkit-0.44.0
chore(deps): Bump @docker/actions-toolkit from 0.35.0 to 0.44.0
2024-11-13 14:02:33 +01:00
CrazyMax
3d8d1d9406
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-11-13 13:46:36 +01:00
dependabot[bot]
1b250aecdc
chore(deps): Bump @docker/actions-toolkit from 0.35.0 to 0.44.0
Bumps [@docker/actions-toolkit](https://github.com/docker/actions-toolkit) from 0.35.0 to 0.44.0.
- [Release notes](https://github.com/docker/actions-toolkit/releases)
- [Commits](https://github.com/docker/actions-toolkit/compare/v0.35.0...v0.44.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-13 12:44:55 +00:00
CrazyMax
bd26c982ee
Merge pull request #460 from docker/dependabot/npm_and_yarn/actions/core-1.11.1
chore(deps): Bump @actions/core from 1.10.1 to 1.11.1
2024-11-10 21:36:36 +01:00
CrazyMax
f574002aaf
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-10-31 11:25:58 +01:00
dependabot[bot]
30c2f0a1f0
chore(deps): Bump @actions/core from 1.10.1 to 1.11.1
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.10.1 to 1.11.1.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-31 10:22:02 +00:00
CrazyMax
0de3687b53
Merge pull request #459 from docker/dependabot/npm_and_yarn/moment-timezone-0.5.46
chore(deps): Bump moment-timezone from 0.5.45 to 0.5.46
2024-10-31 11:20:39 +01:00
CrazyMax
3229e62531
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-10-31 11:16:28 +01:00
dependabot[bot]
f829da7245
chore(deps): Bump moment-timezone from 0.5.45 to 0.5.46
Bumps [moment-timezone](https://github.com/moment/moment-timezone) from 0.5.45 to 0.5.46.
- [Release notes](https://github.com/moment/moment-timezone/releases)
- [Changelog](https://github.com/moment/moment-timezone/blob/develop/changelog.md)
- [Commits](https://github.com/moment/moment-timezone/compare/0.5.45...0.5.46)

---
updated-dependencies:
- dependency-name: moment-timezone
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-31 10:10:31 +00:00
CrazyMax
9b90a2e882
Merge pull request #467 from crazy-max/increase-short-sha-size
increase short commit hash length to 12 for uniqueness
2024-10-31 11:05:50 +01:00
CrazyMax
aa662cf9eb
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-10-31 10:45:42 +01:00
CrazyMax
c6cb763bee
DOCKER_METADATA_SHORT_SHA_LENGTH env var to customize short commit SHA length
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-10-31 10:45:41 +01:00
CrazyMax
bb9c6dd583
increase short commit hash length to 12 for uniqueness
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-10-31 10:11:17 +01:00
CrazyMax
d31acd5065
Merge pull request #464 from crazy-max/publish-immutable-action
ci: publish as immutable action workflow
2024-10-26 00:40:50 +02:00
CrazyMax
6df88e4e75
ci: publish as immutable action workflow
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-10-25 13:21:03 +02:00
CrazyMax
70b2cdc648
Merge pull request #454 from docker/dependabot/npm_and_yarn/path-to-regexp-6.3.0
chore(deps): Bump path-to-regexp from 6.2.2 to 6.3.0
2024-09-12 22:41:20 +02:00
dependabot[bot]
1a52488bd8
chore(deps): Bump path-to-regexp from 6.2.2 to 6.3.0
Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) from 6.2.2 to 6.3.0.
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v6.2.2...v6.3.0)

---
updated-dependencies:
- dependency-name: path-to-regexp
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-12 19:22:56 +00:00
CrazyMax
60a0d343a0
Merge pull request #441 from docker/dependabot/npm_and_yarn/docker/actions-toolkit-0.35.0
chore(deps): Bump @docker/actions-toolkit from 0.23.0 to 0.35.0
2024-07-23 11:04:00 +02:00
CrazyMax
b3bc5a6d84
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-23 10:48:22 +02:00
CrazyMax
e6e95c28a4
chore: move func
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-23 10:44:25 +02:00
dependabot[bot]
9ec63a7555
chore(deps): Bump @docker/actions-toolkit from 0.23.0 to 0.35.0
Bumps [@docker/actions-toolkit](https://github.com/docker/actions-toolkit) from 0.23.0 to 0.35.0.
- [Release notes](https://github.com/docker/actions-toolkit/releases)
- [Commits](https://github.com/docker/actions-toolkit/compare/v0.23.0...v0.35.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-23 08:39:57 +00:00
CrazyMax
6970301b80
Merge pull request #440 from docker/dependabot/npm_and_yarn/semver-7.6.3
chore(deps): Bump semver from 7.6.2 to 7.6.3
2024-07-23 10:35:12 +02:00
CrazyMax
d155f767a3
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-23 10:31:56 +02:00
dependabot[bot]
b5b2c1dec6
chore(deps): Bump semver from 7.6.2 to 7.6.3
Bumps [semver](https://github.com/npm/node-semver) from 7.6.2 to 7.6.3.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.6.2...v7.6.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-17 19:38:08 +00:00
CrazyMax
a64d0487d7
Merge pull request #424 from docker/dependabot/npm_and_yarn/braces-3.0.3
chore(deps): Bump braces from 3.0.2 to 3.0.3
2024-06-29 14:09:54 +02:00
CrazyMax
68e4cac93d
Merge pull request #426 from docker/dependabot/github_actions/docker/build-push-action-6
chore(deps): Bump docker/build-push-action from 5 to 6
2024-06-29 14:09:41 +02:00
CrazyMax
7ba3606742
Merge pull request #425 from docker/dependabot/github_actions/docker/bake-action-5
chore(deps): Bump docker/bake-action from 4 to 5
2024-06-29 14:09:28 +02:00
dependabot[bot]
2331fdf258
chore(deps): Bump docker/build-push-action from 5 to 6
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5 to 6.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-17 19:28:50 +00:00
dependabot[bot]
24ce540669
chore(deps): Bump docker/bake-action from 4 to 5
Bumps [docker/bake-action](https://github.com/docker/bake-action) from 4 to 5.
- [Release notes](https://github.com/docker/bake-action/releases)
- [Commits](https://github.com/docker/bake-action/compare/v4...v5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-17 19:28:46 +00:00
dependabot[bot]
d729db4f91
chore(deps): Bump braces from 3.0.2 to 3.0.3
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-16 15:05:34 +00:00
CrazyMax
f7b4ed1238
Merge pull request #415 from crazy-max/update-dev-deps
chore: update dev dependencies
2024-05-15 13:02:46 +02:00
CrazyMax
33c4e25305
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-05-15 12:33:21 +02:00
CrazyMax
b83177b368
chore: update dev dependencies
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-05-15 12:32:06 +02:00
CrazyMax
839b70f9d5
Merge pull request #412 from docker/dependabot/npm_and_yarn/csv-parse-5.5.6
chore(deps): Bump csv-parse from 5.5.5 to 5.5.6
2024-05-15 12:27:22 +02:00
CrazyMax
dbacb9a831
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-05-15 12:24:58 +02:00
dependabot[bot]
247cc9691a
chore(deps): Bump csv-parse from 5.5.5 to 5.5.6
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 5.5.5 to 5.5.6.
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@5.5.6/packages/csv-parse)

---
updated-dependencies:
- dependency-name: csv-parse
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-15 10:23:02 +00:00
CrazyMax
4c92c35ca9
Merge pull request #411 from docker/dependabot/npm_and_yarn/semver-7.6.2
chore(deps): Bump semver from 7.6.0 to 7.6.2
2024-05-15 12:22:05 +02:00
CrazyMax
9ca1efb941
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-05-15 12:20:02 +02:00
dependabot[bot]
0170173c39
chore(deps): Bump semver from 7.6.0 to 7.6.2
Bumps [semver](https://github.com/npm/node-semver) from 7.6.0 to 7.6.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.6.0...v7.6.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-15 10:08:12 +00:00
CrazyMax
dab39f1537
Merge pull request #413 from docker/dependabot/npm_and_yarn/docker/actions-toolkit-0.23.0
chore(deps): Bump @docker/actions-toolkit from 0.20.0 to 0.23.0
2024-05-15 12:07:13 +02:00
CrazyMax
f402fd6ae4
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-05-15 11:31:16 +02:00
dependabot[bot]
b0bbce7f66
chore(deps): Bump @docker/actions-toolkit from 0.20.0 to 0.23.0
Bumps [@docker/actions-toolkit](https://github.com/docker/actions-toolkit) from 0.20.0 to 0.23.0.
- [Release notes](https://github.com/docker/actions-toolkit/releases)
- [Commits](https://github.com/docker/actions-toolkit/compare/v0.20.0...v0.23.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-14 20:17:26 +00:00
CrazyMax
2ee3d3070b
Merge pull request #408 from crazy-max/update-yarn
update to yarn 3.6.3
2024-05-07 12:04:33 +02:00
CrazyMax
6e3a986a06
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-05-07 10:47:24 +02:00
CrazyMax
4fde7ad49c
chore: add plugin-interactive-tools yarn pkg
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-05-07 10:46:34 +02:00
CrazyMax
24b670ad98
update to yarn 3.6.3
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-05-07 10:45:56 +02:00
CrazyMax
1294d94f8e
Merge pull request #402 from docker/dependabot/npm_and_yarn/undici-5.28.4
chore(deps): Bump undici from 5.28.3 to 5.28.4
2024-04-11 16:26:21 +02:00
CrazyMax
4ab8e580e1
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-11 15:37:46 +02:00
dependabot[bot]
3617daf484
chore(deps): Bump undici from 5.28.3 to 5.28.4
Bumps [undici](https://github.com/nodejs/undici) from 5.28.3 to 5.28.4.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v5.28.3...v5.28.4)

---
updated-dependencies:
- dependency-name: undici
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-11 12:33:01 +00:00
CrazyMax
b5cd5676d4
Merge pull request #400 from docker/dependabot/npm_and_yarn/multi-ad9948e606
chore(deps): Bump semver and @types/semver
2024-04-11 14:31:41 +02:00
CrazyMax
204ddf0626
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-11 14:20:02 +02:00
dependabot[bot]
588ab464f7
chore(deps): Bump semver and @types/semver
Bumps [semver](https://github.com/npm/node-semver) and [@types/semver](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/semver). These dependencies needed to be updated together.

Updates `semver` from 7.5.4 to 7.6.0
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.5.4...v7.6.0)

Updates `@types/semver` from 7.5.1 to 7.5.8
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/semver)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: "@types/semver"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-11 11:43:29 +00:00
CrazyMax
6ed49e6282
Merge pull request #399 from docker/dependabot/npm_and_yarn/docker/actions-toolkit-0.20.0
chore(deps): Bump @docker/actions-toolkit from 0.18.0 to 0.20.0
2024-04-11 13:42:35 +02:00
CrazyMax
499da83ec1
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-11 13:40:49 +02:00
dependabot[bot]
1bc39885c1
chore(deps): Bump @docker/actions-toolkit from 0.18.0 to 0.20.0
Bumps [@docker/actions-toolkit](https://github.com/docker/actions-toolkit) from 0.18.0 to 0.20.0.
- [Release notes](https://github.com/docker/actions-toolkit/releases)
- [Commits](https://github.com/docker/actions-toolkit/compare/v0.18.0...v0.20.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-02 19:14:38 +00:00
CrazyMax
c314eea2b2
Merge pull request #395 from crazy-max/bake-cwd-prefix
docs: using bake with remote and local metadata definition
2024-03-25 11:35:50 +01:00
CrazyMax
22d80c023d
docs: using bake with remote and local metadata definition
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-03-25 11:33:52 +01:00
Tõnis Tiigi
38b3677383
Merge pull request #396 from crazy-max/ci-latest-buildx
ci: set buildx version
2024-03-18 15:16:15 -07:00
CrazyMax
3c91de3093
ci: set buildx version
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-03-18 10:38:16 +01:00
CrazyMax
75359341f6
Merge pull request #383 from docker/dependabot/npm_and_yarn/moment-timezone-0.5.45
chore(deps): Bump moment-timezone from 0.5.44 to 0.5.45
2024-03-13 18:55:50 +01:00
CrazyMax
2432cf717c
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-03-13 18:54:13 +01:00
CrazyMax
c77859c8ba
chore(deps): Bump csv-parse from 5.5.3 to 5.5.5
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-03-13 18:51:58 +01:00
dependabot[bot]
60ab7b421c
chore(deps): Bump moment-timezone from 0.5.44 to 0.5.45
Bumps [moment-timezone](https://github.com/moment/moment-timezone) from 0.5.44 to 0.5.45.
- [Release notes](https://github.com/moment/moment-timezone/releases)
- [Changelog](https://github.com/moment/moment-timezone/blob/develop/changelog.md)
- [Commits](https://github.com/moment/moment-timezone/compare/0.5.44...0.5.45)

---
updated-dependencies:
- dependency-name: moment-timezone
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-13 17:49:48 +00:00
CrazyMax
7ce1a14667
Merge pull request #391 from docker/dependabot/npm_and_yarn/docker/actions-toolkit-0.18.0
chore(deps): Bump @docker/actions-toolkit from 0.16.1 to 0.18.0
2024-03-13 18:48:10 +01:00
CrazyMax
d06e52bc52
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-03-13 18:46:46 +01:00
dependabot[bot]
66f0185bb8
chore(deps): Bump @docker/actions-toolkit from 0.16.1 to 0.18.0
Bumps [@docker/actions-toolkit](https://github.com/docker/actions-toolkit) from 0.16.1 to 0.18.0.
- [Release notes](https://github.com/docker/actions-toolkit/releases)
- [Commits](https://github.com/docker/actions-toolkit/compare/v0.16.1...v0.18.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-29 19:07:00 +00:00
CrazyMax
232fc64e3a
Merge pull request #386 from docker/dependabot/npm_and_yarn/undici-5.28.3
chore(deps): Bump undici from 5.26.3 to 5.28.3
2024-02-23 09:38:00 +01:00
CrazyMax
1b08479748
chore: update generated content
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-02-23 09:34:46 +01:00
CrazyMax
3a28db68be
Merge pull request #387 from crazy-max/bump-gha
bump codecov/codecov-action from 3 to 4
2024-02-23 09:13:06 +01:00
CrazyMax
6bb43c8680
bump codecov/codecov-action from 3 to 4
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-02-23 09:05:37 +01:00
dependabot[bot]
41050ffe08
chore(deps): Bump undici from 5.26.3 to 5.28.3
Bumps [undici](https://github.com/nodejs/undici) from 5.26.3 to 5.28.3.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v5.26.3...v5.28.3)

---
updated-dependencies:
- dependency-name: undici
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-16 17:59:42 +00:00
32 changed files with 8801 additions and 6953 deletions

View File

@ -1,2 +1,12 @@
/coverage
/node_modules
# Dependency directories
node_modules/
jspm_packages/
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*

View File

@ -13,7 +13,7 @@
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": "latest",
"ecmaVersion": 2023,
"sourceType": "module"
},
"plugins": [

2
.gitattributes vendored
View File

@ -1,3 +1,5 @@
/.yarn/releases/** binary
/.yarn/plugins/** binary
/__tests__/fixtures/** -linguist-detectable
/dist/** linguist-generated=true
/lib/** linguist-generated=true

View File

@ -17,14 +17,39 @@ on:
env:
DOCKER_IMAGE: localhost:5000/name/app
BUILDX_VERSION: latest
jobs:
context:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
context:
- workflow
- git
steps:
-
name: Checkout
uses: actions/checkout@v6
-
name: Docker meta
uses: ./
with:
context: ${{ matrix.context }}
multi-images:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.BUILDX_VERSION }}
driver: docker
-
name: Docker meta
uses: ./
@ -55,7 +80,13 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.BUILDX_VERSION }}
driver: docker
-
name: Docker meta
uses: ./
@ -85,7 +116,13 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.BUILDX_VERSION }}
driver: docker
-
name: Docker meta
uses: ./
@ -113,7 +150,13 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.BUILDX_VERSION }}
driver: docker
-
name: Docker meta
uses: ./
@ -138,7 +181,13 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.BUILDX_VERSION }}
driver: docker
-
name: Docker meta
uses: ./
@ -155,7 +204,13 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.BUILDX_VERSION }}
driver: docker
-
name: Docker meta
uses: ./
@ -170,7 +225,13 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.BUILDX_VERSION }}
driver: docker
-
name: Docker meta
uses: ./
@ -194,7 +255,13 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.BUILDX_VERSION }}
driver: docker
-
name: Docker meta
uses: ./
@ -202,6 +269,8 @@ jobs:
images: |
${{ env.DOCKER_IMAGE }}
ghcr.io/name/app
labels: |
org.opencontainers.image.created={{commit_date 'YYYY-MM-DDTHH:mm:ss.SSS[Z]'}}
tags: |
type=sha
type=raw,value=gexp-branch-{{branch}}
@ -209,13 +278,20 @@ jobs:
type=raw,value=gexp-tag-{{tag}}
type=raw,value=gexp-baseref-{{base_ref}}
type=raw,value=gexp-defbranch,enable={{is_default_branch}}
type=raw,value=gexp-notdefbranch,enable={{is_not_default_branch}}
json:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.BUILDX_VERSION }}
driver: docker
-
name: Docker meta
id: meta
@ -244,7 +320,13 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.BUILDX_VERSION }}
driver-opts: network=host
-
name: Docker meta
id: docker_meta
@ -261,17 +343,9 @@ jobs:
type=semver,pattern=v{{major}}.{{minor}}
type=semver,pattern=v{{major}}
type=sha
-
name: Set up QEMU
uses: docker/setup-qemu-action@v3
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver-opts: network=host
-
name: Build and push to local registry
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
context: ./test
file: ./test/Dockerfile
@ -288,17 +362,18 @@ jobs:
name: Check manifest
run: |
docker buildx imagetools inspect ${{ env.DOCKER_IMAGE }}:${{ steps.docker_meta.outputs.version }}
-
name: Dump context
if: always()
uses: crazy-max/ghaction-dump-context@v2
bake:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.BUILDX_VERSION }}
-
name: Docker meta
id: docker_meta
@ -316,20 +391,14 @@ jobs:
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=sha
-
name: Set up QEMU
uses: docker/setup-qemu-action@v3
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
-
name: Build
uses: docker/bake-action@v4
uses: docker/bake-action@v6
with:
files: |
./test/docker-bake.hcl
${{ steps.docker_meta.outputs.bake-file-tags }}
${{ steps.docker_meta.outputs.bake-file-labels }}
cwd://${{ steps.docker_meta.outputs.bake-file-tags }}
cwd://${{ steps.docker_meta.outputs.bake-file-labels }}
targets: |
release
@ -344,7 +413,13 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.BUILDX_VERSION }}
driver: docker
-
name: Docker meta
id: meta
@ -356,7 +431,7 @@ jobs:
sep-tags: ${{ matrix.sep }}
-
name: Tags
uses: actions/github-script@v7
uses: actions/github-script@v8
with:
script: |
console.log(`${{ steps.meta.outputs.tags }}`);
@ -366,7 +441,13 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.BUILDX_VERSION }}
driver: docker
-
name: Docker meta
id: meta
@ -381,7 +462,7 @@ jobs:
maintainer=Foo
-
name: Build
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
context: ./test
file: ./test/output.Dockerfile
@ -392,12 +473,43 @@ jobs:
DOCKER_METADATA_OUTPUT_ANNOTATIONS
DOCKER_METADATA_OUTPUT_JSON
no-output-env:
runs-on: ubuntu-latest
env:
DOCKER_METADATA_SET_OUTPUT_ENV: false
steps:
-
name: Checkout
uses: actions/checkout@v6
-
name: Docker meta
id: meta
uses: ./
with:
images: |
${{ env.DOCKER_IMAGE }}
ghcr.io/name/app
labels: |
maintainer=CrazyMax
annotations: |
maintainer=Foo
-
name: No output environment variables set
shell: bash
run: |
[[ "$(printenv | grep "^DOCKER_METADATA_OUTPUT_" | wc -l)" -eq 0 ]] || exit 1
bake-annotations:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.BUILDX_VERSION }}
-
name: Docker meta
id: docker_meta
@ -417,22 +529,14 @@ jobs:
type=sha
env:
DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index
-
name: Set up QEMU
uses: docker/setup-qemu-action@v3
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: latest
-
name: Build
uses: docker/bake-action@v4
uses: docker/bake-action@v6
with:
files: |
./test/docker-bake.hcl
${{ steps.docker_meta.outputs.bake-file-tags }}
${{ steps.docker_meta.outputs.bake-file-annotations }}
cwd://${{ steps.docker_meta.outputs.bake-file-tags }}
cwd://${{ steps.docker_meta.outputs.bake-file-annotations }}
targets: |
release
@ -441,7 +545,13 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.BUILDX_VERSION }}
driver: docker
-
name: Docker meta
uses: ./
@ -455,3 +565,70 @@ jobs:
-
name: Print envs
run: env|sort
bake-path-context:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v6
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: latest
-
name: Docker meta
id: docker_meta
uses: ./
-
name: Build
uses: docker/bake-action@v6
with:
source: .
files: |
./test/docker-bake.hcl
${{ steps.docker_meta.outputs.bake-file-tags }}
${{ steps.docker_meta.outputs.bake-file-labels }}
targets: |
release
sha-short:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
short-length:
- ''
- 16
steps:
-
name: Checkout
uses: actions/checkout@v6
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.BUILDX_VERSION }}
driver: docker
-
name: Docker meta
uses: ./
with:
images: |
${{ env.DOCKER_IMAGE }}
ghcr.io/name/app
tags: |
type=sha
env:
DOCKER_METADATA_SHORT_SHA_LENGTH: ${{ matrix.short-length }}
dump:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v6
-
name: Dump context
uses: crazy-max/ghaction-dump-context@v2

17
.github/workflows/pr-assign-author.yml vendored Normal file
View File

@ -0,0 +1,17 @@
name: pr-assign-author
permissions:
contents: read
on:
pull_request_target:
types:
- opened
- reopened
jobs:
run:
uses: crazy-max/.github/.github/workflows/pr-assign-author.yml@1b673f36fad86812f538c1df9794904038a23cbf
permissions:
contents: read
pull-requests: write

21
.github/workflows/publish.yml vendored Normal file
View File

@ -0,0 +1,21 @@
name: publish
on:
release:
types:
- published
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
packages: write
steps:
-
name: Checkout
uses: actions/checkout@v6
-
name: Publish
uses: actions/publish-immutable-action@v0.0.4

View File

@ -17,14 +17,16 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
-
name: Test
uses: docker/bake-action@v4
uses: docker/bake-action@v6
with:
source: .
targets: test
-
name: Upload coverage
uses: codecov/codecov-action@v3
uses: codecov/codecov-action@v5
with:
file: ./coverage/clover.xml
files: ./coverage/clover.xml
token: ${{ secrets.CODECOV_TOKEN }}

View File

@ -15,16 +15,17 @@ jobs:
prepare:
runs-on: ubuntu-latest
outputs:
targets: ${{ steps.targets.outputs.matrix }}
targets: ${{ steps.generate.outputs.targets }}
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
-
name: Targets matrix
id: targets
run: |
echo "matrix=$(docker buildx bake validate --print | jq -cr '.group.validate.targets')" >> $GITHUB_OUTPUT
name: List targets
id: generate
uses: docker/bake-action/subaction/list-targets@v6
with:
target: validate
validate:
runs-on: ubuntu-latest
@ -35,11 +36,8 @@ jobs:
matrix:
target: ${{ fromJson(needs.prepare.outputs.targets) }}
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Validate
uses: docker/bake-action@v4
uses: docker/bake-action@v6
with:
targets: ${{ matrix.target }}

71
.gitignore vendored
View File

@ -1,12 +1,5 @@
/.dev
node_modules/
lib
# https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore
# Jetbrains
/.idea
/*.iml
# Rest of the file pulled from https://github.com/github/gitignore/blob/master/Node.gitignore
# Logs
logs
*.log
@ -14,6 +7,7 @@ npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
@ -24,34 +18,14 @@ pids
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# TypeScript cache
*.tsbuildinfo
@ -61,36 +35,19 @@ typings/
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
# dotenv environment variable files
.env
.env.test
.env.development.local
.env.test.local
.env.production.local
.env.local
# parcel-bundler cache (https://parceljs.org/)
.cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*

6
.prettierignore Normal file
View File

@ -0,0 +1,6 @@
# Dependency directories
node_modules/
jspm_packages/
# yarn v2
.yarn/

17
.yarnrc.yml Normal file
View File

@ -0,0 +1,17 @@
# https://yarnpkg.com/configuration/yarnrc
compressionLevel: mixed
enableGlobalCache: false
enableHardenedMode: true
logFilters:
- code: YN0013
level: discard
- code: YN0019
level: discard
- code: YN0076
level: discard
- code: YN0086
level: discard
nodeLinker: node-modules

160
README.md
View File

@ -44,7 +44,9 @@ ___
* [`{{sha}}`](#sha)
* [`{{base_ref}}`](#base_ref)
* [`{{is_default_branch}}`](#is_default_branch)
* [`{{is_not_default_branch}}`](#is_not_default_branch)
* [`{{date '<format>' tz='<timezone>'}}`](#date-format-tztimezone)
* [`{{commit_date '<format>' tz='<timezone>'}}`](#commit_date-format-tztimezone)
* [Major version zero](#major-version-zero)
* [JSON output object](#json-output-object)
* [Overwrite labels and annotations](#overwrite-labels-and-annotations)
@ -75,7 +77,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
-
name: Docker meta
id: meta
@ -91,7 +93,7 @@ jobs:
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
@ -129,7 +131,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
-
name: Docker meta
id: meta
@ -151,7 +153,7 @@ jobs:
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
@ -205,9 +207,6 @@ jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Docker meta
id: meta
@ -223,11 +222,11 @@ jobs:
type=sha
-
name: Build
uses: docker/bake-action@v3
uses: docker/bake-action@v6
with:
files: |
./docker-bake.hcl
${{ steps.meta.outputs.bake-file }}
cwd://${{ steps.meta.outputs.bake-file }}
targets: build
```
@ -270,12 +269,12 @@ similar to the previous one:
```yaml
-
name: Build
uses: docker/bake-action@v3
uses: docker/bake-action@v6
with:
files: |
./docker-bake.hcl
${{ steps.meta.outputs.bake-file-tags }}
${{ steps.meta.outputs.bake-file-labels }}
cwd://${{ steps.meta.outputs.bake-file-tags }}
cwd://${{ steps.meta.outputs.bake-file-labels }}
targets: build
```
@ -285,6 +284,7 @@ similar to the previous one:
The following inputs can be used as `step.with` keys:
> [!NOTE]
> `List` type is a newline-delimited string
> ```yaml
> labels: |
@ -300,7 +300,7 @@ The following inputs can be used as `step.with` keys:
| `tags` | List | List of [tags](#tags-input) as key-value pair attributes |
| `flavor` | List | [Flavor](#flavor-input) to apply |
| `labels` | List | List of custom labels |
| `annotations` | List | List of custom anntoations |
| `annotations` | List | List of custom annotations |
| `sep-tags` | String | Separator to use for tags output (default `\n`) |
| `sep-labels` | String | Separator to use for labels output (default `\n`) |
| `sep-annotations` | String | Separator to use for annotations output (default `\n`) |
@ -314,6 +314,7 @@ The following outputs are available:
|-------------------------|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `version` | String | Docker image version |
| `tags` | String | Docker tags |
| `tag-names` | String | Docker tag names without image base name |
| `labels` | String | Docker labels |
| `annotations` | String | [Annotations](https://github.com/moby/buildkit/blob/master/docs/annotations.md) |
| `json` | String | JSON output of tags and labels |
@ -321,7 +322,7 @@ The following outputs are available:
| `bake-file-labels` | File | [Bake file definition](https://docs.docker.com/build/bake/reference/) path with labels |
| `bake-file-annotations` | File | [Bake file definition](https://docs.docker.com/build/bake/reference/) path with [annotations](https://github.com/moby/buildkit/blob/master/docs/annotations.md) |
Alternatively, each output is also exported as an environment variable:
Alternatively, each output is also exported as an environment variable when `DOCKER_METADATA_SET_OUTPUT_ENV` is `true`:
* `DOCKER_METADATA_OUTPUT_VERSION`
* `DOCKER_METADATA_OUTPUT_TAGS`
@ -335,7 +336,7 @@ Alternatively, each output is also exported as an environment variable:
So it can be used with our [Docker Build Push action](https://github.com/docker/build-push-action/):
```yaml
- uses: docker/build-push-action@v5
- uses: docker/build-push-action@v6
with:
build-args: |
DOCKER_METADATA_OUTPUT_JSON
@ -344,9 +345,11 @@ So it can be used with our [Docker Build Push action](https://github.com/docker/
### environment variables
| Name | Type | Description |
|--------------------------------------|--------|------------------------------------------------------------------------------------------------------------|
|--------------------------------------|--------|----------------------------------------------------------------------------------------------------------------------------------------------|
| `DOCKER_METADATA_PR_HEAD_SHA` | Bool | If `true`, set associated head SHA instead of commit SHA that triggered the workflow on pull request event |
| `DOCKER_METADATA_SHORT_SHA_LENGTH` | Number | Specifies the length of the [short commit SHA](#typesha) to ensure uniqueness. Default is `7`, but can be increased for larger repositories. |
| `DOCKER_METADATA_ANNOTATIONS_LEVELS` | String | Comma separated list of annotations levels to set for annotations output separated (default `manifest`) |
| `DOCKER_METADATA_SET_OUTPUT_ENV` | Bool | If `true`, sets each output as an environment variable (default `true`) |
## `context` input
@ -461,7 +464,7 @@ tags: |
# handlebars
type=schedule,pattern={{date 'YYYYMMDD'}}
# handlebars with timezone
type=schedule,pattern={{date 'YYYYMMDD-hhmmss' tz='Asia/Tokyo'}}
type=schedule,pattern={{date 'YYYYMMDD-HHmmss' tz='Asia/Tokyo'}}
```
Will be used on [schedule event](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule).
@ -493,6 +496,8 @@ tags: |
type=semver,pattern={{version}}
# use custom value instead of git tag
type=semver,pattern={{version}},value=v1.0.0
# use custom value and match part of it
type=semver,pattern={{version}},value=p1/v1.0.0,match=v(\d.\d.\d)$
```
Will be used on a [push tag event](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#push)
@ -508,18 +513,21 @@ with the following expressions:
* `minor` ; minor version identifier
* `patch` ; patch version identifier
| Git tag | Pattern | Output |
|--------------------|----------------------------------------------------------|----------------------|
| `v1.2.3` | `{{raw}}` | `v1.2.3` |
| `v1.2.3` | `{{version}}` | `1.2.3` |
| `v1.2.3` | `{{major}}.{{minor}}` | `1.2` |
| `v1.2.3` | `v{{major}}` | `v1` |
| `v1.2.3` | `{{minor}}` | `2` |
| `v1.2.3` | `{{patch}}` | `3` |
| `v2.0.8-beta.67` | `{{raw}}` | `v2.0.8-beta.67` |
| `v2.0.8-beta.67` | `{{version}}` | `2.0.8-beta.67` |
| `v2.0.8-beta.67` | `{{major}}.{{minor}}` | `2.0.8-beta.67`* |
| Git tag | Pattern | Match | Output |
|------------------|-----------------------|----------------|------------------|
| `v1.2.3` | `{{raw}}` | | `v1.2.3` |
| `v1.2.3` | `{{version}}` | | `1.2.3` |
| `v1.2.3` | `{{major}}.{{minor}}` | | `1.2` |
| `v1.2.3` | `v{{major}}` | | `v1` |
| `v1.2.3` | `{{minor}}` | | `2` |
| `v1.2.3` | `{{patch}}` | | `3` |
| `p1/v1.2.3` | `{{version}}` | `v(\d.\d.\d)$` | `1.2.3` |
| `v2.0.8-beta.67` | `{{raw}}` | | `v2.0.8-beta.67` |
| `v2.0.8-beta.67` | `{{version}}` | | `2.0.8-beta.67` |
| `v2.0.8-beta.67` | `{{major}}` | | `2.0.8-beta.67`* |
| `v2.0.8-beta.67` | `{{major}}.{{minor}}` | | `2.0.8-beta.67`* |
> [!IMPORTANT]
> *Pre-release (rc, beta, alpha) will only extend `{{version}}` (or `{{raw}}`
> if specified) as tag because they are updated frequently, and contain many
> breaking changes that are (by the author's design) not yet fit for public
@ -529,7 +537,7 @@ Extended attributes and default values:
```yaml
tags: |
type=semver,enable=true,priority=900,prefix=,suffix=,pattern=,value=
type=semver,enable=true,priority=900,prefix=,suffix=,pattern=,value=,match=
```
### `type=pep440`
@ -540,6 +548,8 @@ tags: |
type=pep440,pattern={{version}}
# use custom value instead of git tag
type=pep440,pattern={{version}},value=1.0.0
# use custom value and match part of it
type=pep440,pattern={{version}},value=p1/v1.0.0,match=v(\d.\d.\d)$
```
Will be used on a [push tag event](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#push)
@ -555,20 +565,22 @@ with the following expressions:
* `minor` ; minor version identifier
* `patch` ; patch version identifier
| Git tag | Pattern | Output |
|--------------------|----------------------------------------------------------|----------------------|
| `1.2.3` | `{{raw}}` | `1.2.3` |
| `1.2.3` | `{{version}}` | `1.2.3` |
| `v1.2.3` | `{{version}}` | `1.2.3` |
| `1.2.3` | `{{major}}.{{minor}}` | `1.2` |
| `1.2.3` | `v{{major}}` | `v1` |
| `v1.2.3rc2` | `{{raw}}` | `v1.2.3rc2` |
| `1.2.3rc2` | `{{version}}` | `1.2.3rc2` |
| `1.2.3rc2` | `{{major}}.{{minor}}` | `1.2.3rc2`* |
| `1.2.3post1` | `{{major}}.{{minor}}` | `1.2.3.post1`* |
| `1.2.3beta2` | `{{major}}.{{minor}}` | `1.2.3b2`* |
| `1.0dev4` | `{{major}}.{{minor}}` | `1.0.dev4`* |
| Git tag | Pattern | Match | Output |
|--------------|-----------------------|----------------|----------------|
| `1.2.3` | `{{raw}}` | | `1.2.3` |
| `1.2.3` | `{{version}}` | | `1.2.3` |
| `v1.2.3` | `{{version}}` | | `1.2.3` |
| `1.2.3` | `{{major}}.{{minor}}` | | `1.2` |
| `1.2.3` | `v{{major}}` | | `v1` |
| `v1.2.3rc2` | `{{raw}}` | | `v1.2.3rc2` |
| `1.2.3rc2` | `{{version}}` | | `1.2.3rc2` |
| `p1/v1.2.3` | `{{version}}` | `v(\d.\d.\d)$` | `1.2.3` |
| `1.2.3rc2` | `{{major}}.{{minor}}` | | `1.2.3rc2`* |
| `1.2.3post1` | `{{major}}.{{minor}}` | | `1.2.3.post1`* |
| `1.2.3beta2` | `{{major}}.{{minor}}` | | `1.2.3b2`* |
| `1.0dev4` | `{{major}}.{{minor}}` | | `1.0.dev4`* |
> [!IMPORTANT]
> *dev/pre/post release will only extend `{{version}}` (or `{{raw}}` if
> specified) as tag because they are updated frequently, and contain many
> breaking changes that are (by the author's design) not yet fit for public
@ -705,7 +717,26 @@ tags: |
type=sha,format=long
```
Output Git short commit (or long if specified) as Docker tag like `sha-ad132f5`.
Output Git short commit (or long if specified) as Docker tag like
`sha-860c190`.
By default, the length of the short commit SHA is `7` characters. You can
increase this length for larger repositories by setting the
[`DOCKER_METADATA_SHORT_SHA_LENGTH` environment variable](#environment-variables):
```yaml
-
name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: |
name/app
tags: |
type=sha
env:
DOCKER_METADATA_SHORT_SHA_LENGTH: 12
```
Extended attributes and default values:
@ -739,6 +770,7 @@ generated by default (`auto` mode) for:
* [`type=ref,event=tag`](#typeref)
* [`type=semver,pattern=...`](#typesemver)
* [`type=pep440,pattern=...`](#typepep440)
* [`type=match,pattern=...`](#typematch)
For conditionally tagging with latest for a specific branch name, e.g. if your
@ -780,7 +812,8 @@ Each tags `type` attribute has a default priority:
### Global expressions
The following [Handlebars' template](https://handlebarsjs.com/guide/) expressions
for `prefix`, `suffix`, `value` and `enable` attributes are available:
for `prefix`, `suffix`, `value` and `enable` attributes of `tags` input are
available:
```yaml
tags: |
@ -790,6 +823,13 @@ tags: |
type=raw,value=mytag-{{branch}}-{{sha}}
```
They can also be applied to `labels` and `annotations` inputs:
```yaml
labels: |
org.opencontainers.image.created={{commit_date 'YYYY-MM-DDTHH:mm:ss.SSS[Z]'}}
```
#### `{{branch}}`
Returns the branch name that triggered the workflow run. Will be empty if not
@ -830,6 +870,7 @@ workflow run. Will be empty for a branch reference:
| `push` | `refs/heads/my/branch` | |
| `push tag`* | `refs/tags/v1.2.3` | `master` |
> [!IMPORTANT]
> *`base_ref` is available in the push payload but doesn't always seem to
> return the expected branch when the push tag event occurs. It's also
> [not documented in GitHub docs](https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#push).
@ -841,6 +882,11 @@ workflow run. Will be empty for a branch reference:
Returns `true` if the branch that triggered the workflow run is the default
one, otherwise `false`.
#### `{{is_not_default_branch}}`
Returns `true` if the branch that triggered the workflow run is not the default
one, otherwise `false`.
#### `{{date '<format>' tz='<timezone>'}}`
Returns the current date rendered by its [moment format](https://momentjs.com/docs/#/displaying/format/).
@ -852,6 +898,20 @@ Default `tz` is UTC.
| `{{date 'dddd, MMMM Do YYYY, h:mm:ss a'}}` | `Friday, January 10th 2020, 3:25:50 pm` |
| `{{date 'YYYYMMDD-HHmmss' tz='Asia/Tokyo'}}` | `20200110-093000` |
#### `{{commit_date '<format>' tz='<timezone>'}}`
Returns the date when the current git commit is committed, rendered by its
[moment format](https://momentjs.com/docs/#/displaying/format/). It falls back
to the current date if the commit date is not available.
Default `tz` is UTC.
| Expression | Output example |
|-----------------------------------------------------|-----------------------------------------|
| `{{commit_date 'YYYYMMDD'}}` | `20200110` |
| `{{commit_date 'dddd, MMMM Do YYYY, h:mm:ss a'}}` | `Friday, January 10th 2020, 3:25:50 pm` |
| `{{commit_date 'YYYYMMDD-HHmmss' tz='Asia/Tokyo'}}` | `20200110-093000` |
### Major version zero
Major version zero (`0.y.z`) is for initial development and **may** change at
@ -885,7 +945,7 @@ that you can reuse them further in your workflow using the [`fromJSON` function]
images: name/app
-
name: Build and push
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
@ -932,7 +992,7 @@ of the `metadata-action`:
images: name/app
-
name: Build and push
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
tags: ${{ steps.meta.outputs.tags }}
annotations: ${{ steps.meta.outputs.annotations }}
@ -948,12 +1008,12 @@ The same can be done with the [`bake-action`](https://github.com/docker/bake-act
images: name/app
-
name: Build
uses: docker/bake-action@v3
uses: docker/bake-action@v6
with:
files: |
./docker-bake.hcl
${{ steps.meta.outputs.bake-file-tags }}
${{ steps.meta.outputs.bake-file-annotations }}
cwd://${{ steps.meta.outputs.bake-file-tags }}
cwd://${{ steps.meta.outputs.bake-file-annotations }}
targets: build
```
@ -979,7 +1039,7 @@ Please consult the documentation of your registry.
DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index
-
name: Build and push
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
tags: ${{ steps.meta.outputs.tags }}
annotations: ${{ steps.meta.outputs.annotations }}

View File

@ -1,300 +0,0 @@
# Upgrade notes
## v2 to v3
* Repository has been moved to docker org. Replace `crazy-max/ghaction-docker-meta@v2`
with `docker/metadata-action@v5`
* The default bake target has been changed: `ghaction-docker-meta` > `docker-metadata-action`
## v1 to v2
* [inputs](#inputs)
* [`tag-sha`](#tag-sha)
* [`tag-edge` / `tag-edge-branch`](#tag-edge--tag-edge-branch)
* [`tag-semver`](#tag-semver)
* [`tag-match` / `tag-match-group`](#tag-match--tag-match-group)
* [`tag-latest`](#tag-latest)
* [`tag-schedule`](#tag-schedule)
* [`tag-custom` / `tag-custom-only`](#tag-custom--tag-custom-only)
* [`label-custom`](#label-custom)
* [Basic workflow](#basic-workflow)
* [Semver workflow](#semver-workflow)
### inputs
| New | Unchanged | Removed |
|------------|-----------------|--------------------|
| `tags` | `images` | `tag-sha` |
| `flavor` | `sep-tags` | `tag-edge` |
| `labels` | `sep-labels` | `tag-edge-branch` |
| | | `tag-semver` |
| | | `tag-match` |
| | | `tag-match-group` |
| | | `tag-latest` |
| | | `tag-schedule` |
| | | `tag-custom` |
| | | `tag-custom-only` |
| | | `label-custom` |
#### `tag-sha`
```yaml
tags: |
type=sha
```
#### `tag-edge` / `tag-edge-branch`
```yaml
tags: |
# default branch
type=edge
# specify branch
type=edge,branch=main
```
#### `tag-semver`
```yaml
tags: |
type=semver,pattern={{version}}
```
#### `tag-match` / `tag-match-group`
```yaml
tags: |
type=match,pattern=v(.*),group=1
```
#### `tag-latest`
`tag-latest` is now handled through the [`flavor` input](README.md#flavor-input):
```yaml
flavor: |
latest=auto
```
See also the notes about ["latest tag" behavior](README.md#latest-tag)
#### `tag-schedule`
```yaml
tags: |
# default tag (nightly)
type=schedule
# specific pattern
type=schedule,pattern={{date 'YYYYMMDD'}}
```
#### `tag-custom` / `tag-custom-only`
```yaml
tags: |
type=raw,value=foo
type=raw,value=bar
# or
type=raw,foo
type=raw,bar
# or
foo
bar
```
#### `label-custom`
Same behavior for `labels`:
```yaml
labels: |
maintainer=CrazyMax
```
### Basic workflow
```yaml
# v1
name: ci
on:
push:
branches:
- 'master'
tags:
- 'v*'
pull_request:
branches:
- 'master'
jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Docker meta
id: meta
uses: docker/metadata-action@v1
with:
images: name/app
-
name: Login to DockerHub
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
```
```yaml
# v2
name: ci
on:
push:
branches:
- 'master'
tags:
- 'v*'
pull_request:
branches:
- 'master'
jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: name/app
-
name: Login to DockerHub
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
```
### Semver workflow
```yaml
# v1
name: ci
on:
push:
branches:
- 'master'
tags:
- 'v*'
pull_request:
branches:
- 'master'
jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Docker meta
id: meta
uses: docker/metadata-action@v1
with:
images: name/app
tag-semver: |
{{version}}
{{major}}.{{minor}}
-
name: Login to DockerHub
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
```
```yaml
# v2
name: ci
on:
push:
branches:
- 'master'
tags:
- 'v*'
pull_request:
branches:
- 'master'
jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: name/app
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
-
name: Login to DockerHub
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
```

View File

@ -204,4 +204,20 @@ export const context = {
}
};
export const getOctokit = jest.fn();
export const getOctokit = jest.fn(() => ({
rest: {
repos: {
getCommit: jest.fn(() =>
Promise.resolve({
data: {
commit: {
committer: {
date: '2024-11-13T13:42:28Z'
}
}
}
})
)
}
}
}));

View File

@ -5,9 +5,12 @@ import * as path from 'path';
import {Context} from '@actions/github/lib/context';
import {Git} from '@docker/actions-toolkit/lib/git';
import {GitHub} from '@docker/actions-toolkit/lib/github';
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit';
import {ContextSource, getContext, getInputs, Inputs} from '../src/context';
const toolkit = new Toolkit({githubToken: 'fake-github-token'});
beforeEach(() => {
jest.clearAllMocks();
jest.spyOn(GitHub, 'context', 'get').mockImplementation((): Context => {
@ -113,9 +116,10 @@ describe('getContext', () => {
});
it('workflow', async () => {
const context = await getContext(ContextSource.workflow);
const context = await getContext(ContextSource.workflow, toolkit);
expect(context.ref).toEqual('refs/heads/dev');
expect(context.sha).toEqual('5f3331d7f7044c18ca9f12c77d961c4d7cf3276a');
expect(context.commitDate).toEqual(new Date('2024-11-13T13:42:28.000Z'));
});
it('git', async () => {
@ -125,9 +129,13 @@ describe('getContext', () => {
sha: 'git-test-sha'
} as Context);
});
const context = await getContext(ContextSource.git);
jest.spyOn(Git, 'commitDate').mockImplementation(async (): Promise<Date> => {
return new Date('2023-01-01T13:42:28.000Z');
});
const context = await getContext(ContextSource.git, toolkit);
expect(context.ref).toEqual('refs/heads/git-test');
expect(context.sha).toEqual('git-test-sha');
expect(context.commitDate).toEqual(new Date('2023-01-01T13:42:28.000Z'));
});
});

View File

@ -2,10 +2,11 @@ import {beforeEach, describe, expect, jest, test} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
import * as dotenv from 'dotenv';
import {Context} from '@actions/github/lib/context';
import {GitHub} from '@docker/actions-toolkit/lib/github';
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit';
import {GitHubRepo} from '@docker/actions-toolkit/lib/types/github';
import {Context} from '@actions/github/lib/context';
import {ContextSource, getContext, getInputs, Inputs} from '../src/context';
import {Meta, Version} from '../src/meta';
@ -31,8 +32,16 @@ beforeEach(() => {
delete process.env[key];
}
});
jest.spyOn(GitHub, 'context', 'get').mockImplementation((): Context => {
return new Context();
//@ts-expect-error partial info
return {
...new Context(),
repo: {
owner: 'docker',
repo: 'repo'
}
};
});
});
@ -53,7 +62,7 @@ const tagsLabelsTest = async (name: string, envFile: string, inputs: Inputs, exV
process.env = dotenv.parse(fs.readFileSync(path.join(__dirname, 'fixtures', envFile)));
const toolkit = new Toolkit();
const repo = await toolkit.github.repoData();
const meta = new Meta({...getInputs(), ...inputs}, await getContext(ContextSource.workflow), repo);
const meta = new Meta({...getInputs(), ...inputs}, await getContext(ContextSource.workflow, toolkit), repo);
const version = meta.version;
expect(version).toEqual(exVersion);
@ -622,6 +631,7 @@ describe('push', () => {
tags: [
`type=raw,value=mytag-{{branch}}`,
`type=raw,value=mytag-{{date 'YYYYMMDD'}}`,
`type=raw,value=mytag-cd-{{commit_date 'YYYYMMDD'}}`,
`type=raw,value=mytag-{{date 'YYYYMMDD-HHmmss' tz='Asia/Tokyo'}}`,
`type=raw,value=mytag-tag-{{tag}}`,
`type=raw,value=mytag-baseref-{{base_ref}}`,
@ -632,6 +642,7 @@ describe('push', () => {
main: 'mytag-master',
partial: [
'mytag-20200110',
"mytag-cd-20200110",
'mytag-20200110-093000',
'mytag-tag-',
'mytag-baseref-',
@ -642,6 +653,7 @@ describe('push', () => {
[
'user/app:mytag-master',
'user/app:mytag-20200110',
'user/app:mytag-cd-20200110',
'user/app:mytag-20200110-093000',
'user/app:mytag-tag-',
'user/app:mytag-baseref-',
@ -768,16 +780,21 @@ describe('push', () => {
`type=raw,value=mytag-{{branch}}`,
`type=raw,value=mytag-{{date 'YYYYMMDD'}}`,
`type=raw,value=mytag-{{date 'YYYYMMDD-HHmmss' tz='Asia/Tokyo'}}`,
`type=raw,value=mytag-src-{{commit_date 'YYYYMMDD'}}`,
`type=raw,value=mytag-tag-{{tag}}`,
`type=raw,value=mytag-baseref-{{base_ref}}`,
`type=raw,value=mytag-defbranch,enable={{is_default_branch}}`
],
labels: [
"org.opencontainers.image.created={{commit_date 'YYYY-MM-DDTHH:mm:ss.SSS[Z]'}}"
]
} as Inputs,
{
main: 'mytag-master',
partial: [
'mytag-20200110',
'mytag-20200110-093000',
'mytag-src-20200110',
'mytag-tag-',
'mytag-baseref-',
'mytag-defbranch'
@ -788,6 +805,7 @@ describe('push', () => {
'mytag-master',
'mytag-20200110',
'mytag-20200110-093000',
'mytag-src-20200110',
'mytag-tag-',
'mytag-baseref-',
'mytag-defbranch'
@ -803,6 +821,40 @@ describe('push', () => {
"org.opencontainers.image.version=mytag-master"
],
undefined
],
[
'push22',
'event_push_dev.env',
{
images: ['org/app'],
tags: [
`type=edge,branch=master`,
`type=sha,format=long`,
`type=raw,value=notdefbranch,enable={{is_not_default_branch}}`
],
} as Inputs,
{
main: 'notdefbranch',
partial: [
'sha-860c1904a1ce19322e91ac35af1ab07466440c37'
],
latest: false
} as Version,
[
"org/app:notdefbranch",
"org/app:sha-860c1904a1ce19322e91ac35af1ab07466440c37"
],
[
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description=This your first repo!",
"org.opencontainers.image.licenses=MIT",
"org.opencontainers.image.revision=860c1904a1ce19322e91ac35af1ab07466440c37",
"org.opencontainers.image.source=https://github.com/octocat/Hello-World",
"org.opencontainers.image.title=Hello-World",
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
"org.opencontainers.image.version=notdefbranch"
],
undefined
]
])('given %p with %p event', tagsLabelsTest);
});
@ -1919,6 +1971,69 @@ describe('tag', () => {
"org.opencontainers.image.version=1.1.1"
],
undefined
],
[
'tag34',
'event_tag_p1-v1.0.0.env',
{
images: ['org/app'],
tags: [
`type=semver,pattern={{version}},"match=v(\\d.\\d.\\d)$"`,
]
} as Inputs,
{
main: '1.0.0',
partial: [],
latest: true
} as Version,
[
'org/app:1.0.0',
'org/app:latest'
],
[
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description=This your first repo!",
"org.opencontainers.image.licenses=MIT",
"org.opencontainers.image.revision=860c1904a1ce19322e91ac35af1ab07466440c37",
"org.opencontainers.image.source=https://github.com/octocat/Hello-World",
"org.opencontainers.image.title=Hello-World",
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
"org.opencontainers.image.version=1.0.0"
],
undefined
],
[
'push35',
'event_push_master.env',
{
images: ['user/app'],
tags: [
`type=semver,pattern={{version}},value=p1/v1.2.3,"match=v(\\d.\\d.\\d)$"`,
`type=pep440,pattern={{version}},value=p1/v1.2.3,"match=v(\\d.\\d.\\d)$"`,
`type=edge`
],
} as Inputs,
{
main: '1.2.3',
partial: ['edge'],
latest: true
} as Version,
[
'user/app:1.2.3',
'user/app:edge',
'user/app:latest'
],
[
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description=This your first repo!",
"org.opencontainers.image.licenses=MIT",
"org.opencontainers.image.revision=266574110acf203503badf966df2ea24b5d732d7",
"org.opencontainers.image.source=https://github.com/octocat/Hello-World",
"org.opencontainers.image.title=Hello-World",
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
"org.opencontainers.image.version=1.2.3"
],
undefined
]
])('given %p with %p event', tagsLabelsTest);
});
@ -2621,6 +2736,35 @@ describe('pr', () => {
],
undefined
],
[
'pr12',
'event_pull_request.env',
{
images: ['org/app'],
tags: [
`type=raw,value={{commit_date YYYY-MM-DD-HHmmSS}}`,
]
} as Inputs,
{
main: "2020-01-10T00-30-00Z",
partial: [],
latest: false
} as Version,
[
'org/app:2020-01-10T00-30-00Z'
],
[
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description=This your first repo!",
"org.opencontainers.image.licenses=MIT",
"org.opencontainers.image.revision=a9c8c5828b91be19d9728548b24759e352367ef1",
"org.opencontainers.image.source=https://github.com/octocat/Hello-World",
"org.opencontainers.image.title=Hello-World",
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
"org.opencontainers.image.version=2020-01-10T00-30-00Z"
],
undefined
],
])('given %p with %p event', tagsLabelsTest);
});
@ -2969,13 +3113,41 @@ describe('pr-head-sha', () => {
"org.opencontainers.image.version=mytag-master"
]
],
[
'pr12',
'event_pull_request.env',
{
images: ['org/app'],
tags: [
`type=raw,value=src-{{commit_date YYYY-MM-DD}}`,
]
} as Inputs,
{
main: "src-2020-01-10T00-30-00Z",
partial: [],
latest: false
} as Version,
[
"org/app:src-2020-01-10T00-30-00Z",
],
[
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description=This your first repo!",
"org.opencontainers.image.licenses=MIT",
"org.opencontainers.image.revision=3370e228f2209994d57af4427fe64e71bb79ac96",
"org.opencontainers.image.source=https://github.com/octocat/Hello-World",
"org.opencontainers.image.title=Hello-World",
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
"org.opencontainers.image.version=src-2020-01-10T00-30-00Z",
]
],
])('given %p with %p event', async (name: string, envFile: string, inputs: Inputs, exVersion: Version, exTags: Array<string>, exLabelsAnnotations: Array<string>) => {
process.env = dotenv.parse(fs.readFileSync(path.join(__dirname, 'fixtures', envFile)));
process.env.DOCKER_METADATA_PR_HEAD_SHA = 'true';
const toolkit = new Toolkit();
const repo = await toolkit.github.repoData();
const meta = new Meta({...getInputs(), ...inputs}, await getContext(ContextSource.workflow), repo);
const meta = new Meta({...getInputs(), ...inputs}, await getContext(ContextSource.workflow, toolkit), repo);
const version = meta.version;
expect(version).toEqual(exVersion);
@ -3028,16 +3200,20 @@ describe('schedule', () => {
{
images: ['user/app'],
tags: [
`type=schedule,pattern={{date 'YYYYMMDD'}}`
`type=schedule,pattern={{date 'YYYYMMDD'}}`,
`type=schedule,pattern=source-date-{{commit_date 'YYYY-MM-DD'}}`
]
} as Inputs,
{
main: '20200110',
partial: [],
partial: [
"source-date-2020-01-10",
],
latest: false
} as Version,
[
'user/app:20200110'
'user/app:20200110',
'user/app:source-date-2020-01-10'
],
[
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
@ -3221,16 +3397,20 @@ describe('schedule', () => {
{
images: ['user/app'],
tags: [
`type=schedule,pattern={{date 'YYYYMMDD-HHmmss' tz='Asia/Tokyo'}}`
`type=schedule,pattern={{date 'YYYYMMDD-HHmmss' tz='Asia/Tokyo'}}`,
`type=schedule,pattern=src-{{commit_date 'YYYYMMDD-HHmmss' tz='Asia/Tokyo'}}`,
]
} as Inputs,
{
main: '20200110-093000',
partial: [],
partial: [
"src-20200110-093000",
],
latest: false
} as Version,
[
'user/app:20200110-093000'
'user/app:20200110-093000',
'user/app:src-20200110-093000'
],
[
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
@ -3312,6 +3492,39 @@ describe('release', () => {
"org.opencontainers.image.version=v1.1.1"
],
undefined
],
[
'release03',
'event_release_created.env',
{
images: ['user/app'],
tags: [
`type=raw,value=src-{{commit_date 'YYYYMMDD-HHmmss'}}`,
`type=raw,value={{date 'YYYYMMDD-HHmmss'}}`,
]
} as Inputs,
{
"main": "src-20200110-003000",
partial: [
"20200110-003000",
],
"latest": false,
} as Version,
[
"user/app:src-20200110-003000",
"user/app:20200110-003000",
],
[
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description=This your first repo!",
"org.opencontainers.image.licenses=MIT",
"org.opencontainers.image.revision=860c1904a1ce19322e91ac35af1ab07466440c37",
"org.opencontainers.image.source=https://github.com/octocat/Hello-World",
"org.opencontainers.image.title=Hello-World",
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
"org.opencontainers.image.version=src-20200110-003000",
],
undefined
]
])('given %s with %p event', tagsLabelsTest);
});
@ -3723,6 +3936,12 @@ describe('json', () => {
"user/app:custom",
"user/app:tags"
],
"tag-names": [
"dev",
"my",
"custom",
"tags"
],
"labels": {
"foo": "",
"org.opencontainers.image.created": "2020-01-10T00:30:00.000Z",
@ -3761,6 +3980,10 @@ describe('json', () => {
"user/app:dev",
"user/app:my",
],
"tag-names": [
"dev",
"my",
],
"labels": {
"org.opencontainers.image.created": "2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description": "This your first repo!",
@ -3804,6 +4027,13 @@ describe('json', () => {
"user/app:tags",
"user/app:latest"
],
"tag-names": [
"release1",
"my",
"custom",
"tags",
"latest"
],
"labels": {
"org.opencontainers.image.created": "2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description": "This your first repo!",
@ -3848,6 +4078,12 @@ describe('json', () => {
"user/app:custom",
"user/app:tags"
],
"tag-names": [
"20200110",
"my",
"custom",
"tags"
],
"labels": {
"org.opencontainers.image.created": "2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description": "This your first repo!",
@ -3901,6 +4137,15 @@ describe('json', () => {
"ghcr.io/user/app:tags",
"ghcr.io/user/app:latest"
],
"tag-names": [
"1.1.1",
"1.1",
"1",
"my",
"custom",
"tags",
"latest",
],
"labels": {
"org.opencontainers.image.created": "2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description": "This your first repo!",
@ -3943,6 +4188,11 @@ describe('json', () => {
"ghcr.io/user/app:custom",
"ghcr.io/user/app:tags"
],
"tag-names": [
"my",
"custom",
"tags",
],
"labels": {
"org.opencontainers.image.created": "2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description": "This your first repo!",
@ -3983,6 +4233,10 @@ describe('json', () => {
"org/app:v1.1.1",
"org/app:latest"
],
"tag-names": [
"v1.1.1",
"latest"
],
"labels": {
"maintainer": "CrazyMax",
"org.opencontainers.image.created": "2020-01-10T00:30:00.000Z",
@ -4012,7 +4266,7 @@ describe('json', () => {
const toolkit = new Toolkit();
const repo = await toolkit.github.repoData();
const meta = new Meta({...getInputs(), ...inputs}, await getContext(ContextSource.workflow), repo);
const meta = new Meta({...getInputs(), ...inputs}, await getContext(ContextSource.workflow,toolkit), repo);
const jsonOutput = meta.getJSON(['manifest']);
expect(jsonOutput).toEqual(exJSON);
@ -4528,7 +4782,7 @@ describe('bakeFile', () => {
const toolkit = new Toolkit();
const repo = await toolkit.github.repoData();
const meta = new Meta({...getInputs(), ...inputs}, await getContext(ContextSource.workflow), repo);
const meta = new Meta({...getInputs(), ...inputs}, await getContext(ContextSource.workflow,toolkit), repo);
const bakeFileTags = meta.getBakeFile('tags');
expect(JSON.parse(fs.readFileSync(bakeFileTags, 'utf8'))).toEqual(exBakeTags);
@ -4592,7 +4846,7 @@ describe('bakeFileTagsLabels', () => {
const toolkit = new Toolkit();
const repo = await toolkit.github.repoData();
const meta = new Meta({...getInputs(), ...inputs}, await getContext(ContextSource.workflow), repo);
const meta = new Meta({...getInputs(), ...inputs}, await getContext(ContextSource.workflow,toolkit), repo);
const bakeFile = meta.getBakeFileTagsLabels();
expect(JSON.parse(fs.readFileSync(bakeFile, 'utf8'))).toEqual(exBakeDefinition);
@ -4638,8 +4892,10 @@ describe('sepTags', () => {
process.env = dotenv.parse(fs.readFileSync(path.join(__dirname, 'fixtures', envFile)));
const toolkit = new Toolkit();
const repo = await toolkit.github.repoData();
const meta = new Meta({...getInputs(), ...inputs}, await getContext(ContextSource.workflow), repo);
const meta = new Meta({...getInputs(), ...inputs}, await getContext(ContextSource.workflow, toolkit), repo);
expect(meta.getTags().join(inputs.sepTags)).toEqual(expTags);
});

View File

@ -32,7 +32,8 @@ describe('transform', () => {
"priority": DefaultPriorities[Type.Semver],
"enable": "true",
"pattern": "{{version}}",
"value": ""
"value": "",
"match": ""
}
},
{
@ -147,7 +148,8 @@ describe('parse', () => {
"priority": DefaultPriorities[Type.Semver],
"enable": "true",
"pattern": "{{version}}",
"value": ""
"value": "",
"match": ""
}
} as Tag,
false
@ -160,7 +162,8 @@ describe('parse', () => {
"priority": "1",
"enable": "true",
"pattern": "{{version}}",
"value": ""
"value": "",
"match": ""
}
} as Tag,
false
@ -173,7 +176,22 @@ describe('parse', () => {
"priority": "1",
"enable": "true",
"pattern": "{{version}}",
"value": "v1.0.0"
"value": "v1.0.0",
"match": ""
}
} as Tag,
false
],
[
`type=semver,priority=1,enable=true,pattern={{version}},value=p1/v1.0.0,"match=v(\\d.\\d.\\d)$"`,
{
type: Type.Semver,
attrs: {
"priority": "1",
"enable": "true",
"pattern": "{{version}}",
"value": "p1/v1.0.0",
"match": "v(\\d.\\d.\\d)$"
}
} as Tag,
false

View File

@ -48,6 +48,8 @@ outputs:
description: 'Generated Docker image version'
tags:
description: 'Generated Docker tags'
tag-names:
description: 'Generated Docker tag names without image base name'
labels:
description: 'Generated Docker labels'
annotations:
@ -59,7 +61,7 @@ outputs:
bake-file-labels:
description: 'Bake definition file with labels'
bake-file-annotations:
description: 'Bake definiton file with annotations'
description: 'Bake definition file with annotations'
bake-file:
description: 'Bake definition file with tags and labels'

View File

@ -5,9 +5,16 @@ ARG NODE_VERSION=20
FROM node:${NODE_VERSION}-alpine AS base
RUN apk add --no-cache cpio findutils git
WORKDIR /src
RUN --mount=type=bind,target=.,rw \
--mount=type=cache,target=/src/.yarn/cache <<EOT
corepack enable
yarn --version
yarn config set --home enableTelemetry 0
EOT
FROM base AS deps
RUN --mount=type=bind,target=.,rw \
--mount=type=cache,target=/src/.yarn/cache \
--mount=type=cache,target=/src/node_modules \
yarn install && mkdir /vendor && cp yarn.lock /vendor
@ -20,7 +27,7 @@ RUN --mount=type=bind,target=.,rw <<EOT
git add -A
cp -rf /vendor/* .
if [ -n "$(git status --porcelain -- yarn.lock)" ]; then
echo >&2 'ERROR: Vendor result differs. Please vendor your package with "docker buildx bake vendor-update"'
echo >&2 'ERROR: Vendor result differs. Please vendor your package with "docker buildx bake vendor"'
git status --porcelain -- yarn.lock
exit 1
fi
@ -28,6 +35,7 @@ EOT
FROM deps AS build
RUN --mount=type=bind,target=.,rw \
--mount=type=cache,target=/src/.yarn/cache \
--mount=type=cache,target=/src/node_modules \
yarn run build && mkdir /out && cp -Rf dist /out/
@ -48,22 +56,23 @@ EOT
FROM deps AS format
RUN --mount=type=bind,target=.,rw \
--mount=type=cache,target=/src/.yarn/cache \
--mount=type=cache,target=/src/node_modules \
yarn run format \
&& mkdir /out && find . -name '*.ts' -not -path './node_modules/*' | cpio -pdm /out
&& mkdir /out && find . -name '*.ts' -not -path './node_modules/*' -not -path './.yarn/*' | cpio -pdm /out
FROM scratch AS format-update
COPY --from=format /out /
FROM deps AS lint
RUN --mount=type=bind,target=.,rw \
--mount=type=cache,target=/src/.yarn/cache \
--mount=type=cache,target=/src/node_modules \
yarn run lint
FROM deps AS test
ENV RUNNER_TEMP=/tmp/github_runner
ENV RUNNER_TOOL_CACHE=/tmp/github_tool_cache
RUN --mount=type=bind,target=.,rw \
--mount=type=cache,target=/src/.yarn/cache \
--mount=type=cache,target=/src/node_modules \
yarn run test --coverage --coverageDirectory=/tmp/coverage

300
dist/606.index.js generated vendored Normal file
View File

@ -0,0 +1,300 @@
"use strict";
exports.id = 606;
exports.ids = [606];
exports.modules = {
/***/ 606:
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ pMap)
/* harmony export */ });
/* unused harmony exports pMapIterable, pMapSkip */
async function pMap(
iterable,
mapper,
{
concurrency = Number.POSITIVE_INFINITY,
stopOnError = true,
signal,
} = {},
) {
return new Promise((resolve_, reject_) => {
if (iterable[Symbol.iterator] === undefined && iterable[Symbol.asyncIterator] === undefined) {
throw new TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof iterable})`);
}
if (typeof mapper !== 'function') {
throw new TypeError('Mapper function is required');
}
if (!((Number.isSafeInteger(concurrency) && concurrency >= 1) || concurrency === Number.POSITIVE_INFINITY)) {
throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${concurrency}\` (${typeof concurrency})`);
}
const result = [];
const errors = [];
const skippedIndexesMap = new Map();
let isRejected = false;
let isResolved = false;
let isIterableDone = false;
let resolvingCount = 0;
let currentIndex = 0;
const iterator = iterable[Symbol.iterator] === undefined ? iterable[Symbol.asyncIterator]() : iterable[Symbol.iterator]();
const signalListener = () => {
reject(signal.reason);
};
const cleanup = () => {
signal?.removeEventListener('abort', signalListener);
};
const resolve = value => {
resolve_(value);
cleanup();
};
const reject = reason => {
isRejected = true;
isResolved = true;
reject_(reason);
cleanup();
};
if (signal) {
if (signal.aborted) {
reject(signal.reason);
}
signal.addEventListener('abort', signalListener, {once: true});
}
const next = async () => {
if (isResolved) {
return;
}
const nextItem = await iterator.next();
const index = currentIndex;
currentIndex++;
// Note: `iterator.next()` can be called many times in parallel.
// This can cause multiple calls to this `next()` function to
// receive a `nextItem` with `done === true`.
// The shutdown logic that rejects/resolves must be protected
// so it runs only one time as the `skippedIndex` logic is
// non-idempotent.
if (nextItem.done) {
isIterableDone = true;
if (resolvingCount === 0 && !isResolved) {
if (!stopOnError && errors.length > 0) {
reject(new AggregateError(errors)); // eslint-disable-line unicorn/error-message
return;
}
isResolved = true;
if (skippedIndexesMap.size === 0) {
resolve(result);
return;
}
const pureResult = [];
// Support multiple `pMapSkip`'s.
for (const [index, value] of result.entries()) {
if (skippedIndexesMap.get(index) === pMapSkip) {
continue;
}
pureResult.push(value);
}
resolve(pureResult);
}
return;
}
resolvingCount++;
// Intentionally detached
(async () => {
try {
const element = await nextItem.value;
if (isResolved) {
return;
}
const value = await mapper(element, index);
// Use Map to stage the index of the element.
if (value === pMapSkip) {
skippedIndexesMap.set(index, value);
}
result[index] = value;
resolvingCount--;
await next();
} catch (error) {
if (stopOnError) {
reject(error);
} else {
errors.push(error);
resolvingCount--;
// In that case we can't really continue regardless of `stopOnError` state
// since an iterable is likely to continue throwing after it throws once.
// If we continue calling `next()` indefinitely we will likely end up
// in an infinite loop of failed iteration.
try {
await next();
} catch (error) {
reject(error);
}
}
}
})();
};
// Create the concurrent runners in a detached (non-awaited)
// promise. We need this so we can await the `next()` calls
// to stop creating runners before hitting the concurrency limit
// if the iterable has already been marked as done.
// NOTE: We *must* do this for async iterators otherwise we'll spin up
// infinite `next()` calls by default and never start the event loop.
(async () => {
for (let index = 0; index < concurrency; index++) {
try {
// eslint-disable-next-line no-await-in-loop
await next();
} catch (error) {
reject(error);
break;
}
if (isIterableDone || isRejected) {
break;
}
}
})();
});
}
function pMapIterable(
iterable,
mapper,
{
concurrency = Number.POSITIVE_INFINITY,
backpressure = concurrency,
} = {},
) {
if (iterable[Symbol.iterator] === undefined && iterable[Symbol.asyncIterator] === undefined) {
throw new TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof iterable})`);
}
if (typeof mapper !== 'function') {
throw new TypeError('Mapper function is required');
}
if (!((Number.isSafeInteger(concurrency) && concurrency >= 1) || concurrency === Number.POSITIVE_INFINITY)) {
throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${concurrency}\` (${typeof concurrency})`);
}
if (!((Number.isSafeInteger(backpressure) && backpressure >= concurrency) || backpressure === Number.POSITIVE_INFINITY)) {
throw new TypeError(`Expected \`backpressure\` to be an integer from \`concurrency\` (${concurrency}) and up or \`Infinity\`, got \`${backpressure}\` (${typeof backpressure})`);
}
return {
async * [Symbol.asyncIterator]() {
const iterator = iterable[Symbol.asyncIterator] === undefined ? iterable[Symbol.iterator]() : iterable[Symbol.asyncIterator]();
const promises = [];
let runningMappersCount = 0;
let isDone = false;
let index = 0;
function trySpawn() {
if (isDone || !(runningMappersCount < concurrency && promises.length < backpressure)) {
return;
}
const promise = (async () => {
const {done, value} = await iterator.next();
if (done) {
return {done: true};
}
runningMappersCount++;
// Spawn if still below concurrency and backpressure limit
trySpawn();
try {
const returnValue = await mapper(await value, index++);
runningMappersCount--;
if (returnValue === pMapSkip) {
const index = promises.indexOf(promise);
if (index > 0) {
promises.splice(index, 1);
}
}
// Spawn if still below backpressure limit and just dropped below concurrency limit
trySpawn();
return {done: false, value: returnValue};
} catch (error) {
isDone = true;
return {error};
}
})();
promises.push(promise);
}
trySpawn();
while (promises.length > 0) {
const {error, done, value} = await promises[0]; // eslint-disable-line no-await-in-loop
promises.shift();
if (error) {
throw error;
}
if (done) {
return;
}
// Spawn if just dropped below backpressure limit and below the concurrency limit
trySpawn();
if (value === pMapSkip) {
continue;
}
yield value;
}
},
};
}
const pMapSkip = Symbol('skip');
/***/ })
};
;
//# sourceMappingURL=606.index.js.map

1
dist/606.index.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

145
dist/index.js generated vendored

File diff suppressed because one or more lines are too long

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long

2179
dist/licenses.txt generated vendored

File diff suppressed because it is too large Load Diff

2
dist/sourcemap-register.js generated vendored

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,15 @@
target "_common" {
args = {
BUILDKIT_CONTEXT_KEEP_GIT_DIR = 1
}
}
group "default" {
targets = ["build"]
}
group "pre-checkin" {
targets = ["vendor-update", "format", "build"]
targets = ["vendor", "format", "build"]
}
group "validate" {
@ -11,42 +17,49 @@ group "validate" {
}
target "build" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile"
target = "build-update"
output = ["."]
}
target "build-validate" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile"
target = "build-validate"
output = ["type=cacheonly"]
}
target "format" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile"
target = "format-update"
output = ["."]
}
target "lint" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile"
target = "lint"
output = ["type=cacheonly"]
}
target "vendor-update" {
target "vendor" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile"
target = "vendor-update"
output = ["."]
}
target "vendor-validate" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile"
target = "vendor-validate"
output = ["type=cacheonly"]
}
target "test" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile"
target = "test-coverage"
output = ["./coverage"]

View File

@ -1,17 +1,16 @@
{
"name": "docker-metadata-action",
"description": "GitHub Action to extract metadata (tags, labels) for Docker",
"main": "lib/main.js",
"main": "src/main.ts",
"scripts": {
"build": "ncc build src/main.ts --source-map --minify --license licenses.txt",
"build": "ncc build --source-map --minify --license licenses.txt",
"lint": "yarn run prettier && yarn run eslint",
"format": "yarn run prettier:fix && yarn run eslint:fix",
"eslint": "eslint --max-warnings=0 .",
"eslint:fix": "eslint --fix .",
"prettier": "prettier --check \"./**/*.ts\"",
"prettier:fix": "prettier --write \"./**/*.ts\"",
"test": "jest",
"all": "yarn run build && yarn run format && yarn test"
"test": "jest"
},
"repository": {
"type": "git",
@ -26,33 +25,33 @@
],
"author": "Docker Inc.",
"license": "Apache-2.0",
"packageManager": "yarn@4.9.2",
"dependencies": {
"@actions/core": "^1.10.1",
"@actions/github": "^6.0.0",
"@docker/actions-toolkit": "^0.16.1",
"@actions/core": "^1.11.1",
"@actions/github": "^6.0.1",
"@docker/actions-toolkit": "^0.68.0",
"@renovate/pep440": "^1.0.0",
"csv-parse": "^5.5.3",
"csv-parse": "^6.1.0",
"handlebars": "^4.7.8",
"moment": "^2.30.1",
"moment-timezone": "^0.5.44",
"semver": "^7.5.4"
"moment-timezone": "^0.6.0",
"semver": "^7.7.3"
},
"devDependencies": {
"@types/csv-parse": "^1.2.2",
"@types/node": "^20.5.9",
"@types/semver": "^7.5.1",
"@typescript-eslint/eslint-plugin": "^6.6.0",
"@typescript-eslint/parser": "^6.6.0",
"@vercel/ncc": "^0.38.0",
"dotenv": "^16.3.1",
"eslint": "^8.48.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-jest": "^27.2.3",
"eslint-plugin-prettier": "^5.0.0",
"jest": "^29.6.4",
"prettier": "^3.0.3",
"ts-jest": "^29.1.1",
"ts-node": "^10.9.1",
"typescript": "^5.2.2"
"@types/node": "^20.19.9",
"@types/semver": "^7.7.1",
"@typescript-eslint/eslint-plugin": "^7.18.0",
"@typescript-eslint/parser": "^7.18.0",
"@vercel/ncc": "^0.38.3",
"dotenv": "^16.6.1",
"eslint": "^8.57.1",
"eslint-config-prettier": "^9.1.2",
"eslint-plugin-jest": "^28.14.0",
"eslint-plugin-prettier": "^5.5.4",
"jest": "^29.7.0",
"prettier": "^3.6.2",
"ts-jest": "^29.4.1",
"ts-node": "^10.9.2",
"typescript": "^5.9.2"
}
}

View File

@ -1,8 +1,13 @@
import * as core from '@actions/core';
import {Context} from '@actions/github/lib/context';
import {Context as GithubContext} from '@actions/github/lib/context';
import {Util} from '@docker/actions-toolkit/lib/util';
import {Git} from '@docker/actions-toolkit/lib/git';
import {GitHub} from '@docker/actions-toolkit/lib/github';
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit';
export interface Context extends GithubContext {
commitDate: Date;
}
export interface Inputs {
context: ContextSource;
@ -39,10 +44,10 @@ export enum ContextSource {
git = 'git'
}
export async function getContext(source: ContextSource): Promise<Context> {
export async function getContext(source: ContextSource, toolkit: Toolkit): Promise<Context> {
switch (source) {
case ContextSource.workflow:
return getContextFromWorkflow();
return await getContextFromWorkflow(toolkit);
case ContextSource.git:
return await getContextFromGit();
default:
@ -50,7 +55,7 @@ export async function getContext(source: ContextSource): Promise<Context> {
}
}
function getContextFromWorkflow(): Context {
async function getContextFromWorkflow(toolkit: Toolkit): Promise<Context> {
const context = GitHub.context;
// Needs to override Git reference with pr ref instead of upstream branch ref
@ -69,9 +74,63 @@ function getContextFromWorkflow(): Context {
}
}
return context;
return {
commitDate: await getCommitDateFromWorkflow(context.sha, toolkit),
...context
} as Context;
}
async function getContextFromGit(): Promise<Context> {
return await Git.context();
const ctx = await Git.context();
return {
commitDate: await Git.commitDate(ctx.sha),
...ctx
} as Context;
}
async function getCommitDateFromWorkflow(sha: string, toolkit: Toolkit): Promise<Date> {
const event = GitHub.context.payload as unknown as {
// branch push
commits?: Array<{
timestamp: string;
// commit sha
id: string;
}>;
// tags
head_commit?: {
timestamp: string;
// commit sha
id: string;
};
};
if (event.commits) {
const commitDate = event.commits.find(x => x.id === sha)?.timestamp;
if (commitDate) {
return new Date(commitDate);
}
}
if (event.head_commit) {
if (event.head_commit.id === sha) {
return new Date(event.head_commit.timestamp);
}
}
// fallback to github api for commit date
try {
const commit = await toolkit.github.octokit.rest.repos.getCommit({
owner: GitHub.context.repo.owner,
repo: GitHub.context.repo.repo,
ref: sha
});
if (commit.data.commit.committer?.date) {
return new Date(commit.data.commit.committer.date);
}
throw new Error('Committer date not found');
} catch (error) {
core.debug(`Failed to get commit date from GitHub API: ${error.message}`);
return new Date();
}
}

View File

@ -2,22 +2,19 @@ import * as fs from 'fs';
import * as core from '@actions/core';
import * as actionsToolkit from '@docker/actions-toolkit';
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit';
import {Util} from '@docker/actions-toolkit/lib/util';
import {getContext, getInputs, Inputs} from './context';
import {Meta, Version} from './meta';
function setOutput(name: string, value: string) {
core.setOutput(name, value);
core.exportVariable(`DOCKER_METADATA_OUTPUT_${name.replace(/\W/g, '_').toUpperCase()}`, value);
}
actionsToolkit.run(
// main
async () => {
const inputs: Inputs = getInputs();
const toolkit = new Toolkit({githubToken: inputs.githubToken});
const context = await getContext(inputs.context);
const context = await getContext(inputs.context, toolkit);
const repo = await toolkit.github.repoData();
const setOutput = outputEnvEnabled() ? setOutputAndEnv : core.setOutput;
await core.group(`Context info`, async () => {
core.info(`eventName: ${context.eventName}`);
@ -28,6 +25,7 @@ actionsToolkit.run(
core.info(`actor: ${context.actor}`);
core.info(`runNumber: ${context.runNumber}`);
core.info(`runId: ${context.runId}`);
core.info(`commitDate: ${context.commitDate}`);
});
if (core.isDebug()) {
@ -49,7 +47,7 @@ actionsToolkit.run(
setOutput('version', version.main || '');
// Docker tags
const tags: Array<string> = meta.getTags();
const tags = meta.getTags();
if (tags.length == 0) {
core.warning('No Docker tag has been generated. Check tags input.');
} else {
@ -60,6 +58,7 @@ actionsToolkit.run(
});
}
setOutput('tags', tags.join(inputs.sepTags));
setOutput('tag-names', meta.getTags(true).join(inputs.sepTags));
// Docker labels
const labels: Array<string> = meta.getLabels();
@ -108,3 +107,15 @@ actionsToolkit.run(
setOutput(`bake-file`, `${meta.getBakeFileTagsLabels()}`);
}
);
function setOutputAndEnv(name: string, value: string) {
core.setOutput(name, value);
core.exportVariable(`DOCKER_METADATA_OUTPUT_${name.replace(/\W/g, '_').toUpperCase()}`, value);
}
function outputEnvEnabled(): boolean {
if (process.env.DOCKER_METADATA_SET_OUTPUT_ENV) {
return Util.parseBool(process.env.DOCKER_METADATA_SET_OUTPUT_ENV);
}
return true;
}

View File

@ -5,15 +5,16 @@ import moment from 'moment-timezone';
import * as pep440 from '@renovate/pep440';
import * as semver from 'semver';
import * as core from '@actions/core';
import {Context} from '@actions/github/lib/context';
import {Context as ToolkitContext} from '@docker/actions-toolkit/lib/context';
import {GitHubRepo} from '@docker/actions-toolkit/lib/types/github';
import {Inputs} from './context';
import {Inputs, Context} from './context';
import * as icl from './image';
import * as tcl from './tag';
import * as fcl from './flavor';
const defaultShortShaLength = 7;
export interface Version {
main: string | undefined;
partial: string[];
@ -113,6 +114,7 @@ export class Meta {
}
const currentDate = this.date;
const commitDate = this.context.commitDate;
const vraw = this.setValue(
handlebars.compile(tag.attrs['pattern'])({
date: function (format, options) {
@ -128,6 +130,20 @@ export class Meta {
}
});
return m.tz(tz).format(format);
},
commit_date: function (format, options) {
const m = moment(commitDate);
let tz = 'UTC';
Object.keys(options.hash).forEach(key => {
switch (key) {
case 'tz':
tz = options.hash[key];
break;
default:
throw new Error(`Unknown ${key} attribute`);
}
});
return m.tz(tz).format(format);
}
}),
tag
@ -145,8 +161,20 @@ export class Meta {
if (tag.attrs['value'].length > 0) {
vraw = this.setGlobalExp(tag.attrs['value']);
} else {
vraw = this.context.ref.replace(/^refs\/tags\//g, '').replace(/\//g, '-');
vraw = this.context.ref.replace(/^refs\/tags\//g, '');
}
if (tag.attrs['match'].length > 0) {
const tmatch = vraw.match(tag.attrs['match']);
if (!tmatch) {
core.warning(`${tag.attrs['match']} does not match ${vraw}.`);
} else {
vraw = tmatch[1];
}
}
vraw = vraw.replace(/\//g, '-');
if (!semver.valid(vraw)) {
core.warning(`${vraw} is not a valid semver. More info: https://semver.org/`);
return version;
@ -179,8 +207,20 @@ export class Meta {
if (tag.attrs['value'].length > 0) {
vraw = this.setGlobalExp(tag.attrs['value']);
} else {
vraw = this.context.ref.replace(/^refs\/tags\//g, '').replace(/\//g, '-');
vraw = this.context.ref.replace(/^refs\/tags\//g, '');
}
if (tag.attrs['match'].length > 0) {
const tmatch = vraw.match(tag.attrs['match']);
if (!tmatch) {
core.warning(`${tag.attrs['match']} does not match ${vraw}.`);
} else {
vraw = tmatch[1];
}
}
vraw = vraw.replace(/\//g, '-');
if (!pep440.valid(vraw)) {
core.warning(`${vraw} does not conform to PEP 440. More info: https://www.python.org/dev/peps/pep-0440`);
return version;
@ -307,7 +347,7 @@ export class Meta {
let val = this.context.sha;
if (tag.attrs['format'] === tcl.ShaFormat.Short) {
val = this.context.sha.substring(0, 7);
val = Meta.shortSha(this.context.sha);
}
const vraw = this.setValue(val, tag);
@ -356,9 +396,10 @@ export class Meta {
return val;
}
private setGlobalExp(val): string {
private setGlobalExp(val: string): string {
const context = this.context;
const currentDate = this.date;
const commitDate = this.context.commitDate;
return handlebars.compile(val)({
branch: function () {
if (!/^refs\/heads\//.test(context.ref)) {
@ -373,7 +414,7 @@ export class Meta {
return context.ref.replace(/^refs\/tags\//g, '');
},
sha: function () {
return context.sha.substring(0, 7);
return Meta.shortSha(context.sha);
},
base_ref: function () {
if (/^refs\/tags\//.test(context.ref) && context.payload?.base_ref != undefined) {
@ -386,6 +427,20 @@ export class Meta {
}
return '';
},
commit_date: function (format, options) {
const m = moment(commitDate);
let tz = 'UTC';
Object.keys(options.hash).forEach(key => {
switch (key) {
case 'tz':
tz = options.hash[key];
break;
default:
throw new Error(`Unknown ${key} attribute`);
}
});
return m.tz(tz).format(format);
},
is_default_branch: function () {
const branch = context.ref.replace(/^refs\/heads\//g, '');
// TODO: "base_ref" is available in the push payload but doesn't always seem to
@ -408,6 +463,9 @@ export class Meta {
}
return 'false';
},
is_not_default_branch: function () {
return this.is_default_branch() === 'false' ? 'true' : 'false';
},
date: function (format, options) {
const m = moment(currentDate);
let tz = 'UTC';
@ -436,14 +494,30 @@ export class Meta {
return images;
}
public getTags(): Array<string> {
public getTags(namesOnly?: boolean): Array<string> {
if (!this.version.main) {
return [];
}
if (namesOnly) {
return this.generateTags(this.version.main);
}
const generateTags = (imageName: string, version: string): Array<string> => {
const tags: Array<string> = [];
const prefix = imageName !== '' ? `${imageName}:` : '';
const images = this.getImageNames();
if (images.length > 0) {
for (const imageName of images) {
tags.push(...this.generateTags(this.version.main, imageName));
}
} else {
tags.push(...this.generateTags(this.version.main));
}
return tags;
}
private generateTags(version: string, imageName?: string): Array<string> {
const tags: Array<string> = [];
const prefix = imageName ? `${imageName}:` : '';
tags.push(`${prefix}${version}`);
for (const partial of this.version.partial) {
tags.push(`${prefix}${partial}`);
@ -453,18 +527,6 @@ export class Meta {
tags.push(`${prefix}${Meta.sanitizeTag(latestTag)}`);
}
return tags;
};
const tags: Array<string> = [];
const images = this.getImageNames();
if (images.length > 0) {
for (const imageName of images) {
tags.push(...generateTags(imageName, this.version.main));
}
} else {
tags.push(...generateTags('', this.version.main));
}
return tags;
}
public getLabels(): Array<string> {
@ -486,7 +548,9 @@ export class Meta {
`org.opencontainers.image.revision=${this.context.sha || ''}`,
`org.opencontainers.image.licenses=${this.repo.license?.spdx_id || ''}`
];
res.push(...extra);
extra.forEach(label => {
res.push(this.setGlobalExp(label));
});
return Array.from(
new Map<string, string>(
@ -508,6 +572,7 @@ export class Meta {
}
return {
tags: this.getTags(),
'tag-names': this.getTags(true),
labels: this.getLabels().reduce((res, label) => {
const matches = label.match(/([^=]*)=(.*)/);
if (!matches) {
@ -593,4 +658,18 @@ export class Meta {
private static sanitizeTag(tag: string): string {
return tag.replace(/[^a-zA-Z0-9._-]+/g, '-');
}
private static shortSha(sha: string): string {
let shortShaLength = defaultShortShaLength;
if (process.env.DOCKER_METADATA_SHORT_SHA_LENGTH) {
if (isNaN(Number(process.env.DOCKER_METADATA_SHORT_SHA_LENGTH))) {
throw new Error(`DOCKER_METADATA_SHORT_SHA_LENGTH is not a valid number: ${process.env.DOCKER_METADATA_SHORT_SHA_LENGTH}`);
}
shortShaLength = Number(process.env.DOCKER_METADATA_SHORT_SHA_LENGTH);
}
if (shortShaLength >= sha.length) {
return sha;
}
return sha.substring(0, shortShaLength);
}
}

View File

@ -104,10 +104,10 @@ export function Parse(s: string): Tag {
const value = parts[1];
switch (key) {
case 'type': {
if (!Object.values(Type).includes(value)) {
if (!Object.values(Type).includes(value as Type)) {
throw new Error(`Unknown tag type attribute: ${value}`);
}
tag.type = value;
tag.type = value as Type;
break;
}
default: {
@ -137,6 +137,9 @@ export function Parse(s: string): Tag {
if (!Object.prototype.hasOwnProperty.call(tag.attrs, 'value')) {
tag.attrs['value'] = '';
}
if (!Object.prototype.hasOwnProperty.call(tag.attrs, 'match')) {
tag.attrs['match'] = '';
}
break;
}
case Type.Match: {

11545
yarn.lock

File diff suppressed because it is too large Load Diff