renovate 44.182.2 → 44.184.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/data/mise-registry.js +8 -3
- package/dist/modules/manager/fingerprint.generated.js +1 -1
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/github-actions/artifacts.js +30 -7
- package/dist/modules/manager/github-actions/artifacts.js.map +1 -1
- package/dist/modules/manager/github-actions/schema.js +12 -2
- package/dist/modules/manager/github-actions/schema.js.map +1 -1
- package/package.json +2 -7
- package/renovate-schema.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
//#region lib/data/mise-registry.json
|
|
2
2
|
var mise_registry_default = {
|
|
3
|
-
meta: { "version": "2026.10.
|
|
3
|
+
meta: { "version": "2026.10.19 linux-x64 (2026-10-24)" },
|
|
4
4
|
tools: {
|
|
5
5
|
"1password": {
|
|
6
6
|
"aqua": "1password/cli",
|
|
@@ -1203,6 +1203,7 @@ var mise_registry_default = {
|
|
|
1203
1203
|
"asdf": "sneakybeaky/asdf-gomplate"
|
|
1204
1204
|
},
|
|
1205
1205
|
"google-java-format": { "aqua": "google/google-java-format" },
|
|
1206
|
+
"goose-agent": { "aqua": "aaif-goose/goose" },
|
|
1206
1207
|
"gopass": {
|
|
1207
1208
|
"aqua": "gopasspw/gopass",
|
|
1208
1209
|
"asdf": "trallnag/asdf-gopass"
|
|
@@ -2409,7 +2410,7 @@ var mise_registry_default = {
|
|
|
2409
2410
|
},
|
|
2410
2411
|
"protoc-gen-connect-go": {
|
|
2411
2412
|
"asdf": "dylanrayboss/asdf-protoc-gen-connect-go",
|
|
2412
|
-
"go": "connectrpc.com/connect/cmd/protoc-gen-connect-go"
|
|
2413
|
+
"go": "connectrpc.com/connect/v2/cmd/protoc-gen-connect-go"
|
|
2413
2414
|
},
|
|
2414
2415
|
"protoc-gen-go": {
|
|
2415
2416
|
"aqua": "protocolbuffers/protobuf-go/protoc-gen-go",
|
|
@@ -2475,6 +2476,7 @@ var mise_registry_default = {
|
|
|
2475
2476
|
"aqua": "rclone/rclone",
|
|
2476
2477
|
"asdf": "johnlayton/asdf-rclone"
|
|
2477
2478
|
},
|
|
2479
|
+
"rea": { "npm": "rea-agents" },
|
|
2478
2480
|
"rebar": { "github": "erlang/rebar3" },
|
|
2479
2481
|
"reckoner": {
|
|
2480
2482
|
"asdf": "FairwindsOps/asdf-reckoner",
|
|
@@ -3341,7 +3343,10 @@ var mise_registry_default = {
|
|
|
3341
3343
|
},
|
|
3342
3344
|
"xcodes": { "aqua": "XcodesOrg/xcodes" },
|
|
3343
3345
|
"xcresultparser": { "github": "a7ex/xcresultparser" },
|
|
3344
|
-
"xcsift": {
|
|
3346
|
+
"xcsift": {
|
|
3347
|
+
"github": "ldomaradzki/xcsift",
|
|
3348
|
+
"packslip": "github.com/ldomaradzki/xcsift"
|
|
3349
|
+
},
|
|
3345
3350
|
"xh": {
|
|
3346
3351
|
"aqua": "ducaale/xh",
|
|
3347
3352
|
"asdf": "NeoHsu/asdf-xh",
|
|
@@ -43,7 +43,7 @@ hashMap.set("fleet", "ffa222820f72c4eb4cdc4c229ae8c50433bee96f3b974f0633d5a7d1f6
|
|
|
43
43
|
hashMap.set("flux", "0e9d00a108f6e828ad207ee0213d56ecd64475df9bd87c23b0c2b2f80e00a392");
|
|
44
44
|
hashMap.set("fvm", "9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90");
|
|
45
45
|
hashMap.set("git-submodules", "f4e2c6ddf2fa93241665c5176faafb358eecfcb701e7478790c4d58853ed827a");
|
|
46
|
-
hashMap.set("github-actions", "
|
|
46
|
+
hashMap.set("github-actions", "1b248048481f044774c9cae732b19cd4bacf81770fdd5ddaf0ee0b5431677e8e");
|
|
47
47
|
hashMap.set("gitlabci", "a5e1e66ef461e1c1e71062f85f35a212417e23627f4b002810f9a98295d6e672");
|
|
48
48
|
hashMap.set("gitlabci-include", "8860a15ab516fde00694f9bd9bf56fce4addafe5a55b5ddb9a4ec477d301d351");
|
|
49
49
|
hashMap.set("glasskube", "93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','a52394a36ac5517f7330473c31d93aa05b2ce607c5e951b48f25a4693cd20a81');\nhashMap.set('ansible-galaxy','8e11293c8f61b4cbae77a3b1634a47213031c59df2c9833d89db65bf4e6edc64');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('apm','66c207983960b1a1f49b972f77efe3bfd3097e19b0ee4034ccf9ac6c0d13e05b');\nhashMap.set('argocd','cff9cd22257bc460ae4b9936570bf0ed5585f280a55d26629deaeeb0bfee8eb5');\nhashMap.set('asdf','430eb99b58171700c8a59c78b9e648575e9b176b781d90dd10a710f7b69015bb');\nhashMap.set('azure-pipelines','04a13dec4e08ba21004961c718072fde976226d65809fa3c838bf66ba93e5d5a');\nhashMap.set('batect','375d39b432013bedb1330cf40a2199dd822751b28578214f219e7bab98594b8d');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','4d4f1d9a6519ba552b316b396db13ff0654a2663d8ed976188899a2d57d306a2');\nhashMap.set('bazel-module','9fbba0339f9f7785d52ab85c5f0f6385003093c063483c13feccba13ae438bef');\nhashMap.set('bazelisk','770f75a746dc6ba90c518788d5987d7df4243ef9eee122d1bb0556a93d6e1b11');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','b8b404f53cd5d61c39153fddf93945e621471c4ac6aa9960c881cd868922bb4c');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','77a06471b8aec434457bcbde14a7473bc1c20a5fbe203ecc188bcc7a4fec1718');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6e4784dd98c1f86ef64cc8cbf3128df48aebf920032d7792b54fdedd3dd9d4d5');\nhashMap.set('cake','9ebd8b481220b30a8860121d26184540a1a2fcc05ef780df9295dea39b386fad');\nhashMap.set('cargo','d354b54fee207cabab9fcff67fea1ca3292c7f37a4ef9537c7bb4cab41a35610');\nhashMap.set('cdnurl','9a81c8e3c6ad6c788498c99fc1067ffdfcd92a427c3afaf8c0130975d83131f2');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','f4e40388944652c8a19f8518771ac8d3f3c4ccf81ddef0e68b463aca833cb73c');\nhashMap.set('cocoapods','f832e2beef885bb3fd697ed9bb3e8cd742926bfec37ff41212edd2dbb4edb3ba');\nhashMap.set('composer','3976117beb9adeade088187965929d42f21f5da12c4614fd22aa92cad1083b19');\nhashMap.set('conan','8d46e9a30ae628e26118aea10a98d1b846f7c5d96d51ce24693437d555f6d125');\nhashMap.set('copier','a0678cc1eec36301328780966eec215c6e18748ea80c98873c8e13291a684cfa');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','41e6a8b7b8bae08f07b3e4b69c8c095db5da984bb23c004cd1ebf755a6317794');\nhashMap.set('deps-edn','06783dbc8b9c7bb84e162d1f75b7db56dfa021cc6f809dfd2314cee8b64af08d');\nhashMap.set('devbox','a40050cc61bd9b5d500ec111abb17bb15d5f82ab5b7699f66f628307ba8382c9');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','fba87b82cb0f2bfd66526631fbe928b8153e7ca701a5790d02b944df17417bb9');\nhashMap.set('dockerfile','b5faeb8f31d238e0d05a4aeebf9a837273687908ab8078b34e738bb0e369c80c');\nhashMap.set('droneci','661d2a2d7295af8dd7a1234c7090c42a89306bd574c3adf1fc67782efaad3998');\nhashMap.set('fleet','ffa222820f72c4eb4cdc4c229ae8c50433bee96f3b974f0633d5a7d1f6427c97');\nhashMap.set('flux','0e9d00a108f6e828ad207ee0213d56ecd64475df9bd87c23b0c2b2f80e00a392');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','f4e2c6ddf2fa93241665c5176faafb358eecfcb701e7478790c4d58853ed827a');\nhashMap.set('github-actions','cf57efc12fcbbb1fef188a0a037589f4a94db728601dea27ddb510c38b0ab8c9');\nhashMap.set('gitlabci','a5e1e66ef461e1c1e71062f85f35a212417e23627f4b002810f9a98295d6e672');\nhashMap.set('gitlabci-include','8860a15ab516fde00694f9bd9bf56fce4addafe5a55b5ddb9a4ec477d301d351');\nhashMap.set('glasskube','93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30');\nhashMap.set('gleam','5e9b9f5f914afe5ed7b526c06c65111e3716d2dea9b0cbe7907bbc96db1064a3');\nhashMap.set('gomod','0960350ca66c6e45ef34e7d3a6f0d54f03c7c7b81b9874b486473e18b5757d26');\nhashMap.set('gradle','14ffeecba62452d47d3796e68753da745de2614b6e5ecc346da4f0067ed4bc6e');\nhashMap.set('gradle-wrapper','73ba30c34955fab7737454b5cff9aca6d1b5607d53c17c9e13d8ad96f6eaae87');\nhashMap.set('haskell-cabal','f158b7725e3143dfd2950e3de0bbccc2a61cd7eba87f7a54c5057e01252348e2');\nhashMap.set('helm-requirements','22f61344565f87ca3512c0ba8fac32627fde8ee919b7badae07b2116e285f049');\nhashMap.set('helm-values','0aa79bb0257d0d72e54dfd2653e59bfef63b97e46c035b7443593bdf6e6382aa');\nhashMap.set('helmfile','ab63e5bc2bb381939a6b75911947e3fc79d31827423ded07f61ea1c98d95a542');\nhashMap.set('helmsman','951deeb3355da751ef39c9e932b26ea749450e32e75759e4b5fc29359e100b37');\nhashMap.set('helmv3','927798e082caf46a0da703389ba07e9e61fa73ef571ab551301b8fc6b06957d1');\nhashMap.set('hermit','abf066a64be5e5112e4da68896cf14583691e817d8bf2fc5ec65aebcc0fde53b');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','dffe954a4e18c2dc4bfdaa12222fe8ddc3395869afd5afa603fc2b6264747984');\nhashMap.set('html','81fa6c2bf2b868596584a48b949645207a2aa3081951ed99183ee50b70b77d5f');\nhashMap.set('jenkins','7fda0e7e0f3d5e18088ccb3594f727f4cfc48b064706bdaaf1a0a075b6a2cff5');\nhashMap.set('jsonnet-bundler','4cedeb0394e5c38361d1868ff45b4f34747ab8c492378b6e63dcaf1f4f3c024d');\nhashMap.set('kotlin-script','95ebc844c040ca047321b207d525220e29774a2a1fe06f9639e8353c66908564');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','d3f24fa8a647979d7e4ce5ba963e4c53a36a5992a2d4e3b331a9a512f213e181');\nhashMap.set('leiningen','c8397e376f1717c2f771ae9ea3ba6b720d2422b133cf937e762c44e42be146a2');\nhashMap.set('maven','c110b99291c2a5bc82cf7a69330275e9bbd7dc8ba3e9e987611dfcffbe002d8d');\nhashMap.set('maven-wrapper','6e53b6e4abf1d20b75094c7a70d66b4a5ac39954f009aa401f5e55dada8be4d0');\nhashMap.set('meteor','4636a47ba4dcfff19fe662572ef7a40d17146be3c966e00ef437e1fc8de92776');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','49077fd316618114cea787f4d165dee2abd9afb7c3b52e5213a70645c35dfb70');\nhashMap.set('mix','0f79163dc2a1c896599d152be635c23beaf16812ae3d8fbfffec98c7bd0de872');\nhashMap.set('nix','9cbd96a29fe96e3df7418e422256380202f07970cf7f00b08388c181224a2b85');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','cd2b909d892ef3e41e51b5df5b1b0b7e34e795845b0640225e41621416c1ee7d');\nhashMap.set('nuget','fb02247c67a198ffe414a44d23c7894bd114dcc53803334f82e39479e7b27f6f');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','d6567a733ef3983112b46fdccd7ceebfcd48411104e0c6b6e714d4310db48024');\nhashMap.set('pep621','02ba97d9d2bbd696417ea0ea26c0ed27f4e8cf296f1afdbb27ec07bcc3bd987c');\nhashMap.set('pep723','77022a0eae6a3cbb74a1e6d596db1276e379768e40448192b3fa81edd14ca73f');\nhashMap.set('pip-compile','a98dc76a002e1dc21662237f009ff8fea36236bb4e24cb82ee30c6a78f57271f');\nhashMap.set('pip_requirements','bf3a407f72abf711230247bef94ba5dc84c08a35107b0f017912fad66afa716a');\nhashMap.set('pip_setup','df18fba2bdcf48f3ca12a8f7e5cd28df31e2368d5528127277038ef4206eca79');\nhashMap.set('pipenv','9b8ac4f9432f2789f60847c80582966d5ed4f735d2f678c82416d0eb9548b4fa');\nhashMap.set('pixi','e31c397982ffa34222b061f23f3b3683f42523dd5dca45ecce2448b0ebc55ea2');\nhashMap.set('poetry','2c74e8e94c484c8bfc93ba1272078d531a52e4faaa978fc90ddb654064bb85bc');\nhashMap.set('pre-commit','760f2c291ae084db889f722390798a0e2d431ccdc3bc676e73b14901ebea19ac');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','8e7c65dfd1999de4f7c44392e949a4d8f4701eb86df59d550e4657feb06b1872');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','40927b98dd2bac45dba60e66b5fd0e6b84b61d02db8be536fda7b14546a4feb7');\nhashMap.set('renovate-config','890cabf707d01b58394e0bec05e3a29b73de8f0b43fcbe8a42cd26e328608d70');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('rust-toolchain','6ace53db02874d73620d2d872291839820a512a9529c42d174358c692e5db720');\nhashMap.set('sbt','e1eb5c7f0171a9bb1b6bd4a36a91039a31b6c84e0983d91d930be31a69506d9e');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','4a3a7c812d34739c07685691e7e64c7d3127f9d7d4aff99dc45a25df97ed9745');\nhashMap.set('smithy','9641b91d065ffb63be0dd888139a0402dba41e550f8b44c592db9daf52109100');\nhashMap.set('sveltos','60dd75bb53ace31217211100d622fdb65068c6162758b6ae7103a6ce8bdc9f90');\nhashMap.set('swift','cdf063debdbf36888523ff8cec6d2d1b0ec6f49b37b2fbcd80b0d4f6a31114e1');\nhashMap.set('tekton','33948f5bdf7553909fa63744adb26da97ddf366e9499bccab1250879570267c9');\nhashMap.set('terraform','6788a8569ba9c50c763ffa2bed952a4314ae8e696c29f93d3eb7c4a12d99ce20');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','300f8fb3c09667654412d2f5dd8ab4882e0f5d1d7a8bc39794993d2e7e58d1b7');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','f423bfa2b42a2bfc0e38a33ebd4f9d452473e7ed4e7ad6384a99eb9a35d97479');\nhashMap.set('travis','f3e2f38e699c390b00ff481be5e91dceaa81609e93caf9a4214933de759c84fc');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','30774cd456c443be2cd236fd5b8cd1cb821f1437c6309842e34960832df3557f');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7');\nhashMap.set('regex','20be5247fdc164173871a051acb0527da017d0c155c653d7563601f55e7b3ff5');"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','a52394a36ac5517f7330473c31d93aa05b2ce607c5e951b48f25a4693cd20a81');\nhashMap.set('ansible-galaxy','8e11293c8f61b4cbae77a3b1634a47213031c59df2c9833d89db65bf4e6edc64');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('apm','66c207983960b1a1f49b972f77efe3bfd3097e19b0ee4034ccf9ac6c0d13e05b');\nhashMap.set('argocd','cff9cd22257bc460ae4b9936570bf0ed5585f280a55d26629deaeeb0bfee8eb5');\nhashMap.set('asdf','430eb99b58171700c8a59c78b9e648575e9b176b781d90dd10a710f7b69015bb');\nhashMap.set('azure-pipelines','04a13dec4e08ba21004961c718072fde976226d65809fa3c838bf66ba93e5d5a');\nhashMap.set('batect','375d39b432013bedb1330cf40a2199dd822751b28578214f219e7bab98594b8d');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','4d4f1d9a6519ba552b316b396db13ff0654a2663d8ed976188899a2d57d306a2');\nhashMap.set('bazel-module','9fbba0339f9f7785d52ab85c5f0f6385003093c063483c13feccba13ae438bef');\nhashMap.set('bazelisk','770f75a746dc6ba90c518788d5987d7df4243ef9eee122d1bb0556a93d6e1b11');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','b8b404f53cd5d61c39153fddf93945e621471c4ac6aa9960c881cd868922bb4c');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','77a06471b8aec434457bcbde14a7473bc1c20a5fbe203ecc188bcc7a4fec1718');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6e4784dd98c1f86ef64cc8cbf3128df48aebf920032d7792b54fdedd3dd9d4d5');\nhashMap.set('cake','9ebd8b481220b30a8860121d26184540a1a2fcc05ef780df9295dea39b386fad');\nhashMap.set('cargo','d354b54fee207cabab9fcff67fea1ca3292c7f37a4ef9537c7bb4cab41a35610');\nhashMap.set('cdnurl','9a81c8e3c6ad6c788498c99fc1067ffdfcd92a427c3afaf8c0130975d83131f2');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','f4e40388944652c8a19f8518771ac8d3f3c4ccf81ddef0e68b463aca833cb73c');\nhashMap.set('cocoapods','f832e2beef885bb3fd697ed9bb3e8cd742926bfec37ff41212edd2dbb4edb3ba');\nhashMap.set('composer','3976117beb9adeade088187965929d42f21f5da12c4614fd22aa92cad1083b19');\nhashMap.set('conan','8d46e9a30ae628e26118aea10a98d1b846f7c5d96d51ce24693437d555f6d125');\nhashMap.set('copier','a0678cc1eec36301328780966eec215c6e18748ea80c98873c8e13291a684cfa');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','41e6a8b7b8bae08f07b3e4b69c8c095db5da984bb23c004cd1ebf755a6317794');\nhashMap.set('deps-edn','06783dbc8b9c7bb84e162d1f75b7db56dfa021cc6f809dfd2314cee8b64af08d');\nhashMap.set('devbox','a40050cc61bd9b5d500ec111abb17bb15d5f82ab5b7699f66f628307ba8382c9');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','fba87b82cb0f2bfd66526631fbe928b8153e7ca701a5790d02b944df17417bb9');\nhashMap.set('dockerfile','b5faeb8f31d238e0d05a4aeebf9a837273687908ab8078b34e738bb0e369c80c');\nhashMap.set('droneci','661d2a2d7295af8dd7a1234c7090c42a89306bd574c3adf1fc67782efaad3998');\nhashMap.set('fleet','ffa222820f72c4eb4cdc4c229ae8c50433bee96f3b974f0633d5a7d1f6427c97');\nhashMap.set('flux','0e9d00a108f6e828ad207ee0213d56ecd64475df9bd87c23b0c2b2f80e00a392');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','f4e2c6ddf2fa93241665c5176faafb358eecfcb701e7478790c4d58853ed827a');\nhashMap.set('github-actions','1b248048481f044774c9cae732b19cd4bacf81770fdd5ddaf0ee0b5431677e8e');\nhashMap.set('gitlabci','a5e1e66ef461e1c1e71062f85f35a212417e23627f4b002810f9a98295d6e672');\nhashMap.set('gitlabci-include','8860a15ab516fde00694f9bd9bf56fce4addafe5a55b5ddb9a4ec477d301d351');\nhashMap.set('glasskube','93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30');\nhashMap.set('gleam','5e9b9f5f914afe5ed7b526c06c65111e3716d2dea9b0cbe7907bbc96db1064a3');\nhashMap.set('gomod','0960350ca66c6e45ef34e7d3a6f0d54f03c7c7b81b9874b486473e18b5757d26');\nhashMap.set('gradle','14ffeecba62452d47d3796e68753da745de2614b6e5ecc346da4f0067ed4bc6e');\nhashMap.set('gradle-wrapper','73ba30c34955fab7737454b5cff9aca6d1b5607d53c17c9e13d8ad96f6eaae87');\nhashMap.set('haskell-cabal','f158b7725e3143dfd2950e3de0bbccc2a61cd7eba87f7a54c5057e01252348e2');\nhashMap.set('helm-requirements','22f61344565f87ca3512c0ba8fac32627fde8ee919b7badae07b2116e285f049');\nhashMap.set('helm-values','0aa79bb0257d0d72e54dfd2653e59bfef63b97e46c035b7443593bdf6e6382aa');\nhashMap.set('helmfile','ab63e5bc2bb381939a6b75911947e3fc79d31827423ded07f61ea1c98d95a542');\nhashMap.set('helmsman','951deeb3355da751ef39c9e932b26ea749450e32e75759e4b5fc29359e100b37');\nhashMap.set('helmv3','927798e082caf46a0da703389ba07e9e61fa73ef571ab551301b8fc6b06957d1');\nhashMap.set('hermit','abf066a64be5e5112e4da68896cf14583691e817d8bf2fc5ec65aebcc0fde53b');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','dffe954a4e18c2dc4bfdaa12222fe8ddc3395869afd5afa603fc2b6264747984');\nhashMap.set('html','81fa6c2bf2b868596584a48b949645207a2aa3081951ed99183ee50b70b77d5f');\nhashMap.set('jenkins','7fda0e7e0f3d5e18088ccb3594f727f4cfc48b064706bdaaf1a0a075b6a2cff5');\nhashMap.set('jsonnet-bundler','4cedeb0394e5c38361d1868ff45b4f34747ab8c492378b6e63dcaf1f4f3c024d');\nhashMap.set('kotlin-script','95ebc844c040ca047321b207d525220e29774a2a1fe06f9639e8353c66908564');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','d3f24fa8a647979d7e4ce5ba963e4c53a36a5992a2d4e3b331a9a512f213e181');\nhashMap.set('leiningen','c8397e376f1717c2f771ae9ea3ba6b720d2422b133cf937e762c44e42be146a2');\nhashMap.set('maven','c110b99291c2a5bc82cf7a69330275e9bbd7dc8ba3e9e987611dfcffbe002d8d');\nhashMap.set('maven-wrapper','6e53b6e4abf1d20b75094c7a70d66b4a5ac39954f009aa401f5e55dada8be4d0');\nhashMap.set('meteor','4636a47ba4dcfff19fe662572ef7a40d17146be3c966e00ef437e1fc8de92776');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','49077fd316618114cea787f4d165dee2abd9afb7c3b52e5213a70645c35dfb70');\nhashMap.set('mix','0f79163dc2a1c896599d152be635c23beaf16812ae3d8fbfffec98c7bd0de872');\nhashMap.set('nix','9cbd96a29fe96e3df7418e422256380202f07970cf7f00b08388c181224a2b85');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','cd2b909d892ef3e41e51b5df5b1b0b7e34e795845b0640225e41621416c1ee7d');\nhashMap.set('nuget','fb02247c67a198ffe414a44d23c7894bd114dcc53803334f82e39479e7b27f6f');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','d6567a733ef3983112b46fdccd7ceebfcd48411104e0c6b6e714d4310db48024');\nhashMap.set('pep621','02ba97d9d2bbd696417ea0ea26c0ed27f4e8cf296f1afdbb27ec07bcc3bd987c');\nhashMap.set('pep723','77022a0eae6a3cbb74a1e6d596db1276e379768e40448192b3fa81edd14ca73f');\nhashMap.set('pip-compile','a98dc76a002e1dc21662237f009ff8fea36236bb4e24cb82ee30c6a78f57271f');\nhashMap.set('pip_requirements','bf3a407f72abf711230247bef94ba5dc84c08a35107b0f017912fad66afa716a');\nhashMap.set('pip_setup','df18fba2bdcf48f3ca12a8f7e5cd28df31e2368d5528127277038ef4206eca79');\nhashMap.set('pipenv','9b8ac4f9432f2789f60847c80582966d5ed4f735d2f678c82416d0eb9548b4fa');\nhashMap.set('pixi','e31c397982ffa34222b061f23f3b3683f42523dd5dca45ecce2448b0ebc55ea2');\nhashMap.set('poetry','2c74e8e94c484c8bfc93ba1272078d531a52e4faaa978fc90ddb654064bb85bc');\nhashMap.set('pre-commit','760f2c291ae084db889f722390798a0e2d431ccdc3bc676e73b14901ebea19ac');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','8e7c65dfd1999de4f7c44392e949a4d8f4701eb86df59d550e4657feb06b1872');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','40927b98dd2bac45dba60e66b5fd0e6b84b61d02db8be536fda7b14546a4feb7');\nhashMap.set('renovate-config','890cabf707d01b58394e0bec05e3a29b73de8f0b43fcbe8a42cd26e328608d70');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('rust-toolchain','6ace53db02874d73620d2d872291839820a512a9529c42d174358c692e5db720');\nhashMap.set('sbt','e1eb5c7f0171a9bb1b6bd4a36a91039a31b6c84e0983d91d930be31a69506d9e');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','4a3a7c812d34739c07685691e7e64c7d3127f9d7d4aff99dc45a25df97ed9745');\nhashMap.set('smithy','9641b91d065ffb63be0dd888139a0402dba41e550f8b44c592db9daf52109100');\nhashMap.set('sveltos','60dd75bb53ace31217211100d622fdb65068c6162758b6ae7103a6ce8bdc9f90');\nhashMap.set('swift','cdf063debdbf36888523ff8cec6d2d1b0ec6f49b37b2fbcd80b0d4f6a31114e1');\nhashMap.set('tekton','33948f5bdf7553909fa63744adb26da97ddf366e9499bccab1250879570267c9');\nhashMap.set('terraform','6788a8569ba9c50c763ffa2bed952a4314ae8e696c29f93d3eb7c4a12d99ce20');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','300f8fb3c09667654412d2f5dd8ab4882e0f5d1d7a8bc39794993d2e7e58d1b7');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','f423bfa2b42a2bfc0e38a33ebd4f9d452473e7ed4e7ad6384a99eb9a35d97479');\nhashMap.set('travis','f3e2f38e699c390b00ff481be5e91dceaa81609e93caf9a4214933de759c84fc');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','30774cd456c443be2cd236fd5b8cd1cb821f1437c6309842e34960832df3557f');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7');\nhashMap.set('regex','20be5247fdc164173871a051acb0527da017d0c155c653d7563601f55e7b3ff5');"],"mappings":"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"}
|
|
@@ -6,12 +6,13 @@ import { parseUrl } from "../../../util/url.js";
|
|
|
6
6
|
import { find } from "../../../util/host-rules.js";
|
|
7
7
|
import { detectPlatform } from "../../../util/common.js";
|
|
8
8
|
import { readLocalFile, writeLocalFile } from "../../../util/fs/index.js";
|
|
9
|
+
import { api } from "../../versioning/semver/index.js";
|
|
9
10
|
import { exec } from "../../../util/exec/index.js";
|
|
10
11
|
import { getRepoStatus } from "../../../util/git/index.js";
|
|
11
12
|
import { artifactErrorMessageFromExecError, resolveToolConstraint } from "../util.js";
|
|
12
13
|
import { findGithubToken } from "../../../util/check-token.js";
|
|
13
14
|
import { actionsLockFile, isLockfileManaged } from "./common.js";
|
|
14
|
-
import { ActionsLockfile } from "./schema.js";
|
|
15
|
+
import { ActionsLockfile, FindingsOutput } from "./schema.js";
|
|
15
16
|
import { quote } from "shlex";
|
|
16
17
|
//#region lib/modules/manager/github-actions/artifacts.ts
|
|
17
18
|
/** The `gh` CLI extension that generates and verifies the lockfile. */
|
|
@@ -22,6 +23,12 @@ const lockedDepTypes = [
|
|
|
22
23
|
"workflow",
|
|
23
24
|
"docker"
|
|
24
25
|
];
|
|
26
|
+
/** The first `gh-actions-lock` release with `--ignore-local-actions`, and a plain run which keeps moved floating refs locked. */
|
|
27
|
+
const minPlainRunVersion = "0.3.0";
|
|
28
|
+
/** Whether a `gh-actions-lock` release tag predates `--ignore-local-actions` and needs `--relock` to write after a floating ref moved. */
|
|
29
|
+
function needsRelock(version) {
|
|
30
|
+
return !!version && api.isVersion(version) && api.isGreaterThan(minPlainRunVersion, version);
|
|
31
|
+
}
|
|
25
32
|
function findToken(url) {
|
|
26
33
|
return findGithubToken(find({
|
|
27
34
|
hostType: "github",
|
|
@@ -53,10 +60,10 @@ function getTokenEnv() {
|
|
|
53
60
|
return env;
|
|
54
61
|
}
|
|
55
62
|
/**
|
|
56
|
-
*
|
|
63
|
+
* The updated dependencies which the lockfile records an edge for, and which sit in a file `gh actions-lock` will look at.
|
|
57
64
|
*/
|
|
58
|
-
function
|
|
59
|
-
return config.upgrades.
|
|
65
|
+
function getLockedUpgrades(config, onboardedWorkflows) {
|
|
66
|
+
return config.upgrades.filter((upgrade) => {
|
|
60
67
|
if (upgrade.manager !== "github-actions") return false;
|
|
61
68
|
if (!upgrade.depType || !lockedDepTypes.includes(upgrade.depType)) return false;
|
|
62
69
|
const packageFile = upgrade.packageFile;
|
|
@@ -64,6 +71,12 @@ function hasLockedUpdate(config, onboardedWorkflows) {
|
|
|
64
71
|
return isLockfileManaged(packageFile, onboardedWorkflows);
|
|
65
72
|
});
|
|
66
73
|
}
|
|
74
|
+
/** One line per finding, followed by how the tool suggests fixing it. */
|
|
75
|
+
function formatFindings(findings) {
|
|
76
|
+
return findings.map(({ workflow, dependency, detail, remediation }) => {
|
|
77
|
+
return `${dependency ? `${workflow}: ${dependency}` : workflow}: ${detail}${remediation ? ` (${remediation})` : ""}`;
|
|
78
|
+
}).join("\n");
|
|
79
|
+
}
|
|
67
80
|
/**
|
|
68
81
|
* Regenerate `.github/workflows/actions.lock` once per branch.
|
|
69
82
|
*
|
|
@@ -94,7 +107,8 @@ async function updateActionsLockfile(config, packageFiles) {
|
|
|
94
107
|
}, "Failed to parse the GitHub Actions lockfile, so not regenerating it");
|
|
95
108
|
return empty;
|
|
96
109
|
}
|
|
97
|
-
|
|
110
|
+
const lockedUpgrades = getLockedUpgrades(config, parsedLockfile.data.workflows);
|
|
111
|
+
if (!lockedUpgrades.length) {
|
|
98
112
|
logger.debug(`No locked dependencies updated for ${actionsLockFile}`);
|
|
99
113
|
return empty;
|
|
100
114
|
}
|
|
@@ -119,7 +133,15 @@ async function updateActionsLockfile(config, packageFiles) {
|
|
|
119
133
|
}],
|
|
120
134
|
docker: {}
|
|
121
135
|
};
|
|
122
|
-
const
|
|
136
|
+
const hasReplacement = lockedUpgrades.some((upgrade) => upgrade.updateType === "replacement");
|
|
137
|
+
const relock = GlobalConfig.get("binarySource") !== "global" && needsRelock(ghActionsLockConstraint);
|
|
138
|
+
const commands = [`gh actions-lock ${[
|
|
139
|
+
"--no-interactive",
|
|
140
|
+
...hasReplacement ? [] : ["--no-onboard"],
|
|
141
|
+
"--no-narrow",
|
|
142
|
+
...relock ? ["--relock", "--no-migrate-local-actions"] : ["--ignore-local-actions"],
|
|
143
|
+
"--json=findings"
|
|
144
|
+
].join(" ")}`];
|
|
123
145
|
if (GlobalConfig.get("binarySource") === "global") logger.once.debug({ constraint: ghActionsLockConstraint }, "Not installing the `gh-actions-lock` extension, and ignoring `constraints.ghActionsLock`, because `binarySource=global` leaves tooling to the administrator");
|
|
124
146
|
else if (ghActionsLockConstraint) commands.unshift(`gh extension install ${extensionName} --force --pin ${quote(ghActionsLockConstraint)}`);
|
|
125
147
|
else commands.unshift(`gh extension install ${extensionName} --force`);
|
|
@@ -128,11 +150,12 @@ async function updateActionsLockfile(config, packageFiles) {
|
|
|
128
150
|
} catch (err) {
|
|
129
151
|
if (err.message === "temporary-error") throw err;
|
|
130
152
|
logger.debug({ err }, `Error updating ${actionsLockFile}`);
|
|
153
|
+
const findings = FindingsOutput.safeParse(err.stdout);
|
|
131
154
|
return {
|
|
132
155
|
updatedArtifacts: [],
|
|
133
156
|
artifactErrors: [{
|
|
134
157
|
fileName: actionsLockFile,
|
|
135
|
-
stderr: artifactErrorMessageFromExecError(err, err.message)
|
|
158
|
+
stderr: findings.success && findings.data.length ? formatFindings(findings.data) : artifactErrorMessageFromExecError(err, err.message)
|
|
136
159
|
}]
|
|
137
160
|
};
|
|
138
161
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.js","names":["hostRules.find"],"sources":["../../../../lib/modules/manager/github-actions/artifacts.ts"],"sourcesContent":["import { quote } from 'shlex';\nimport { GlobalConfig } from '../../../config/global.ts';\nimport { TEMPORARY_ERROR } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { findGithubToken } from '../../../util/check-token.ts';\nimport { detectPlatform } from '../../../util/common.ts';\nimport { exec } from '../../../util/exec/index.ts';\nimport type { ExecOptions, ExtraEnv } from '../../../util/exec/types.ts';\nimport { readLocalFile, writeLocalFile } from '../../../util/fs/index.ts';\nimport { getRepoStatus } from '../../../util/git/index.ts';\nimport type { FileChange } from '../../../util/git/types.ts';\nimport * as hostRules from '../../../util/host-rules.ts';\nimport { parseUrl } from '../../../util/url.ts';\nimport type { PackageFile, PostUpdateConfig } from '../types.ts';\nimport {\n artifactErrorMessageFromExecError,\n resolveToolConstraint,\n} from '../util.ts';\nimport { actionsLockFile, isLockfileManaged } from './common.ts';\nimport { ActionsLockfile } from './schema.ts';\nimport type { ActionsLockfileResult, OnboardedWorkflows } from './types.ts';\n\n/** The `gh` CLI extension that generates and verifies the lockfile. */\nconst extensionName = 'github/gh-actions-lock';\n\n/** The `uses:` dep types the lockfile graph is built from. */\nconst lockedDepTypes = ['action', 'workflow', 'docker'];\n\nfunction findToken(url: string): string | undefined {\n return findGithubToken(hostRules.find({ hostType: 'github', url }));\n}\n\n/**\n * `gh` takes the token from a different variable for GitHub Enterprise Server, and has to be told which host to talk to.\n *\n * Public actions are still resolved against github.com from there, so pass a token for both hosts.\n */\nfunction getTokenEnv(): ExtraEnv {\n const githubComEndpoint = 'https://api.github.com/';\n const configuredEndpoint = GlobalConfig.get('endpoint');\n // The configured endpoint only says where GitHub lives when Renovate is talking to GitHub: workflows mirrored onto another platform still resolve their actions against github.com.\n const endpoint =\n configuredEndpoint && detectPlatform(configuredEndpoint) === 'github'\n ? configuredEndpoint\n : githubComEndpoint;\n\n const hostname = parseUrl(endpoint)?.hostname;\n const isEnterprise =\n !!hostname && hostname !== 'api.github.com' && hostname !== 'github.com';\n\n const env: ExtraEnv = {};\n\n if (isEnterprise) {\n const enterpriseToken = findToken(endpoint);\n if (enterpriseToken) {\n env.GH_HOST = hostname;\n env.GH_ENTERPRISE_TOKEN = enterpriseToken;\n }\n }\n\n const token = findToken(githubComEndpoint);\n if (token) {\n env.GH_TOKEN = token;\n }\n\n if (!Object.keys(env).length) {\n logger.debug('No GitHub token found for `gh actions-lock`');\n }\n\n return env;\n}\n\n/**\n * Whether any updated dependency is one the lockfile records an edge for, and sits in a file `gh actions-lock` will look at.\n */\nfunction hasLockedUpdate(\n config: PostUpdateConfig,\n onboardedWorkflows: OnboardedWorkflows,\n): boolean {\n return config.upgrades.some((upgrade) => {\n if (upgrade.manager !== 'github-actions') {\n return false;\n }\n\n if (!upgrade.depType || !lockedDepTypes.includes(upgrade.depType)) {\n return false;\n }\n\n const packageFile = upgrade.packageFile;\n if (!packageFile) {\n return false;\n }\n\n return isLockfileManaged(packageFile, onboardedWorkflows);\n });\n}\n\n/**\n * Regenerate `.github/workflows/actions.lock` once per branch.\n *\n * The lockfile records a transitive graph - resolved commits, numeric owner and repository IDs, and each composite action's own `uses:` edges - so it is regenerated by its own tool rather than patched here.\n * `gh actions-lock` re-reads every workflow from disk and rewrites the whole file, so this runs after all of the branch's package file updates have been flushed, in the same shape as npm's `getAdditionalFiles`.\n */\nexport async function updateActionsLockfile(\n config: PostUpdateConfig,\n packageFiles: Record<string, PackageFile[]> | undefined,\n): Promise<ActionsLockfileResult> {\n const empty: ActionsLockfileResult = {\n updatedArtifacts: [],\n artifactErrors: [],\n };\n\n const ghaPackageFiles = packageFiles?.['github-actions'];\n if (!ghaPackageFiles?.length) {\n return empty;\n }\n\n if (config.skipArtifactsUpdate) {\n logger.debug(`Skipping ${actionsLockFile} generation`);\n return empty;\n }\n\n const existingLockFileContent = await readLocalFile(actionsLockFile, 'utf8');\n if (!existingLockFileContent) {\n logger.debug(`No ${actionsLockFile} found`);\n return empty;\n }\n\n const parsedLockfile = ActionsLockfile.safeParse(existingLockFileContent);\n if (!parsedLockfile.success) {\n logger.warn(\n { err: parsedLockfile.error, lockFile: actionsLockFile },\n 'Failed to parse the GitHub Actions lockfile, so not regenerating it',\n );\n return empty;\n }\n\n if (!hasLockedUpdate(config, parsedLockfile.data.workflows)) {\n logger.debug(`No locked dependencies updated for ${actionsLockFile}`);\n return empty;\n }\n\n logger.debug(`Regenerating ${actionsLockFile}`);\n\n const ghaPackageFilePaths = new Set(\n ghaPackageFiles.map((file) => file.packageFile),\n );\n\n // Ensure that in-memory file contents are flushed to disk, so `actions-lock` can run against it.\n // A branch can group updates from other managers, whose contents may be binary - a Gradle wrapper JAR, say - so only write the workflows which the tool actually reads.\n const writtenContent = new Map<string, string>();\n for (const file of coerceArray(config.updatedPackageFiles)) {\n if (file.type === 'addition' && ghaPackageFilePaths.has(file.path)) {\n const contents = file.contents!.toString();\n await writeLocalFile(file.path, contents);\n writtenContent.set(file.path, contents);\n }\n }\n\n const tokenEnv = getTokenEnv();\n\n const ghConstraint = await resolveToolConstraint(config, 'gh');\n const ghActionsLockConstraint = await resolveToolConstraint(\n config,\n 'ghActionsLock',\n );\n\n const execOptions: ExecOptions = {\n // The tool rescans every workflow, so it runs from the repository root\n cwd: GlobalConfig.get('localDir'),\n // `extraEnv` is what forwards a variable into the Docker sidecar, but on its own it is only a default: `getChildEnv` lets a same-named variable in Renovate's own environment win.\n // The token we resolved from the host rules must not be shadowed by an ambient `GH_TOKEN`, so force it as well.\n extraEnv: tokenEnv,\n env: tokenEnv,\n toolConstraints: [{ toolName: 'gh', constraint: ghConstraint }],\n docker: {},\n };\n\n // `--no-interactive`: we have no terminal to answer prompts with\n // `--relock`: locked pins are sticky, so without it a changed ref fails with `Ref changed`\n // `--no-narrow`: keep the ref that we wrote, to avoid a `@v4` being rewritten as `@v4.2.1`\n // `--no-migrate-local-actions`: on-by-default, but unrelated to our lockfile updates\n const commands = [\n 'gh actions-lock --no-interactive --relock --no-narrow --no-migrate-local-actions',\n ];\n\n // `binarySource=global` means the administrator provisions tooling, so we must not reach into their `gh` install to add or re-pin an extension.\n // They own the extension version, and `constraints.ghActionsLock` does not apply.\n // TODO replace once containerbase/base#7279 is available\n if (GlobalConfig.get('binarySource') === 'global') {\n // Debug rather than warn: `constraints.ghActionsLock` ships with a default, so we cannot tell an explicit override from the default here, and warning would fire for every repository on this `binarySource`.\n logger.once.debug(\n { constraint: ghActionsLockConstraint },\n 'Not installing the `gh-actions-lock` extension, and ignoring `constraints.ghActionsLock`, because `binarySource=global` leaves tooling to the administrator',\n );\n } else {\n // `--force` makes an install a no-op when the specified version is already installed\n if (ghActionsLockConstraint) {\n commands.unshift(\n `gh extension install ${extensionName} --force --pin ${quote(ghActionsLockConstraint)}`,\n );\n } else {\n commands.unshift(`gh extension install ${extensionName} --force`);\n }\n }\n\n try {\n await exec(commands, execOptions);\n } catch (err) {\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n logger.debug({ err }, `Error updating ${actionsLockFile}`);\n return {\n updatedArtifacts: [],\n artifactErrors: [\n {\n fileName: actionsLockFile,\n // an `ExecError` always carries a `stderr`, so fall back to the message rather than rendering an artifact error with nothing in it\n stderr: artifactErrorMessageFromExecError(err, err.message),\n },\n ],\n };\n }\n\n const updatedArtifacts: FileChange[] = [];\n\n const newLockFileContent = await readLocalFile(actionsLockFile, 'utf8');\n if (newLockFileContent && newLockFileContent !== existingLockFileContent) {\n updatedArtifacts.push({\n type: 'addition',\n path: actionsLockFile,\n contents: newLockFileContent,\n });\n }\n\n // `actions-lock` may annotate workflows being managed with i.e. `# This workflow is managed by gh actions-lock.`, even if there were no updates to that workflow in this branch.\n // We should diff against Git, rather than against the branch's own updated package files, otherwise those annotations are left behind as uncommitted changes\n const status = await getRepoStatus();\n for (const path of status.modified) {\n // ignore the lockfile, as we've already committed it above, and any file which another manager owns\n if (path === actionsLockFile || !ghaPackageFilePaths.has(path)) {\n continue;\n }\n\n const newContent = await readLocalFile(path, 'utf8');\n // Whatever this branch wrote is committed as a package file update already, so only content which the tool changed on top of it is an artifact\n if (!newContent || newContent === writtenContent.get(path)) {\n continue;\n }\n logger.debug(`\\`gh actions-lock\\` annotated ${path}`);\n updatedArtifacts.push({\n type: 'addition',\n path,\n contents: newContent,\n });\n }\n\n if (!updatedArtifacts.length) {\n logger.debug(`${actionsLockFile} is unchanged`);\n }\n\n return { updatedArtifacts, artifactErrors: [] };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"artifacts.js","names":["semver","hostRules.find"],"sources":["../../../../lib/modules/manager/github-actions/artifacts.ts"],"sourcesContent":["import { quote } from 'shlex';\nimport { GlobalConfig } from '../../../config/global.ts';\nimport { TEMPORARY_ERROR } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { findGithubToken } from '../../../util/check-token.ts';\nimport { detectPlatform } from '../../../util/common.ts';\nimport { exec } from '../../../util/exec/index.ts';\nimport type { ExecOptions, ExtraEnv } from '../../../util/exec/types.ts';\nimport { readLocalFile, writeLocalFile } from '../../../util/fs/index.ts';\nimport { getRepoStatus } from '../../../util/git/index.ts';\nimport type { FileChange } from '../../../util/git/types.ts';\nimport * as hostRules from '../../../util/host-rules.ts';\nimport { parseUrl } from '../../../util/url.ts';\nimport { api as semver } from '../../versioning/semver/index.ts';\nimport type { PackageFile, PostUpdateConfig, Upgrade } from '../types.ts';\nimport {\n artifactErrorMessageFromExecError,\n resolveToolConstraint,\n} from '../util.ts';\nimport { actionsLockFile, isLockfileManaged } from './common.ts';\nimport { ActionsLockfile, type Finding, FindingsOutput } from './schema.ts';\nimport type { ActionsLockfileResult, OnboardedWorkflows } from './types.ts';\n\n/** The `gh` CLI extension that generates and verifies the lockfile. */\nconst extensionName = 'github/gh-actions-lock';\n\n/** The `uses:` dep types the lockfile graph is built from. */\nconst lockedDepTypes = ['action', 'workflow', 'docker'];\n\n/** The first `gh-actions-lock` release with `--ignore-local-actions`, and a plain run which keeps moved floating refs locked. */\nconst minPlainRunVersion = '0.3.0';\n\n/** Whether a `gh-actions-lock` release tag predates `--ignore-local-actions` and needs `--relock` to write after a floating ref moved. */\nfunction needsRelock(version: string | undefined): boolean {\n return (\n !!version &&\n semver.isVersion(version) &&\n semver.isGreaterThan(minPlainRunVersion, version)\n );\n}\n\nfunction findToken(url: string): string | undefined {\n return findGithubToken(hostRules.find({ hostType: 'github', url }));\n}\n\n/**\n * `gh` takes the token from a different variable for GitHub Enterprise Server, and has to be told which host to talk to.\n *\n * Public actions are still resolved against github.com from there, so pass a token for both hosts.\n */\nfunction getTokenEnv(): ExtraEnv {\n const githubComEndpoint = 'https://api.github.com/';\n const configuredEndpoint = GlobalConfig.get('endpoint');\n // The configured endpoint only says where GitHub lives when Renovate is talking to GitHub: workflows mirrored onto another platform still resolve their actions against github.com.\n const endpoint =\n configuredEndpoint && detectPlatform(configuredEndpoint) === 'github'\n ? configuredEndpoint\n : githubComEndpoint;\n\n const hostname = parseUrl(endpoint)?.hostname;\n const isEnterprise =\n !!hostname && hostname !== 'api.github.com' && hostname !== 'github.com';\n\n const env: ExtraEnv = {};\n\n if (isEnterprise) {\n const enterpriseToken = findToken(endpoint);\n if (enterpriseToken) {\n env.GH_HOST = hostname;\n env.GH_ENTERPRISE_TOKEN = enterpriseToken;\n }\n }\n\n const token = findToken(githubComEndpoint);\n if (token) {\n env.GH_TOKEN = token;\n }\n\n if (!Object.keys(env).length) {\n logger.debug('No GitHub token found for `gh actions-lock`');\n }\n\n return env;\n}\n\n/**\n * The updated dependencies which the lockfile records an edge for, and which sit in a file `gh actions-lock` will look at.\n */\nfunction getLockedUpgrades(\n config: PostUpdateConfig,\n onboardedWorkflows: OnboardedWorkflows,\n): Upgrade[] {\n return config.upgrades.filter((upgrade) => {\n if (upgrade.manager !== 'github-actions') {\n return false;\n }\n\n if (!upgrade.depType || !lockedDepTypes.includes(upgrade.depType)) {\n return false;\n }\n\n const packageFile = upgrade.packageFile;\n if (!packageFile) {\n return false;\n }\n\n return isLockfileManaged(packageFile, onboardedWorkflows);\n });\n}\n\n/** One line per finding, followed by how the tool suggests fixing it. */\nfunction formatFindings(findings: Finding[]): string {\n return findings\n .map(({ workflow, dependency, detail, remediation }) => {\n const location = dependency ? `${workflow}: ${dependency}` : workflow;\n const fix = remediation ? ` (${remediation})` : '';\n return `${location}: ${detail}${fix}`;\n })\n .join('\\n');\n}\n\n/**\n * Regenerate `.github/workflows/actions.lock` once per branch.\n *\n * The lockfile records a transitive graph - resolved commits, numeric owner and repository IDs, and each composite action's own `uses:` edges - so it is regenerated by its own tool rather than patched here.\n * `gh actions-lock` re-reads every workflow from disk and rewrites the whole file, so this runs after all of the branch's package file updates have been flushed, in the same shape as npm's `getAdditionalFiles`.\n */\nexport async function updateActionsLockfile(\n config: PostUpdateConfig,\n packageFiles: Record<string, PackageFile[]> | undefined,\n): Promise<ActionsLockfileResult> {\n const empty: ActionsLockfileResult = {\n updatedArtifacts: [],\n artifactErrors: [],\n };\n\n const ghaPackageFiles = packageFiles?.['github-actions'];\n if (!ghaPackageFiles?.length) {\n return empty;\n }\n\n if (config.skipArtifactsUpdate) {\n logger.debug(`Skipping ${actionsLockFile} generation`);\n return empty;\n }\n\n const existingLockFileContent = await readLocalFile(actionsLockFile, 'utf8');\n if (!existingLockFileContent) {\n logger.debug(`No ${actionsLockFile} found`);\n return empty;\n }\n\n const parsedLockfile = ActionsLockfile.safeParse(existingLockFileContent);\n if (!parsedLockfile.success) {\n logger.warn(\n { err: parsedLockfile.error, lockFile: actionsLockFile },\n 'Failed to parse the GitHub Actions lockfile, so not regenerating it',\n );\n return empty;\n }\n\n const lockedUpgrades = getLockedUpgrades(\n config,\n parsedLockfile.data.workflows,\n );\n if (!lockedUpgrades.length) {\n logger.debug(`No locked dependencies updated for ${actionsLockFile}`);\n return empty;\n }\n\n logger.debug(`Regenerating ${actionsLockFile}`);\n\n const ghaPackageFilePaths = new Set(\n ghaPackageFiles.map((file) => file.packageFile),\n );\n\n // Ensure that in-memory file contents are flushed to disk, so `actions-lock` can run against it.\n // A branch can group updates from other managers, whose contents may be binary - a Gradle wrapper JAR, say - so only write the workflows which the tool actually reads.\n const writtenContent = new Map<string, string>();\n for (const file of coerceArray(config.updatedPackageFiles)) {\n if (file.type === 'addition' && ghaPackageFilePaths.has(file.path)) {\n const contents = file.contents!.toString();\n await writeLocalFile(file.path, contents);\n writtenContent.set(file.path, contents);\n }\n }\n\n const tokenEnv = getTokenEnv();\n\n const ghConstraint = await resolveToolConstraint(config, 'gh');\n const ghActionsLockConstraint = await resolveToolConstraint(\n config,\n 'ghActionsLock',\n );\n\n const execOptions: ExecOptions = {\n // The tool rescans every workflow, so it runs from the repository root\n cwd: GlobalConfig.get('localDir'),\n // `extraEnv` is what forwards a variable into the Docker sidecar, but on its own it is only a default: `getChildEnv` lets a same-named variable in Renovate's own environment win.\n // The token we resolved from the host rules must not be shadowed by an ambient `GH_TOKEN`, so force it as well.\n extraEnv: tokenEnv,\n env: tokenEnv,\n toolConstraints: [{ toolName: 'gh', constraint: ghConstraint }],\n docker: {},\n };\n\n // A replacement introduces a package the workflow did not use before, which `--no-onboard` refuses to add\n const hasReplacement = lockedUpgrades.some(\n (upgrade) => upgrade.updateType === 'replacement',\n );\n\n // `binarySource=global` leaves the extension version to the administrator and it is unknown here, so assume v0.3.0 or later and only treat a version we install as old\n const relock =\n GlobalConfig.get('binarySource') !== 'global' &&\n needsRelock(ghActionsLockConstraint);\n\n // From v0.3.0 a plain run re-pins only the refs whose `uses:` changed, and keeps moved floating refs (like `@v4`) locked, so unrelated pins do not advance.\n // Before that, a plain run refuses to write when a path or composite action's floating ref has moved, so `--relock` is needed there\n const flags = [\n // we have no terminal to answer prompts with\n '--no-interactive',\n // do not add workflows which the lockfile does not track yet, as that is unrelated to the update. Omitted for a replacement, as the new action is not in the workflow's lockfile entry yet\n ...(hasReplacement ? [] : ['--no-onboard']),\n // keep the ref that we wrote, to avoid a `@v4` being rewritten as `@v4.2.1`\n '--no-narrow',\n ...(relock\n ? [\n // a plain run before v0.3.0 refuses to write when a floating ref has moved upstream. This also advances such refs\n '--relock',\n // do not migrate `uses: ./…` to `uses: $/…`. `--ignore-local-actions` does not exist before v0.3.0\n '--no-migrate-local-actions',\n ]\n : [\n // warn instead of failing when a local action uses remote actions the lockfile cannot cover, and do not migrate `uses: ./…` to `uses: $/…`\n '--ignore-local-actions',\n ]),\n // print the findings as JSON on stdout, so a failure can be reported readably. Available since v0.1.6\n '--json=findings',\n ];\n const commands = [`gh actions-lock ${flags.join(' ')}`];\n\n // `binarySource=global` means the administrator provisions tooling, so we must not reach into their `gh` install to add or re-pin an extension.\n // They own the extension version, and `constraints.ghActionsLock` does not apply.\n // TODO replace once containerbase/base#7279 is available\n if (GlobalConfig.get('binarySource') === 'global') {\n // Debug rather than warn: `constraints.ghActionsLock` ships with a default, so we cannot tell an explicit override from the default here, and warning would fire for every repository on this `binarySource`.\n logger.once.debug(\n { constraint: ghActionsLockConstraint },\n 'Not installing the `gh-actions-lock` extension, and ignoring `constraints.ghActionsLock`, because `binarySource=global` leaves tooling to the administrator',\n );\n } else {\n // `--force` makes an install a no-op when the specified version is already installed\n if (ghActionsLockConstraint) {\n commands.unshift(\n `gh extension install ${extensionName} --force --pin ${quote(ghActionsLockConstraint)}`,\n );\n } else {\n commands.unshift(`gh extension install ${extensionName} --force`);\n }\n }\n\n try {\n await exec(commands, execOptions);\n } catch (err) {\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n logger.debug({ err }, `Error updating ${actionsLockFile}`);\n const findings = FindingsOutput.safeParse(err.stdout);\n return {\n updatedArtifacts: [],\n artifactErrors: [\n {\n fileName: actionsLockFile,\n // an `ExecError` always carries a `stderr`, so fall back to the message rather than rendering an artifact error with nothing in it\n stderr:\n findings.success && findings.data.length\n ? formatFindings(findings.data)\n : artifactErrorMessageFromExecError(err, err.message),\n },\n ],\n };\n }\n\n const updatedArtifacts: FileChange[] = [];\n\n const newLockFileContent = await readLocalFile(actionsLockFile, 'utf8');\n if (newLockFileContent && newLockFileContent !== existingLockFileContent) {\n updatedArtifacts.push({\n type: 'addition',\n path: actionsLockFile,\n contents: newLockFileContent,\n });\n }\n\n // `actions-lock` may annotate workflows being managed with i.e. `# This workflow is managed by gh actions-lock.`, even if there were no updates to that workflow in this branch.\n // We should diff against Git, rather than against the branch's own updated package files, otherwise those annotations are left behind as uncommitted changes\n const status = await getRepoStatus();\n for (const path of status.modified) {\n // ignore the lockfile, as we've already committed it above, and any file which another manager owns\n if (path === actionsLockFile || !ghaPackageFilePaths.has(path)) {\n continue;\n }\n\n const newContent = await readLocalFile(path, 'utf8');\n // Whatever this branch wrote is committed as a package file update already, so only content which the tool changed on top of it is an artifact\n if (!newContent || newContent === writtenContent.get(path)) {\n continue;\n }\n logger.debug(`\\`gh actions-lock\\` annotated ${path}`);\n updatedArtifacts.push({\n type: 'addition',\n path,\n contents: newContent,\n });\n }\n\n if (!updatedArtifacts.length) {\n logger.debug(`${actionsLockFile} is unchanged`);\n }\n\n return { updatedArtifacts, artifactErrors: [] };\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LooseArray, LooseRecord, Yaml, withDebugMessage } from "../../../util/schema-utils/index.js";
|
|
1
|
+
import { Json, LooseArray, LooseRecord, Yaml, withDebugMessage } from "../../../util/schema-utils/index.js";
|
|
2
2
|
import { actionSchema } from "./known-actions/utils.js";
|
|
3
3
|
import { knownActions } from "./known-actions.js";
|
|
4
4
|
import { z } from "zod/v4";
|
|
@@ -33,8 +33,18 @@ const Workflow = Yaml.pipe(z.union([
|
|
|
33
33
|
* TODO #45191: pin to a version of the schema, once it is v1
|
|
34
34
|
*/
|
|
35
35
|
const ActionsLockfile = Yaml.pipe(z.object({ workflows: z.record(z.string(), z.unknown()) }));
|
|
36
|
+
/**
|
|
37
|
+
* The error findings of `gh actions-lock --json=findings`, as written to stdout.
|
|
38
|
+
*/
|
|
39
|
+
const FindingsOutput = Json.pipe(z.object({ findings: LooseArray(z.object({
|
|
40
|
+
severity: z.string(),
|
|
41
|
+
workflow: z.string(),
|
|
42
|
+
dependency: z.string().optional(),
|
|
43
|
+
detail: z.string(),
|
|
44
|
+
remediation: z.string().optional()
|
|
45
|
+
})) })).transform(({ findings }) => findings.filter(({ severity }) => severity === "error"));
|
|
36
46
|
const CommunityActions = z.union(Object.entries(knownActions).map(([name, cfg]) => actionSchema(name, cfg)));
|
|
37
47
|
//#endregion
|
|
38
|
-
export { ActionsLockfile, CommunityActions, Workflow };
|
|
48
|
+
export { ActionsLockfile, CommunityActions, FindingsOutput, Workflow };
|
|
39
49
|
|
|
40
50
|
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","names":[],"sources":["../../../../lib/modules/manager/github-actions/schema.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport {\n LooseArray,\n LooseRecord,\n Yaml,\n withDebugMessage,\n} from '../../../util/schema-utils/index.ts';\nimport { actionSchema, knownActions } from './known-actions.ts';\nimport type { ActionSchema } from './types.ts';\n\nconst UsesStep = z.object({\n uses: z.string(),\n with: LooseRecord(\n z.union([z.string(), z.number().transform((s) => s.toString())]),\n ),\n});\nexport type UsesStep = z.infer<typeof UsesStep>;\n\n// A `parallel:` group flattens its (recursively resolved) sub-steps into leaf steps.\n// See: https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-syntax#example-running-steps-in-parallel\nconst ParallelStep: z.ZodType<UsesStep[]> = z\n .object({ parallel: LooseArray(z.lazy(() => Step)) })\n .transform(({ parallel }) => parallel.flat());\n\n// A step resolves to a flat list of `uses:` steps: a normal step yields itself,\n// a `parallel:` group yields its flattened sub-steps.\nconst Step: z.ZodType<UsesStep[]> = z.union([\n UsesStep.transform((step) => [step]),\n ParallelStep,\n]);\n\n// Flatten the per-element `UsesStep[]` groups into a single `UsesStep[]`.\nconst Steps = LooseArray(Step).transform((groups) => groups.flat());\n\nconst WorkFlowJobs = z.object({\n jobs: LooseRecord(\n z.object({\n container: z\n .union([\n z.string(),\n z.object({ image: z.string() }).transform((v) => v.image),\n ])\n .optional()\n .catch(undefined),\n services: LooseRecord(\n z.union([\n z.object({ image: z.string() }).transform((v) => v.image),\n z.string(),\n ]),\n )\n .catch({})\n .transform((services) => Object.values(services)),\n 'runs-on': z\n .union([z.string().transform((v) => [v]), z.array(z.string())])\n .catch([]),\n steps: Steps.catch([]),\n }),\n ),\n});\n\nconst Actions = z.object({\n runs: z.object({\n using: z.string(),\n steps: Steps.optional().catch([]),\n }),\n});\nexport const Workflow = Yaml.pipe(\n z.union([WorkFlowJobs, Actions, z.null()]),\n).catch(withDebugMessage(null, 'Does not match schema'));\n\n/**\n * The `actions.lock` schema is owned by the `gh actions-lock` CLI, and is still unstable, so don't rely on the structure too heavily.\n *\n * `workflows` is deliberately required: if the tool renames or reshapes it, we want the parse to fail so that we stop touching the lockfile, rather than silently treating every workflow as un-onboarded.\n *\n * TODO #45191: pin to a version of the schema, once it is v1\n */\nexport const ActionsLockfile = Yaml.pipe(\n z.object({\n workflows: z.record(z.string(), z.unknown()),\n }),\n);\nexport type ActionsLockfile = z.infer<typeof ActionsLockfile>;\n\nexport const CommunityActions = z.union(\n Object.entries(knownActions).map(([name, cfg]) =>\n actionSchema(name, cfg),\n ) as [ActionSchema, ActionSchema, ...ActionSchema[]],\n);\n"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"schema.js","names":[],"sources":["../../../../lib/modules/manager/github-actions/schema.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport {\n Json,\n LooseArray,\n LooseRecord,\n Yaml,\n withDebugMessage,\n} from '../../../util/schema-utils/index.ts';\nimport { actionSchema, knownActions } from './known-actions.ts';\nimport type { ActionSchema } from './types.ts';\n\nconst UsesStep = z.object({\n uses: z.string(),\n with: LooseRecord(\n z.union([z.string(), z.number().transform((s) => s.toString())]),\n ),\n});\nexport type UsesStep = z.infer<typeof UsesStep>;\n\n// A `parallel:` group flattens its (recursively resolved) sub-steps into leaf steps.\n// See: https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-syntax#example-running-steps-in-parallel\nconst ParallelStep: z.ZodType<UsesStep[]> = z\n .object({ parallel: LooseArray(z.lazy(() => Step)) })\n .transform(({ parallel }) => parallel.flat());\n\n// A step resolves to a flat list of `uses:` steps: a normal step yields itself,\n// a `parallel:` group yields its flattened sub-steps.\nconst Step: z.ZodType<UsesStep[]> = z.union([\n UsesStep.transform((step) => [step]),\n ParallelStep,\n]);\n\n// Flatten the per-element `UsesStep[]` groups into a single `UsesStep[]`.\nconst Steps = LooseArray(Step).transform((groups) => groups.flat());\n\nconst WorkFlowJobs = z.object({\n jobs: LooseRecord(\n z.object({\n container: z\n .union([\n z.string(),\n z.object({ image: z.string() }).transform((v) => v.image),\n ])\n .optional()\n .catch(undefined),\n services: LooseRecord(\n z.union([\n z.object({ image: z.string() }).transform((v) => v.image),\n z.string(),\n ]),\n )\n .catch({})\n .transform((services) => Object.values(services)),\n 'runs-on': z\n .union([z.string().transform((v) => [v]), z.array(z.string())])\n .catch([]),\n steps: Steps.catch([]),\n }),\n ),\n});\n\nconst Actions = z.object({\n runs: z.object({\n using: z.string(),\n steps: Steps.optional().catch([]),\n }),\n});\nexport const Workflow = Yaml.pipe(\n z.union([WorkFlowJobs, Actions, z.null()]),\n).catch(withDebugMessage(null, 'Does not match schema'));\n\n/**\n * The `actions.lock` schema is owned by the `gh actions-lock` CLI, and is still unstable, so don't rely on the structure too heavily.\n *\n * `workflows` is deliberately required: if the tool renames or reshapes it, we want the parse to fail so that we stop touching the lockfile, rather than silently treating every workflow as un-onboarded.\n *\n * TODO #45191: pin to a version of the schema, once it is v1\n */\nexport const ActionsLockfile = Yaml.pipe(\n z.object({\n workflows: z.record(z.string(), z.unknown()),\n }),\n);\nexport type ActionsLockfile = z.infer<typeof ActionsLockfile>;\n\n/**\n * The error findings of `gh actions-lock --json=findings`, as written to stdout.\n */\nexport const FindingsOutput = Json.pipe(\n z.object({\n findings: LooseArray(\n z.object({\n severity: z.string(),\n workflow: z.string(),\n // omitted for findings about the workflow as a whole, like `invalid-workflow`\n dependency: z.string().optional(),\n detail: z.string(),\n remediation: z.string().optional(),\n }),\n ),\n }),\n).transform(({ findings }) =>\n findings.filter(({ severity }) => severity === 'error'),\n);\nexport type Finding = z.infer<typeof FindingsOutput>[number];\n\nexport const CommunityActions = z.union(\n Object.entries(knownActions).map(([name, cfg]) =>\n actionSchema(name, cfg),\n ) as [ActionSchema, ActionSchema, ...ActionSchema[]],\n);\n"],"mappings":";;;;;AAWA,MAAM,WAAW,EAAE,OAAO;CACxB,MAAM,EAAE,OAAO;CACf,MAAM,YACJ,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC,WAAW,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CACjE;AACF,CAAC;AAKD,MAAM,eAAsC,EACzC,OAAO,EAAE,UAAU,WAAW,EAAE,WAAW,IAAI,CAAC,EAAE,CAAC,CAAC,CACpD,WAAW,EAAE,eAAe,SAAS,KAAK,CAAC;AAI9C,MAAM,OAA8B,EAAE,MAAM,CAC1C,SAAS,WAAW,SAAS,CAAC,IAAI,CAAC,GACnC,YACF,CAAC;AAGD,MAAM,QAAQ,WAAW,IAAI,CAAC,CAAC,WAAW,WAAW,OAAO,KAAK,CAAC;AAElE,MAAM,eAAe,EAAE,OAAO,EAC5B,MAAM,YACJ,EAAE,OAAO;CACP,WAAW,EACR,MAAM,CACL,EAAE,OAAO,GACT,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,KAAK,CAC1D,CAAC,CAAC,CACD,SAAS,CAAC,CACV,MAAM,KAAA,CAAS;CAClB,UAAU,YACR,EAAE,MAAM,CACN,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,KAAK,GACxD,EAAE,OAAO,CACX,CAAC,CACH,CAAC,CACE,MAAM,CAAC,CAAC,CAAC,CACT,WAAW,aAAa,OAAO,OAAO,QAAQ,CAAC;CAClD,WAAW,EACR,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAC9D,MAAM,CAAC,CAAC;CACX,OAAO,MAAM,MAAM,CAAC,CAAC;AACvB,CAAC,CACH,EACF,CAAC;AAED,MAAM,UAAU,EAAE,OAAO,EACvB,MAAM,EAAE,OAAO;CACb,OAAO,EAAE,OAAO;CAChB,OAAO,MAAM,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC,EACH,CAAC;AACD,MAAa,WAAW,KAAK,KAC3B,EAAE,MAAM;CAAC;CAAc;CAAS,EAAE,KAAK;AAAC,CAAC,CAC3C,CAAC,CAAC,MAAM,iBAAiB,MAAM,uBAAuB,CAAC;;;;;;;;AASvD,MAAa,kBAAkB,KAAK,KAClC,EAAE,OAAO,EACP,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAC7C,CAAC,CACH;;;;AAMA,MAAa,iBAAiB,KAAK,KACjC,EAAE,OAAO,EACP,UAAU,WACR,EAAE,OAAO;CACP,UAAU,EAAE,OAAO;CACnB,UAAU,EAAE,OAAO;CAEnB,YAAY,EAAE,OAAO,CAAC,CAAC,SAAS;CAChC,QAAQ,EAAE,OAAO;CACjB,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS;AACnC,CAAC,CACH,EACF,CAAC,CACH,CAAC,CAAC,WAAW,EAAE,eACb,SAAS,QAAQ,EAAE,eAAe,aAAa,OAAO,CACxD;AAGA,MAAa,mBAAmB,EAAE,MAChC,OAAO,QAAQ,YAAY,CAAC,CAAC,KAAK,CAAC,MAAM,SACvC,aAAa,MAAM,GAAG,CACxB,CACF"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "renovate",
|
|
3
3
|
"description": "Automated dependency updates. Flexible so you don't need to be.",
|
|
4
|
-
"version": "44.
|
|
4
|
+
"version": "44.184.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"renovate": "dist/renovate.js",
|
|
@@ -347,11 +347,6 @@
|
|
|
347
347
|
"schedule-test-shards": "SCHEDULE_TEST_SHARDS=true node tools/test-shards.ts",
|
|
348
348
|
"tsc": "tsc",
|
|
349
349
|
"type-check": "run-s 'generate:*' 'tsc --noEmit {@}' --",
|
|
350
|
-
"update-static-data": "
|
|
351
|
-
"update-static-data:distro-info": "node tools/static-data/generate-distro-info.mjs",
|
|
352
|
-
"update-static-data:java-lts-versions": "node tools/static-data/generate-java-lts-versions.ts",
|
|
353
|
-
"update-static-data:lambda-node-schedule": "node tools/static-data/generate-lambda-node-schedule.mjs",
|
|
354
|
-
"update-static-data:mise-registry": "node tools/static-data/generate-mise-registry.ts",
|
|
355
|
-
"update-static-data:node-schedule": "node tools/static-data/generate-node-schedule.mjs"
|
|
350
|
+
"update-static-data": "node tools/static-data/update.ts"
|
|
356
351
|
}
|
|
357
352
|
}
|
package/renovate-schema.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$id": "https://docs.renovatebot.com/renovate-schema.json",
|
|
3
|
-
"title": "JSON schema for Renovate 44.
|
|
3
|
+
"title": "JSON schema for Renovate 44.184.0 config files (https://renovatebot.com/)",
|
|
4
4
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5
|
-
"x-renovate-version": "44.
|
|
5
|
+
"x-renovate-version": "44.184.0",
|
|
6
6
|
"allowComments": true,
|
|
7
7
|
"type": "object",
|
|
8
8
|
"definitions": {
|