Compare commits

..

105 Commits

Author SHA1 Message Date
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
26 changed files with 3654 additions and 7527 deletions

View File

@@ -31,7 +31,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Docker meta name: Docker meta
uses: ./ uses: ./
@@ -43,7 +43,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
@@ -80,7 +80,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
@@ -116,7 +116,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
@@ -150,7 +150,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
@@ -181,7 +181,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
@@ -204,7 +204,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
@@ -225,7 +225,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
@@ -255,7 +255,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
@@ -269,6 +269,8 @@ jobs:
images: | images: |
${{ env.DOCKER_IMAGE }} ${{ env.DOCKER_IMAGE }}
ghcr.io/name/app ghcr.io/name/app
labels: |
org.opencontainers.image.created={{commit_date 'YYYY-MM-DDTHH:mm:ss.SSS[Z]'}}
tags: | tags: |
type=sha type=sha
type=raw,value=gexp-branch-{{branch}} type=raw,value=gexp-branch-{{branch}}
@@ -276,13 +278,14 @@ jobs:
type=raw,value=gexp-tag-{{tag}} type=raw,value=gexp-tag-{{tag}}
type=raw,value=gexp-baseref-{{base_ref}} type=raw,value=gexp-baseref-{{base_ref}}
type=raw,value=gexp-defbranch,enable={{is_default_branch}} type=raw,value=gexp-defbranch,enable={{is_default_branch}}
type=raw,value=gexp-notdefbranch,enable={{is_not_default_branch}}
json: json:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
@@ -317,7 +320,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
@@ -365,7 +368,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
@@ -390,12 +393,12 @@ jobs:
type=sha type=sha
- -
name: Build name: Build
uses: docker/bake-action@v5 uses: docker/bake-action@v6
with: with:
files: | files: |
./test/docker-bake.hcl ./test/docker-bake.hcl
${{ steps.docker_meta.outputs.bake-file-tags }} cwd://${{ steps.docker_meta.outputs.bake-file-tags }}
${{ steps.docker_meta.outputs.bake-file-labels }} cwd://${{ steps.docker_meta.outputs.bake-file-labels }}
targets: | targets: |
release release
@@ -410,7 +413,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
@@ -428,7 +431,7 @@ jobs:
sep-tags: ${{ matrix.sep }} sep-tags: ${{ matrix.sep }}
- -
name: Tags name: Tags
uses: actions/github-script@v7 uses: actions/github-script@v8
with: with:
script: | script: |
console.log(`${{ steps.meta.outputs.tags }}`); console.log(`${{ steps.meta.outputs.tags }}`);
@@ -438,7 +441,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
@@ -470,12 +473,38 @@ jobs:
DOCKER_METADATA_OUTPUT_ANNOTATIONS DOCKER_METADATA_OUTPUT_ANNOTATIONS
DOCKER_METADATA_OUTPUT_JSON DOCKER_METADATA_OUTPUT_JSON
no-output-env:
runs-on: ubuntu-latest
env:
DOCKER_METADATA_SET_OUTPUT_ENV: false
steps:
-
name: Checkout
uses: actions/checkout@v5
-
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: bake-annotations:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
@@ -502,12 +531,12 @@ jobs:
DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index
- -
name: Build name: Build
uses: docker/bake-action@v5 uses: docker/bake-action@v6
with: with:
files: | files: |
./test/docker-bake.hcl ./test/docker-bake.hcl
${{ steps.docker_meta.outputs.bake-file-tags }} cwd://${{ steps.docker_meta.outputs.bake-file-tags }}
${{ steps.docker_meta.outputs.bake-file-annotations }} cwd://${{ steps.docker_meta.outputs.bake-file-annotations }}
targets: | targets: |
release release
@@ -516,7 +545,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
@@ -537,12 +566,12 @@ jobs:
name: Print envs name: Print envs
run: env|sort run: env|sort
bake-cwd: bake-path-context:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
@@ -554,13 +583,13 @@ jobs:
uses: ./ uses: ./
- -
name: Build name: Build
uses: docker/bake-action@v5 uses: docker/bake-action@v6
with: with:
source: "{{defaultContext}}" source: .
files: | files: |
./test/docker-bake.hcl ./test/docker-bake.hcl
cwd://${{ steps.docker_meta.outputs.bake-file-tags }} ${{ steps.docker_meta.outputs.bake-file-tags }}
cwd://${{ steps.docker_meta.outputs.bake-file-labels }} ${{ steps.docker_meta.outputs.bake-file-labels }}
targets: | targets: |
release release
@@ -575,7 +604,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
@@ -599,7 +628,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Dump context name: Dump context
uses: crazy-max/ghaction-dump-context@v2 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

View File

@@ -15,7 +15,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Publish name: Publish
uses: actions/publish-immutable-action@v0.0.4 uses: actions/publish-immutable-action@v0.0.4

View File

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

View File

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

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +1,9 @@
# https://yarnpkg.com/configuration/yarnrc
compressionLevel: mixed
enableGlobalCache: false
enableHardenedMode: true
logFilters: logFilters:
- code: YN0013 - code: YN0013
level: discard level: discard
@@ -5,9 +11,7 @@ logFilters:
level: discard level: discard
- code: YN0076 - code: YN0076
level: discard level: discard
- code: YN0086
level: discard
nodeLinker: node-modules nodeLinker: node-modules
plugins:
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
spec: "@yarnpkg/plugin-interactive-tools"

152
README.md
View File

@@ -44,6 +44,7 @@ ___
* [`{{sha}}`](#sha) * [`{{sha}}`](#sha)
* [`{{base_ref}}`](#base_ref) * [`{{base_ref}}`](#base_ref)
* [`{{is_default_branch}}`](#is_default_branch) * [`{{is_default_branch}}`](#is_default_branch)
* [`{{is_not_default_branch}}`](#is_not_default_branch)
* [`{{date '<format>' tz='<timezone>'}}`](#date-format-tztimezone) * [`{{date '<format>' tz='<timezone>'}}`](#date-format-tztimezone)
* [`{{commit_date '<format>' tz='<timezone>'}}`](#commit_date-format-tztimezone) * [`{{commit_date '<format>' tz='<timezone>'}}`](#commit_date-format-tztimezone)
* [Major version zero](#major-version-zero) * [Major version zero](#major-version-zero)
@@ -76,7 +77,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Docker meta name: Docker meta
id: meta id: meta
@@ -92,7 +93,7 @@ jobs:
password: ${{ secrets.DOCKERHUB_TOKEN }} password: ${{ secrets.DOCKERHUB_TOKEN }}
- -
name: Build and push name: Build and push
uses: docker/build-push-action@v5 uses: docker/build-push-action@v6
with: with:
context: . context: .
push: ${{ github.event_name != 'pull_request' }} push: ${{ github.event_name != 'pull_request' }}
@@ -130,7 +131,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- -
name: Docker meta name: Docker meta
id: meta id: meta
@@ -152,7 +153,7 @@ jobs:
password: ${{ secrets.DOCKERHUB_TOKEN }} password: ${{ secrets.DOCKERHUB_TOKEN }}
- -
name: Build and push name: Build and push
uses: docker/build-push-action@v5 uses: docker/build-push-action@v6
with: with:
context: . context: .
push: ${{ github.event_name != 'pull_request' }} push: ${{ github.event_name != 'pull_request' }}
@@ -206,9 +207,6 @@ jobs:
docker: docker:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
-
name: Checkout
uses: actions/checkout@v4
- -
name: Docker meta name: Docker meta
id: meta id: meta
@@ -224,11 +222,11 @@ jobs:
type=sha type=sha
- -
name: Build name: Build
uses: docker/bake-action@v4 uses: docker/bake-action@v6
with: with:
files: | files: |
./docker-bake.hcl ./docker-bake.hcl
${{ steps.meta.outputs.bake-file }} cwd://${{ steps.meta.outputs.bake-file }}
targets: build targets: build
``` ```
@@ -271,29 +269,12 @@ similar to the previous one:
```yaml ```yaml
- -
name: Build name: Build
uses: docker/bake-action@v4 uses: docker/bake-action@v6
with: with:
files: | files: |
./docker-bake.hcl ./docker-bake.hcl
${{ steps.meta.outputs.bake-file-tags }} cwd://${{ steps.meta.outputs.bake-file-tags }}
${{ steps.meta.outputs.bake-file-labels }} cwd://${{ steps.meta.outputs.bake-file-labels }}
targets: build
```
If you're building a [remote Bake definition](https://docs.docker.com/build/bake/remote-definition/)
using a [Git context](https://github.com/docker/bake-action?tab=readme-ov-file#git-context),
you must specify the location of the metadata-only bake file using a `cwd://`
prefix:
```yaml
-
name: Build
uses: docker/bake-action@v4
with:
source: "${{ github.server_url }}/${{ github.repository }}.git#${{ github.ref }}"
files: |
./docker-bake.hcl
cwd://${{ steps.meta.outputs.bake-file }}
targets: build targets: build
``` ```
@@ -303,6 +284,7 @@ prefix:
The following inputs can be used as `step.with` keys: The following inputs can be used as `step.with` keys:
> [!NOTE]
> `List` type is a newline-delimited string > `List` type is a newline-delimited string
> ```yaml > ```yaml
> labels: | > labels: |
@@ -318,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 | | `tags` | List | List of [tags](#tags-input) as key-value pair attributes |
| `flavor` | List | [Flavor](#flavor-input) to apply | | `flavor` | List | [Flavor](#flavor-input) to apply |
| `labels` | List | List of custom labels | | `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-tags` | String | Separator to use for tags output (default `\n`) |
| `sep-labels` | String | Separator to use for labels 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`) | | `sep-annotations` | String | Separator to use for annotations output (default `\n`) |
@@ -332,6 +314,7 @@ The following outputs are available:
|-------------------------|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| |-------------------------|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `version` | String | Docker image version | | `version` | String | Docker image version |
| `tags` | String | Docker tags | | `tags` | String | Docker tags |
| `tag-names` | String | Docker tag names without image base name |
| `labels` | String | Docker labels | | `labels` | String | Docker labels |
| `annotations` | String | [Annotations](https://github.com/moby/buildkit/blob/master/docs/annotations.md) | | `annotations` | String | [Annotations](https://github.com/moby/buildkit/blob/master/docs/annotations.md) |
| `json` | String | JSON output of tags and labels | | `json` | String | JSON output of tags and labels |
@@ -339,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-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) | | `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_VERSION`
* `DOCKER_METADATA_OUTPUT_TAGS` * `DOCKER_METADATA_OUTPUT_TAGS`
@@ -353,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/): So it can be used with our [Docker Build Push action](https://github.com/docker/build-push-action/):
```yaml ```yaml
- uses: docker/build-push-action@v5 - uses: docker/build-push-action@v6
with: with:
build-args: | build-args: |
DOCKER_METADATA_OUTPUT_JSON DOCKER_METADATA_OUTPUT_JSON
@@ -361,11 +344,12 @@ So it can be used with our [Docker Build Push action](https://github.com/docker/
### environment variables ### environment variables
| Name | Type | Description | | 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_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 `12`, but can be increased for larger repositories. | | `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_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 ## `context` input
@@ -512,6 +496,8 @@ tags: |
type=semver,pattern={{version}} type=semver,pattern={{version}}
# use custom value instead of git tag # use custom value instead of git tag
type=semver,pattern={{version}},value=v1.0.0 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) Will be used on a [push tag event](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#push)
@@ -527,18 +513,21 @@ with the following expressions:
* `minor` ; minor version identifier * `minor` ; minor version identifier
* `patch` ; patch version identifier * `patch` ; patch version identifier
| Git tag | Pattern | Output | | Git tag | Pattern | Match | Output |
|--------------------|----------------------------------------------------------|----------------------| |------------------|-----------------------|----------------|------------------|
| `v1.2.3` | `{{raw}}` | `v1.2.3` | | `v1.2.3` | `{{raw}}` | | `v1.2.3` |
| `v1.2.3` | `{{version}}` | `1.2.3` | | `v1.2.3` | `{{version}}` | | `1.2.3` |
| `v1.2.3` | `{{major}}.{{minor}}` | `1.2` | | `v1.2.3` | `{{major}}.{{minor}}` | | `1.2` |
| `v1.2.3` | `v{{major}}` | `v1` | | `v1.2.3` | `v{{major}}` | | `v1` |
| `v1.2.3` | `{{minor}}` | `2` | | `v1.2.3` | `{{minor}}` | | `2` |
| `v1.2.3` | `{{patch}}` | `3` | | `v1.2.3` | `{{patch}}` | | `3` |
| `v2.0.8-beta.67` | `{{raw}}` | `v2.0.8-beta.67` | | `p1/v1.2.3` | `{{version}}` | `v(\d.\d.\d)$` | `1.2.3` |
| `v2.0.8-beta.67` | `{{version}}` | `2.0.8-beta.67` | | `v2.0.8-beta.67` | `{{raw}}` | | `v2.0.8-beta.67` |
| `v2.0.8-beta.67` | `{{major}}.{{minor}}` | `2.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}}` > *Pre-release (rc, beta, alpha) will only extend `{{version}}` (or `{{raw}}`
> if specified) as tag because they are updated frequently, and contain many > 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 > breaking changes that are (by the author's design) not yet fit for public
@@ -548,7 +537,7 @@ Extended attributes and default values:
```yaml ```yaml
tags: | tags: |
type=semver,enable=true,priority=900,prefix=,suffix=,pattern=,value= type=semver,enable=true,priority=900,prefix=,suffix=,pattern=,value=,match=
``` ```
### `type=pep440` ### `type=pep440`
@@ -559,6 +548,8 @@ tags: |
type=pep440,pattern={{version}} type=pep440,pattern={{version}}
# use custom value instead of git tag # use custom value instead of git tag
type=pep440,pattern={{version}},value=1.0.0 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) Will be used on a [push tag event](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#push)
@@ -574,20 +565,22 @@ with the following expressions:
* `minor` ; minor version identifier * `minor` ; minor version identifier
* `patch` ; patch version identifier * `patch` ; patch version identifier
| Git tag | Pattern | Output | | Git tag | Pattern | Match | Output |
|--------------------|----------------------------------------------------------|----------------------| |--------------|-----------------------|----------------|----------------|
| `1.2.3` | `{{raw}}` | `1.2.3` | | `1.2.3` | `{{raw}}` | | `1.2.3` |
| `1.2.3` | `{{version}}` | `1.2.3` | | `1.2.3` | `{{version}}` | | `1.2.3` |
| `v1.2.3` | `{{version}}` | `1.2.3` | | `v1.2.3` | `{{version}}` | | `1.2.3` |
| `1.2.3` | `{{major}}.{{minor}}` | `1.2` | | `1.2.3` | `{{major}}.{{minor}}` | | `1.2` |
| `1.2.3` | `v{{major}}` | `v1` | | `1.2.3` | `v{{major}}` | | `v1` |
| `v1.2.3rc2` | `{{raw}}` | `v1.2.3rc2` | | `v1.2.3rc2` | `{{raw}}` | | `v1.2.3rc2` |
| `1.2.3rc2` | `{{version}}` | `1.2.3rc2` | | `1.2.3rc2` | `{{version}}` | | `1.2.3rc2` |
| `1.2.3rc2` | `{{major}}.{{minor}}` | `1.2.3rc2`* | | `p1/v1.2.3` | `{{version}}` | `v(\d.\d.\d)$` | `1.2.3` |
| `1.2.3post1` | `{{major}}.{{minor}}` | `1.2.3.post1`* | | `1.2.3rc2` | `{{major}}.{{minor}}` | | `1.2.3rc2`* |
| `1.2.3beta2` | `{{major}}.{{minor}}` | `1.2.3b2`* | | `1.2.3post1` | `{{major}}.{{minor}}` | | `1.2.3.post1`* |
| `1.0dev4` | `{{major}}.{{minor}}` | `1.0.dev4`* | | `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 > *dev/pre/post release will only extend `{{version}}` (or `{{raw}}` if
> specified) as tag because they are updated frequently, and contain many > 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 > breaking changes that are (by the author's design) not yet fit for public
@@ -725,9 +718,9 @@ tags: |
``` ```
Output Git short commit (or long if specified) as Docker tag like Output Git short commit (or long if specified) as Docker tag like
`sha-860c1904a1ce`. `sha-860c190`.
By default, the length of the short commit SHA is `12` characters. You can By default, the length of the short commit SHA is `7` characters. You can
increase this length for larger repositories by setting the increase this length for larger repositories by setting the
[`DOCKER_METADATA_SHORT_SHA_LENGTH` environment variable](#environment-variables): [`DOCKER_METADATA_SHORT_SHA_LENGTH` environment variable](#environment-variables):
@@ -742,7 +735,7 @@ increase this length for larger repositories by setting the
tags: | tags: |
type=sha type=sha
env: env:
DOCKER_METADATA_SHORT_SHA_LENGTH: 16 DOCKER_METADATA_SHORT_SHA_LENGTH: 12
``` ```
Extended attributes and default values: Extended attributes and default values:
@@ -777,6 +770,7 @@ generated by default (`auto` mode) for:
* [`type=ref,event=tag`](#typeref) * [`type=ref,event=tag`](#typeref)
* [`type=semver,pattern=...`](#typesemver) * [`type=semver,pattern=...`](#typesemver)
* [`type=pep440,pattern=...`](#typepep440)
* [`type=match,pattern=...`](#typematch) * [`type=match,pattern=...`](#typematch)
For conditionally tagging with latest for a specific branch name, e.g. if your For conditionally tagging with latest for a specific branch name, e.g. if your
@@ -818,7 +812,8 @@ Each tags `type` attribute has a default priority:
### Global expressions ### Global expressions
The following [Handlebars' template](https://handlebarsjs.com/guide/) 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 ```yaml
tags: | tags: |
@@ -828,6 +823,13 @@ tags: |
type=raw,value=mytag-{{branch}}-{{sha}} 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}}` #### `{{branch}}`
Returns the branch name that triggered the workflow run. Will be empty if not Returns the branch name that triggered the workflow run. Will be empty if not
@@ -868,6 +870,7 @@ workflow run. Will be empty for a branch reference:
| `push` | `refs/heads/my/branch` | | | `push` | `refs/heads/my/branch` | |
| `push tag`* | `refs/tags/v1.2.3` | `master` | | `push tag`* | `refs/tags/v1.2.3` | `master` |
> [!IMPORTANT]
> *`base_ref` is available in the push payload but doesn't always seem to > *`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 > 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). > [not documented in GitHub docs](https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#push).
@@ -879,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 Returns `true` if the branch that triggered the workflow run is the default
one, otherwise `false`. 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>'}}` #### `{{date '<format>' tz='<timezone>'}}`
Returns the current date rendered by its [moment format](https://momentjs.com/docs/#/displaying/format/). Returns the current date rendered by its [moment format](https://momentjs.com/docs/#/displaying/format/).
@@ -937,7 +945,7 @@ that you can reuse them further in your workflow using the [`fromJSON` function]
images: name/app images: name/app
- -
name: Build and push name: Build and push
uses: docker/build-push-action@v5 uses: docker/build-push-action@v6
with: with:
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }} labels: ${{ steps.meta.outputs.labels }}
@@ -984,7 +992,7 @@ of the `metadata-action`:
images: name/app images: name/app
- -
name: Build and push name: Build and push
uses: docker/build-push-action@v5 uses: docker/build-push-action@v6
with: with:
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}
annotations: ${{ steps.meta.outputs.annotations }} annotations: ${{ steps.meta.outputs.annotations }}
@@ -1000,12 +1008,12 @@ The same can be done with the [`bake-action`](https://github.com/docker/bake-act
images: name/app images: name/app
- -
name: Build name: Build
uses: docker/bake-action@v4 uses: docker/bake-action@v6
with: with:
files: | files: |
./docker-bake.hcl ./docker-bake.hcl
${{ steps.meta.outputs.bake-file-tags }} cwd://${{ steps.meta.outputs.bake-file-tags }}
${{ steps.meta.outputs.bake-file-annotations }} cwd://${{ steps.meta.outputs.bake-file-annotations }}
targets: build targets: build
``` ```
@@ -1031,7 +1039,7 @@ Please consult the documentation of your registry.
DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index
- -
name: Build and push name: Build and push
uses: docker/build-push-action@v5 uses: docker/build-push-action@v6
with: with:
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}
annotations: ${{ steps.meta.outputs.annotations }} 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

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

View File

@@ -319,14 +319,14 @@ describe('push', () => {
} as Inputs, } as Inputs,
{ {
main: 'dev', main: 'dev',
partial: ['sha-860c1904a1ce'], partial: ['sha-860c190'],
latest: false latest: false
} as Version, } as Version,
[ [
'org/app:dev', 'org/app:dev',
'org/app:sha-860c1904a1ce', 'org/app:sha-860c190',
'ghcr.io/user/app:dev', 'ghcr.io/user/app:dev',
'ghcr.io/user/app:sha-860c1904a1ce' 'ghcr.io/user/app:sha-860c190'
], ],
[ [
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
@@ -352,14 +352,14 @@ describe('push', () => {
} as Inputs, } as Inputs,
{ {
main: 'edge', main: 'edge',
partial: ['sha-266574110acf'], partial: ['sha-2665741'],
latest: false latest: false
} as Version, } as Version,
[ [
'org/app:edge', 'org/app:edge',
'org/app:sha-266574110acf', 'org/app:sha-2665741',
'ghcr.io/user/app:edge', 'ghcr.io/user/app:edge',
'ghcr.io/user/app:sha-266574110acf' 'ghcr.io/user/app:sha-2665741'
], ],
[ [
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
@@ -385,14 +385,14 @@ describe('push', () => {
} as Inputs, } as Inputs,
{ {
main: 'edge', main: 'edge',
partial: ['sha-860c1904a1ce'], partial: ['sha-860c190'],
latest: false latest: false
} as Version, } as Version,
[ [
'org/app:edge', 'org/app:edge',
'org/app:sha-860c1904a1ce', 'org/app:sha-860c190',
'ghcr.io/user/app:edge', 'ghcr.io/user/app:edge',
'ghcr.io/user/app:sha-860c1904a1ce' 'ghcr.io/user/app:sha-860c190'
], ],
[ [
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
@@ -417,13 +417,13 @@ describe('push', () => {
], ],
} as Inputs, } as Inputs,
{ {
main: 'sha-266574110acf', main: 'sha-2665741',
partial: [], partial: [],
latest: false latest: false
} as Version, } as Version,
[ [
'org/app:sha-266574110acf', 'org/app:sha-2665741',
'ghcr.io/user/app:sha-266574110acf' 'ghcr.io/user/app:sha-2665741'
], ],
[ [
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
@@ -433,7 +433,7 @@ describe('push', () => {
"org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World",
"org.opencontainers.image.title=Hello-World", "org.opencontainers.image.title=Hello-World",
"org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.url=https://github.com/octocat/Hello-World",
"org.opencontainers.image.version=sha-266574110acf" "org.opencontainers.image.version=sha-2665741"
], ],
undefined undefined
], ],
@@ -448,13 +448,13 @@ describe('push', () => {
], ],
} as Inputs, } as Inputs,
{ {
main: 'sha-983315b5e8d4', main: 'sha-983315b',
partial: [], partial: [],
latest: false latest: false
} as Version, } as Version,
[ [
'org/app:sha-983315b5e8d4', 'org/app:sha-983315b',
'ghcr.io/user/app:sha-983315b5e8d4' 'ghcr.io/user/app:sha-983315b'
], ],
[ [
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
@@ -464,7 +464,7 @@ describe('push', () => {
"org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World",
"org.opencontainers.image.title=Hello-World", "org.opencontainers.image.title=Hello-World",
"org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.url=https://github.com/octocat/Hello-World",
"org.opencontainers.image.version=sha-983315b5e8d4" "org.opencontainers.image.version=sha-983315b"
], ],
undefined undefined
], ],
@@ -785,6 +785,9 @@ describe('push', () => {
`type=raw,value=mytag-baseref-{{base_ref}}`, `type=raw,value=mytag-baseref-{{base_ref}}`,
`type=raw,value=mytag-defbranch,enable={{is_default_branch}}` `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, } as Inputs,
{ {
main: 'mytag-master', main: 'mytag-master',
@@ -818,6 +821,40 @@ describe('push', () => {
"org.opencontainers.image.version=mytag-master" "org.opencontainers.image.version=mytag-master"
], ],
undefined 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); ])('given %p with %p event', tagsLabelsTest);
}); });
@@ -1356,17 +1393,17 @@ describe('tag', () => {
} as Inputs, } as Inputs,
{ {
main: '1.0.0', main: '1.0.0',
partial: ['1.0', 'sha-860c1904a1ce'], partial: ['1.0', 'sha-860c190'],
latest: true latest: true
} as Version, } as Version,
[ [
'org/app:1.0.0', 'org/app:1.0.0',
'org/app:1.0', 'org/app:1.0',
'org/app:sha-860c1904a1ce', 'org/app:sha-860c190',
'org/app:latest', 'org/app:latest',
'ghcr.io/user/app:1.0.0', 'ghcr.io/user/app:1.0.0',
'ghcr.io/user/app:1.0', 'ghcr.io/user/app:1.0',
'ghcr.io/user/app:sha-860c1904a1ce', 'ghcr.io/user/app:sha-860c190',
'ghcr.io/user/app:latest' 'ghcr.io/user/app:latest'
], ],
[ [
@@ -1396,17 +1433,17 @@ describe('tag', () => {
} as Inputs, } as Inputs,
{ {
main: '1.0.0', main: '1.0.0',
partial: ['1.0', 'sha-860c1904a1ce'], partial: ['1.0', 'sha-860c190'],
latest: true latest: true
} as Version, } as Version,
[ [
'org/app:1.0.0', 'org/app:1.0.0',
'org/app:1.0', 'org/app:1.0',
'org/app:sha-860c1904a1ce', 'org/app:sha-860c190',
'org/app:latest', 'org/app:latest',
'ghcr.io/user/app:1.0.0', 'ghcr.io/user/app:1.0.0',
'ghcr.io/user/app:1.0', 'ghcr.io/user/app:1.0',
'ghcr.io/user/app:sha-860c1904a1ce', 'ghcr.io/user/app:sha-860c190',
'ghcr.io/user/app:latest' 'ghcr.io/user/app:latest'
], ],
[ [
@@ -1438,17 +1475,17 @@ describe('tag', () => {
} as Inputs, } as Inputs,
{ {
main: '1.0.0-dev', main: '1.0.0-dev',
partial: ['1.0', 'sha-860c1904a1ce-dev'], partial: ['1.0', 'sha-860c190-dev'],
latest: true latest: true
} as Version, } as Version,
[ [
'org/app:1.0.0-dev', 'org/app:1.0.0-dev',
'org/app:1.0', 'org/app:1.0',
'org/app:sha-860c1904a1ce-dev', 'org/app:sha-860c190-dev',
'org/app:latest', 'org/app:latest',
'ghcr.io/user/app:1.0.0-dev', 'ghcr.io/user/app:1.0.0-dev',
'ghcr.io/user/app:1.0', 'ghcr.io/user/app:1.0',
'ghcr.io/user/app:sha-860c1904a1ce-dev', 'ghcr.io/user/app:sha-860c190-dev',
'ghcr.io/user/app:latest' 'ghcr.io/user/app:latest'
], ],
[ [
@@ -1475,16 +1512,16 @@ describe('tag', () => {
] ]
} as Inputs, } as Inputs,
{ {
main: 'v1.1.1-860c1904a1ce-foo', main: 'v1.1.1-860c190-foo',
partial: [ partial: [
'master-foo' 'master-foo'
], ],
latest: false latest: false
} as Version, } as Version,
[ [
'org/app:v1.1.1-860c1904a1ce-foo', 'org/app:v1.1.1-860c190-foo',
'org/app:master-foo', 'org/app:master-foo',
'ghcr.io/user/app:v1.1.1-860c1904a1ce-foo', 'ghcr.io/user/app:v1.1.1-860c190-foo',
'ghcr.io/user/app:master-foo' 'ghcr.io/user/app:master-foo'
], ],
[ [
@@ -1495,7 +1532,7 @@ describe('tag', () => {
"org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World",
"org.opencontainers.image.title=Hello-World", "org.opencontainers.image.title=Hello-World",
"org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.url=https://github.com/octocat/Hello-World",
"org.opencontainers.image.version=v1.1.1-860c1904a1ce-foo" "org.opencontainers.image.version=v1.1.1-860c190-foo"
], ],
undefined undefined
], ],
@@ -1934,6 +1971,69 @@ describe('tag', () => {
"org.opencontainers.image.version=1.1.1" "org.opencontainers.image.version=1.1.1"
], ],
undefined 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); ])('given %p with %p event', tagsLabelsTest);
}); });
@@ -2349,14 +2449,14 @@ describe('pr', () => {
} as Inputs, } as Inputs,
{ {
main: 'pr-15', main: 'pr-15',
partial: ['sha-a9c8c5828b91'], partial: ['sha-a9c8c58'],
latest: false latest: false
} as Version, } as Version,
[ [
'org/app:pr-15', 'org/app:pr-15',
'org/app:sha-a9c8c5828b91', 'org/app:sha-a9c8c58',
'ghcr.io/user/app:pr-15', 'ghcr.io/user/app:pr-15',
'ghcr.io/user/app:sha-a9c8c5828b91' 'ghcr.io/user/app:sha-a9c8c58'
], ],
[ [
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
@@ -2381,14 +2481,14 @@ describe('pr', () => {
] ]
} as Inputs, } as Inputs,
{ {
main: 'sha-a9c8c5828b91', main: 'sha-a9c8c58',
partial: ['pr-15'], partial: ['pr-15'],
latest: false latest: false
} as Version, } as Version,
[ [
'org/app:sha-a9c8c5828b91', 'org/app:sha-a9c8c58',
'org/app:pr-15', 'org/app:pr-15',
'ghcr.io/user/app:sha-a9c8c5828b91', 'ghcr.io/user/app:sha-a9c8c58',
'ghcr.io/user/app:pr-15' 'ghcr.io/user/app:pr-15'
], ],
[ [
@@ -2399,7 +2499,7 @@ describe('pr', () => {
"org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World",
"org.opencontainers.image.title=Hello-World", "org.opencontainers.image.title=Hello-World",
"org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.url=https://github.com/octocat/Hello-World",
"org.opencontainers.image.version=sha-a9c8c5828b91" "org.opencontainers.image.version=sha-a9c8c58"
], ],
undefined undefined
], ],
@@ -2482,14 +2582,14 @@ describe('pr', () => {
] ]
} as Inputs, } as Inputs,
{ {
main: 'sha-266574110acf', main: 'sha-2665741',
partial: ['pr-15'], partial: ['pr-15'],
latest: false latest: false
} as Version, } as Version,
[ [
'org/app:sha-266574110acf', 'org/app:sha-2665741',
'org/app:pr-15', 'org/app:pr-15',
'ghcr.io/user/app:sha-266574110acf', 'ghcr.io/user/app:sha-2665741',
'ghcr.io/user/app:pr-15' 'ghcr.io/user/app:pr-15'
], ],
[ [
@@ -2500,7 +2600,7 @@ describe('pr', () => {
"org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World",
"org.opencontainers.image.title=Hello-World", "org.opencontainers.image.title=Hello-World",
"org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.url=https://github.com/octocat/Hello-World",
"org.opencontainers.image.version=sha-266574110acf" "org.opencontainers.image.version=sha-2665741"
], ],
undefined undefined
], ],
@@ -2554,14 +2654,14 @@ describe('pr', () => {
{ {
main: 'pr-15', main: 'pr-15',
partial: [ partial: [
'sha-266574110acf', 'sha-2665741',
'sha-266574110acf203503badf966df2ea24b5d732d7' 'sha-266574110acf203503badf966df2ea24b5d732d7'
], ],
latest: false latest: false
} as Version, } as Version,
[ [
'org/app:pr-15', 'org/app:pr-15',
'org/app:sha-266574110acf', 'org/app:sha-2665741',
'org/app:sha-266574110acf203503badf966df2ea24b5d732d7' 'org/app:sha-266574110acf203503badf966df2ea24b5d732d7'
], ],
[ [
@@ -2735,14 +2835,14 @@ describe('pr-head-sha', () => {
} as Inputs, } as Inputs,
{ {
main: 'pr-15', main: 'pr-15',
partial: ['sha-3370e228f220'], partial: ['sha-3370e22'],
latest: false latest: false
} as Version, } as Version,
[ [
'org/app:pr-15', 'org/app:pr-15',
'org/app:sha-3370e228f220', 'org/app:sha-3370e22',
'ghcr.io/user/app:pr-15', 'ghcr.io/user/app:pr-15',
'ghcr.io/user/app:sha-3370e228f220' 'ghcr.io/user/app:sha-3370e22'
], ],
[ [
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
@@ -2766,14 +2866,14 @@ describe('pr-head-sha', () => {
] ]
} as Inputs, } as Inputs,
{ {
main: 'sha-3370e228f220', main: 'sha-3370e22',
partial: ['pr-15'], partial: ['pr-15'],
latest: false latest: false
} as Version, } as Version,
[ [
'org/app:sha-3370e228f220', 'org/app:sha-3370e22',
'org/app:pr-15', 'org/app:pr-15',
'ghcr.io/user/app:sha-3370e228f220', 'ghcr.io/user/app:sha-3370e22',
'ghcr.io/user/app:pr-15' 'ghcr.io/user/app:pr-15'
], ],
[ [
@@ -2784,7 +2884,7 @@ describe('pr-head-sha', () => {
"org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World",
"org.opencontainers.image.title=Hello-World", "org.opencontainers.image.title=Hello-World",
"org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.url=https://github.com/octocat/Hello-World",
"org.opencontainers.image.version=sha-3370e228f220" "org.opencontainers.image.version=sha-3370e22"
] ]
], ],
[ [
@@ -2864,14 +2964,14 @@ describe('pr-head-sha', () => {
] ]
} as Inputs, } as Inputs,
{ {
main: 'sha-3370e228f220', main: 'sha-3370e22',
partial: ['pr-15'], partial: ['pr-15'],
latest: false latest: false
} as Version, } as Version,
[ [
'org/app:sha-3370e228f220', 'org/app:sha-3370e22',
'org/app:pr-15', 'org/app:pr-15',
'ghcr.io/user/app:sha-3370e228f220', 'ghcr.io/user/app:sha-3370e22',
'ghcr.io/user/app:pr-15' 'ghcr.io/user/app:pr-15'
], ],
[ [
@@ -2882,7 +2982,7 @@ describe('pr-head-sha', () => {
"org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World",
"org.opencontainers.image.title=Hello-World", "org.opencontainers.image.title=Hello-World",
"org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.url=https://github.com/octocat/Hello-World",
"org.opencontainers.image.version=sha-3370e228f220" "org.opencontainers.image.version=sha-3370e22"
] ]
], ],
[ [
@@ -2934,14 +3034,14 @@ describe('pr-head-sha', () => {
{ {
main: 'pr-15', main: 'pr-15',
partial: [ partial: [
'sha-3370e228f220', 'sha-3370e22',
'sha-3370e228f2209994d57af4427fe64e71bb79ac96' 'sha-3370e228f2209994d57af4427fe64e71bb79ac96'
], ],
latest: false latest: false
} as Version, } as Version,
[ [
'org/app:pr-15', 'org/app:pr-15',
'org/app:sha-3370e228f220', 'org/app:sha-3370e22',
'org/app:sha-3370e228f2209994d57af4427fe64e71bb79ac96' 'org/app:sha-3370e228f2209994d57af4427fe64e71bb79ac96'
], ],
[ [
@@ -3197,14 +3297,14 @@ describe('schedule', () => {
} as Inputs, } as Inputs,
{ {
main: 'nightly', main: 'nightly',
partial: ['sha-860c1904a1ce'], partial: ['sha-860c190'],
latest: false latest: false
} as Version, } as Version,
[ [
'org/app:nightly', 'org/app:nightly',
'org/app:sha-860c1904a1ce', 'org/app:sha-860c190',
'ghcr.io/user/app:nightly', 'ghcr.io/user/app:nightly',
'ghcr.io/user/app:sha-860c1904a1ce' 'ghcr.io/user/app:sha-860c190'
], ],
[ [
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z", "org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
@@ -3230,7 +3330,7 @@ describe('schedule', () => {
] ]
} as Inputs, } as Inputs,
{ {
main: 'sha-860c1904a1ce', main: 'sha-860c190',
partial: [ partial: [
'nightly', 'nightly',
'defbranch' 'defbranch'
@@ -3238,10 +3338,10 @@ describe('schedule', () => {
latest: false latest: false
} as Version, } as Version,
[ [
'org/app:sha-860c1904a1ce', 'org/app:sha-860c190',
'org/app:nightly', 'org/app:nightly',
'org/app:defbranch', 'org/app:defbranch',
'ghcr.io/user/app:sha-860c1904a1ce', 'ghcr.io/user/app:sha-860c190',
'ghcr.io/user/app:nightly', 'ghcr.io/user/app:nightly',
'ghcr.io/user/app:defbranch' 'ghcr.io/user/app:defbranch'
], ],
@@ -3253,7 +3353,7 @@ describe('schedule', () => {
"org.opencontainers.image.source=https://github.com/octocat/Hello-World", "org.opencontainers.image.source=https://github.com/octocat/Hello-World",
"org.opencontainers.image.title=Hello-World", "org.opencontainers.image.title=Hello-World",
"org.opencontainers.image.url=https://github.com/octocat/Hello-World", "org.opencontainers.image.url=https://github.com/octocat/Hello-World",
"org.opencontainers.image.version=sha-860c1904a1ce" "org.opencontainers.image.version=sha-860c190"
], ],
undefined undefined
], ],
@@ -3836,6 +3936,12 @@ describe('json', () => {
"user/app:custom", "user/app:custom",
"user/app:tags" "user/app:tags"
], ],
"tag-names": [
"dev",
"my",
"custom",
"tags"
],
"labels": { "labels": {
"foo": "", "foo": "",
"org.opencontainers.image.created": "2020-01-10T00:30:00.000Z", "org.opencontainers.image.created": "2020-01-10T00:30:00.000Z",
@@ -3874,6 +3980,10 @@ describe('json', () => {
"user/app:dev", "user/app:dev",
"user/app:my", "user/app:my",
], ],
"tag-names": [
"dev",
"my",
],
"labels": { "labels": {
"org.opencontainers.image.created": "2020-01-10T00:30:00.000Z", "org.opencontainers.image.created": "2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description": "This your first repo!", "org.opencontainers.image.description": "This your first repo!",
@@ -3917,6 +4027,13 @@ describe('json', () => {
"user/app:tags", "user/app:tags",
"user/app:latest" "user/app:latest"
], ],
"tag-names": [
"release1",
"my",
"custom",
"tags",
"latest"
],
"labels": { "labels": {
"org.opencontainers.image.created": "2020-01-10T00:30:00.000Z", "org.opencontainers.image.created": "2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description": "This your first repo!", "org.opencontainers.image.description": "This your first repo!",
@@ -3961,6 +4078,12 @@ describe('json', () => {
"user/app:custom", "user/app:custom",
"user/app:tags" "user/app:tags"
], ],
"tag-names": [
"20200110",
"my",
"custom",
"tags"
],
"labels": { "labels": {
"org.opencontainers.image.created": "2020-01-10T00:30:00.000Z", "org.opencontainers.image.created": "2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description": "This your first repo!", "org.opencontainers.image.description": "This your first repo!",
@@ -4014,6 +4137,15 @@ describe('json', () => {
"ghcr.io/user/app:tags", "ghcr.io/user/app:tags",
"ghcr.io/user/app:latest" "ghcr.io/user/app:latest"
], ],
"tag-names": [
"1.1.1",
"1.1",
"1",
"my",
"custom",
"tags",
"latest",
],
"labels": { "labels": {
"org.opencontainers.image.created": "2020-01-10T00:30:00.000Z", "org.opencontainers.image.created": "2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description": "This your first repo!", "org.opencontainers.image.description": "This your first repo!",
@@ -4056,6 +4188,11 @@ describe('json', () => {
"ghcr.io/user/app:custom", "ghcr.io/user/app:custom",
"ghcr.io/user/app:tags" "ghcr.io/user/app:tags"
], ],
"tag-names": [
"my",
"custom",
"tags",
],
"labels": { "labels": {
"org.opencontainers.image.created": "2020-01-10T00:30:00.000Z", "org.opencontainers.image.created": "2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description": "This your first repo!", "org.opencontainers.image.description": "This your first repo!",
@@ -4096,6 +4233,10 @@ describe('json', () => {
"org/app:v1.1.1", "org/app:v1.1.1",
"org/app:latest" "org/app:latest"
], ],
"tag-names": [
"v1.1.1",
"latest"
],
"labels": { "labels": {
"maintainer": "CrazyMax", "maintainer": "CrazyMax",
"org.opencontainers.image.created": "2020-01-10T00:30:00.000Z", "org.opencontainers.image.created": "2020-01-10T00:30:00.000Z",

View File

@@ -32,7 +32,8 @@ describe('transform', () => {
"priority": DefaultPriorities[Type.Semver], "priority": DefaultPriorities[Type.Semver],
"enable": "true", "enable": "true",
"pattern": "{{version}}", "pattern": "{{version}}",
"value": "" "value": "",
"match": ""
} }
}, },
{ {
@@ -147,7 +148,8 @@ describe('parse', () => {
"priority": DefaultPriorities[Type.Semver], "priority": DefaultPriorities[Type.Semver],
"enable": "true", "enable": "true",
"pattern": "{{version}}", "pattern": "{{version}}",
"value": "" "value": "",
"match": ""
} }
} as Tag, } as Tag,
false false
@@ -160,7 +162,8 @@ describe('parse', () => {
"priority": "1", "priority": "1",
"enable": "true", "enable": "true",
"pattern": "{{version}}", "pattern": "{{version}}",
"value": "" "value": "",
"match": ""
} }
} as Tag, } as Tag,
false false
@@ -173,7 +176,22 @@ describe('parse', () => {
"priority": "1", "priority": "1",
"enable": "true", "enable": "true",
"pattern": "{{version}}", "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, } as Tag,
false false

View File

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

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

96
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

4051
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,3 +1,9 @@
target "_common" {
args = {
BUILDKIT_CONTEXT_KEEP_GIT_DIR = 1
}
}
group "default" { group "default" {
targets = ["build"] targets = ["build"]
} }
@@ -11,42 +17,49 @@ group "validate" {
} }
target "build" { target "build" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "build-update" target = "build-update"
output = ["."] output = ["."]
} }
target "build-validate" { target "build-validate" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "build-validate" target = "build-validate"
output = ["type=cacheonly"] output = ["type=cacheonly"]
} }
target "format" { target "format" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "format-update" target = "format-update"
output = ["."] output = ["."]
} }
target "lint" { target "lint" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "lint" target = "lint"
output = ["type=cacheonly"] output = ["type=cacheonly"]
} }
target "vendor" { target "vendor" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "vendor-update" target = "vendor-update"
output = ["."] output = ["."]
} }
target "vendor-validate" { target "vendor-validate" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "vendor-validate" target = "vendor-validate"
output = ["type=cacheonly"] output = ["type=cacheonly"]
} }
target "test" { target "test" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "test-coverage" target = "test-coverage"
output = ["./coverage"] output = ["./coverage"]

View File

@@ -25,34 +25,33 @@
], ],
"author": "Docker Inc.", "author": "Docker Inc.",
"license": "Apache-2.0", "license": "Apache-2.0",
"packageManager": "yarn@3.6.3", "packageManager": "yarn@4.9.2",
"dependencies": { "dependencies": {
"@actions/core": "^1.11.1", "@actions/core": "^1.11.1",
"@actions/github": "^6.0.0", "@actions/github": "^6.0.1",
"@docker/actions-toolkit": "^0.44.0", "@docker/actions-toolkit": "^0.67.0",
"@renovate/pep440": "^1.0.0", "@renovate/pep440": "^1.0.0",
"csv-parse": "^5.5.6", "csv-parse": "^6.1.0",
"handlebars": "^4.7.8", "handlebars": "^4.7.8",
"moment": "^2.30.1", "moment": "^2.30.1",
"moment-timezone": "^0.5.46", "moment-timezone": "^0.6.0",
"semver": "^7.6.3" "semver": "^7.7.3"
}, },
"devDependencies": { "devDependencies": {
"@types/csv-parse": "^1.2.2", "@types/node": "^20.19.9",
"@types/node": "^20.12.12", "@types/semver": "^7.7.1",
"@types/semver": "^7.5.8", "@typescript-eslint/eslint-plugin": "^7.18.0",
"@typescript-eslint/eslint-plugin": "^7.9.0", "@typescript-eslint/parser": "^7.18.0",
"@typescript-eslint/parser": "^7.9.0", "@vercel/ncc": "^0.38.3",
"@vercel/ncc": "^0.38.1", "dotenv": "^16.6.1",
"dotenv": "^16.4.5", "eslint": "^8.57.1",
"eslint": "^8.57.0", "eslint-config-prettier": "^9.1.2",
"eslint-config-prettier": "^9.1.0", "eslint-plugin-jest": "^28.14.0",
"eslint-plugin-jest": "^28.5.0", "eslint-plugin-prettier": "^5.5.4",
"eslint-plugin-prettier": "^5.1.3",
"jest": "^29.7.0", "jest": "^29.7.0",
"prettier": "^3.2.5", "prettier": "^3.6.2",
"ts-jest": "^29.1.2", "ts-jest": "^29.4.1",
"ts-node": "^10.9.2", "ts-node": "^10.9.2",
"typescript": "^5.4.5" "typescript": "^5.9.2"
} }
} }

View File

@@ -119,11 +119,18 @@ async function getCommitDateFromWorkflow(sha: string, toolkit: Toolkit): Promise
} }
// fallback to github api for commit date // fallback to github api for commit date
const commit = await toolkit.github.octokit.request('GET /repos/{owner}/{repo}/commits/{commit_sha}', { try {
commit_sha: sha, const commit = await toolkit.github.octokit.rest.repos.getCommit({
owner: GitHub.context.repo.owner, owner: GitHub.context.repo.owner,
repo: GitHub.context.repo.repo repo: GitHub.context.repo.repo,
}); ref: sha
});
return new Date(commit.data.committer.date); 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,6 +2,7 @@ import * as fs from 'fs';
import * as core from '@actions/core'; import * as core from '@actions/core';
import * as actionsToolkit from '@docker/actions-toolkit'; import * as actionsToolkit from '@docker/actions-toolkit';
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit'; import {Toolkit} from '@docker/actions-toolkit/lib/toolkit';
import {Util} from '@docker/actions-toolkit/lib/util';
import {getContext, getInputs, Inputs} from './context'; import {getContext, getInputs, Inputs} from './context';
import {Meta, Version} from './meta'; import {Meta, Version} from './meta';
@@ -13,6 +14,7 @@ actionsToolkit.run(
const toolkit = new Toolkit({githubToken: inputs.githubToken}); const toolkit = new Toolkit({githubToken: inputs.githubToken});
const context = await getContext(inputs.context, toolkit); const context = await getContext(inputs.context, toolkit);
const repo = await toolkit.github.repoData(); const repo = await toolkit.github.repoData();
const setOutput = outputEnvEnabled() ? setOutputAndEnv : core.setOutput;
await core.group(`Context info`, async () => { await core.group(`Context info`, async () => {
core.info(`eventName: ${context.eventName}`); core.info(`eventName: ${context.eventName}`);
@@ -45,7 +47,7 @@ actionsToolkit.run(
setOutput('version', version.main || ''); setOutput('version', version.main || '');
// Docker tags // Docker tags
const tags: Array<string> = meta.getTags(); const tags = meta.getTags();
if (tags.length == 0) { if (tags.length == 0) {
core.warning('No Docker tag has been generated. Check tags input.'); core.warning('No Docker tag has been generated. Check tags input.');
} else { } else {
@@ -56,6 +58,7 @@ actionsToolkit.run(
}); });
} }
setOutput('tags', tags.join(inputs.sepTags)); setOutput('tags', tags.join(inputs.sepTags));
setOutput('tag-names', meta.getTags(true).join(inputs.sepTags));
// Docker labels // Docker labels
const labels: Array<string> = meta.getLabels(); const labels: Array<string> = meta.getLabels();
@@ -105,7 +108,14 @@ actionsToolkit.run(
} }
); );
function setOutput(name: string, value: string) { function setOutputAndEnv(name: string, value: string) {
core.setOutput(name, value); core.setOutput(name, value);
core.exportVariable(`DOCKER_METADATA_OUTPUT_${name.replace(/\W/g, '_').toUpperCase()}`, 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

@@ -13,7 +13,7 @@ import * as icl from './image';
import * as tcl from './tag'; import * as tcl from './tag';
import * as fcl from './flavor'; import * as fcl from './flavor';
const defaultShortShaLength = 12; const defaultShortShaLength = 7;
export interface Version { export interface Version {
main: string | undefined; main: string | undefined;
@@ -161,8 +161,20 @@ export class Meta {
if (tag.attrs['value'].length > 0) { if (tag.attrs['value'].length > 0) {
vraw = this.setGlobalExp(tag.attrs['value']); vraw = this.setGlobalExp(tag.attrs['value']);
} else { } 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)) { if (!semver.valid(vraw)) {
core.warning(`${vraw} is not a valid semver. More info: https://semver.org/`); core.warning(`${vraw} is not a valid semver. More info: https://semver.org/`);
return version; return version;
@@ -195,8 +207,20 @@ export class Meta {
if (tag.attrs['value'].length > 0) { if (tag.attrs['value'].length > 0) {
vraw = this.setGlobalExp(tag.attrs['value']); vraw = this.setGlobalExp(tag.attrs['value']);
} else { } 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)) { if (!pep440.valid(vraw)) {
core.warning(`${vraw} does not conform to PEP 440. More info: https://www.python.org/dev/peps/pep-0440`); core.warning(`${vraw} does not conform to PEP 440. More info: https://www.python.org/dev/peps/pep-0440`);
return version; return version;
@@ -372,7 +396,7 @@ export class Meta {
return val; return val;
} }
private setGlobalExp(val): string { private setGlobalExp(val: string): string {
const context = this.context; const context = this.context;
const currentDate = this.date; const currentDate = this.date;
const commitDate = this.context.commitDate; const commitDate = this.context.commitDate;
@@ -439,6 +463,9 @@ export class Meta {
} }
return 'false'; return 'false';
}, },
is_not_default_branch: function () {
return this.is_default_branch() === 'false' ? 'true' : 'false';
},
date: function (format, options) { date: function (format, options) {
const m = moment(currentDate); const m = moment(currentDate);
let tz = 'UTC'; let tz = 'UTC';
@@ -467,33 +494,37 @@ export class Meta {
return images; return images;
} }
public getTags(): Array<string> { public getTags(namesOnly?: boolean): Array<string> {
if (!this.version.main) { if (!this.version.main) {
return []; return [];
} }
if (namesOnly) {
const generateTags = (imageName: string, version: string): Array<string> => { return this.generateTags(this.version.main);
const tags: Array<string> = []; }
const prefix = imageName !== '' ? `${imageName}:` : '';
tags.push(`${prefix}${version}`);
for (const partial of this.version.partial) {
tags.push(`${prefix}${partial}`);
}
if (this.version.latest) {
const latestTag = `${this.flavor.prefixLatest ? this.flavor.prefix : ''}latest${this.flavor.suffixLatest ? this.flavor.suffix : ''}`;
tags.push(`${prefix}${Meta.sanitizeTag(latestTag)}`);
}
return tags;
};
const tags: Array<string> = []; const tags: Array<string> = [];
const images = this.getImageNames(); const images = this.getImageNames();
if (images.length > 0) { if (images.length > 0) {
for (const imageName of images) { for (const imageName of images) {
tags.push(...generateTags(imageName, this.version.main)); tags.push(...this.generateTags(this.version.main, imageName));
} }
} else { } else {
tags.push(...generateTags('', this.version.main)); 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}`);
}
if (this.version.latest) {
const latestTag = `${this.flavor.prefixLatest ? this.flavor.prefix : ''}latest${this.flavor.suffixLatest ? this.flavor.suffix : ''}`;
tags.push(`${prefix}${Meta.sanitizeTag(latestTag)}`);
} }
return tags; return tags;
} }
@@ -517,7 +548,9 @@ export class Meta {
`org.opencontainers.image.revision=${this.context.sha || ''}`, `org.opencontainers.image.revision=${this.context.sha || ''}`,
`org.opencontainers.image.licenses=${this.repo.license?.spdx_id || ''}` `org.opencontainers.image.licenses=${this.repo.license?.spdx_id || ''}`
]; ];
res.push(...extra); extra.forEach(label => {
res.push(this.setGlobalExp(label));
});
return Array.from( return Array.from(
new Map<string, string>( new Map<string, string>(
@@ -539,6 +572,7 @@ export class Meta {
} }
return { return {
tags: this.getTags(), tags: this.getTags(),
'tag-names': this.getTags(true),
labels: this.getLabels().reduce((res, label) => { labels: this.getLabels().reduce((res, label) => {
const matches = label.match(/([^=]*)=(.*)/); const matches = label.match(/([^=]*)=(.*)/);
if (!matches) { if (!matches) {

View File

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

5104
yarn.lock

File diff suppressed because it is too large Load Diff