Compare commits

...

11 Commits

Author SHA1 Message Date
Rémi Verschelde
dccdebbeec Add Godot 4.1.3-stable 2023-11-01 21:41:05 +01:00
Rémi Verschelde
78d4c04aa2 Add Godot 4.2-beta4 2023-10-31 11:30:53 +01:00
Rémi Verschelde
d27bdfd6d5 Add Godot 4.1.3-rc1 2023-10-27 13:53:52 +02:00
Rémi Verschelde
67352ad26b Add Godot 4.2-beta3 2023-10-24 16:07:31 +02:00
Rémi Verschelde
571ff6249b Add Godot 4.2-beta2 2023-10-19 10:47:47 +02:00
Rémi Verschelde
30426404b5 Add Godot 4.2-beta1 2023-10-12 09:24:37 +02:00
Rémi Verschelde
3a2388aa4b Fix upload-github.sh target branch
And make all scripts executable.
2023-10-12 09:23:26 +02:00
Rémi Verschelde
e0fbe2af47 Merge pull request #2 from YuriSizov/release-automation
Add a script to automatically generate and upload release
2023-10-11 20:44:04 +02:00
Yuri Sizov
40158a6a25 Add a script to automatically generate and upload release
The script must be run from the godot-build-scripts directory
used to build Godot. It requires access to both folders to
read build artifacts from there and create commits here.
2023-10-11 19:56:12 +02:00
Yuri Sizov
a68806e782 Move scripts used to bootstrap this repo to a dedicated folder 2023-10-04 15:45:58 +02:00
Rémi Verschelde
7499c6c2e8 Add Godot 4.1.2-stable 2023-10-04 11:46:21 +02:00
15 changed files with 1061 additions and 12 deletions

2
.gitignore vendored
View File

@@ -1,2 +1,2 @@
# Project folders.
temp/
tmp/

View File

@@ -2,7 +2,7 @@
"name": "4.1.2-rc1",
"version": "4.1.2",
"status": "rc1",
"release_date": 1695381769,
"release_date": 1695380117,
"git_reference": "58f0cae4af47adcac121cc220749ddbf778f4a81",
"files": [

View File

@@ -0,0 +1,82 @@
{
"name": "4.1.2",
"version": "4.1.2",
"status": "stable",
"release_date": 1696412730,
"git_reference": "4.1.2-stable",
"files": [
{
"filename": "godot-4.1.2-stable.tar.xz",
"checksum": "d9e3c948aeece3586632ed2a8c94ca2107a6b5b4bb1ae8dc264e350fbfcb4cc1f4cd4cf7fdcd61a5b0351511c12e34d83275a79d5e0361e2eee67c8447b5f831"
},
{
"filename": "godot-4.1.2-stable.tar.xz.sha256",
"checksum": "058ab5cb784432e38e913f40269136372c1804ff1c1c961b2460e72c4ed8d8e3663df6a482fb118b978eeeb61068562074f0cd9ec5f4ff957c4c882588e99d24"
},
{
"filename": "godot-lib.4.1.2.stable.template_release.aar",
"checksum": "afdd65208842cc1f52a9911e9bbcf8295cbdcd9fc6c49e6e425e7a3f2416eeb5a602983b44cc4e6b884404184c4176a526149f6018b72c19fdfc9cc0ebbcfa10"
},
{
"filename": "Godot_v4.1.2-stable_android_editor.aab",
"checksum": "7ed49960c2914715f1e62074adf5e05a670c5717fab79caca36f37cc40f404d35d47fb21dc48d12009e35d94b6e5377e340bfac7d1b14663aef392220ed178a9"
},
{
"filename": "Godot_v4.1.2-stable_android_editor.apk",
"checksum": "5ffb29f2706056c8cd96e40501eb8876c22838b2195e1a427f6b604ba7c0e086acc354a9651548ac415d0ef3522543fdabd81d2edbd5a3fb74268fcdcf2649b5"
},
{
"filename": "Godot_v4.1.2-stable_export_templates.tpz",
"checksum": "e776af634590a47ab5f32c8735165a9ac42baf2e79baac0a78c3584c5d03b6e1ccd377905612418e98c408766d745246d562a67a9a2927d36e69ac56f5eb0daa"
},
{
"filename": "Godot_v4.1.2-stable_linux.x86_32.zip",
"checksum": "e78908b41b3465cf6483d86f07d3b3062c28999b07fb40d2a196379bb24d5ea3a1fe0ea98b6b90cee08116c0004ff2280ac0b03cf000f34eeb350497a564f29e"
},
{
"filename": "Godot_v4.1.2-stable_linux.x86_64.zip",
"checksum": "b5fc01677105e3fad81514fb4c039115694a7869ecb0dfaa0677975df6c71c813f860fb1baefd86fe884323258a4a07e4c7af20d95e47dbbe40013a50cd783e1"
},
{
"filename": "Godot_v4.1.2-stable_macos.universal.zip",
"checksum": "2349b9333a7c82c1207db90fc52a3aef887af42eeac94bb61e71a9e59836cb5797c4d471bc01886b550fda6be5434a6218f246126cfda100df4800a6fb435f09"
},
{
"filename": "Godot_v4.1.2-stable_web_editor.zip",
"checksum": "be1b57d1c3d66b9ac646c775c31f604270c1a4de1c6325de1e7f4171f544b0addad058501e7a7bede4f756c305c845f4ab4e5547ff25de4d1307d123d85ab647"
},
{
"filename": "Godot_v4.1.2-stable_win32.exe.zip",
"checksum": "a93bc40ba468c3474012fc0e3fe0381fa3d60f47fb232671390f63eafb6566b837eb6c5224dc68d28ac3a2946e3b20e680096c505e6f17dc80ae95306a83e446"
},
{
"filename": "Godot_v4.1.2-stable_win64.exe.zip",
"checksum": "6ce21ff5474a2093e7ad61f106b156673d9e4e4c7a74c685c18a01ac422dbcecfeaa6b7144daea2fd9a994c608d2601dc39131b5e7a62af908868f623d3be217"
},
{
"filename": "Godot_v4.1.2-stable_mono_export_templates.tpz",
"checksum": "d082a9af1d7d36707819ab66d17f7bc0ca2e3f0afd4a66acd8196294393a8080f04c5cf4e24f7a5710fb9b2cc4da3861f0b65244b533fe73322af10877c35d95"
},
{
"filename": "Godot_v4.1.2-stable_mono_linux_x86_32.zip",
"checksum": "58c615b19fdfe0bff05acd2b9a434b5b91e56e0ddd4b249989af310d52094f5c025b2640d59a862eb22220116cbc714539469bc8a3ecb4e9f4c8df49fa0373a3"
},
{
"filename": "Godot_v4.1.2-stable_mono_linux_x86_64.zip",
"checksum": "ab50f0b0425c9b56f32962a0542a597f3e900a11333fcec41735119b4effc07693c564b46564cf453a85d0f83e4c7e13a284a3c7be78d50b46825b7028becaec"
},
{
"filename": "Godot_v4.1.2-stable_mono_macos.universal.zip",
"checksum": "c73bd7b39a3a3ecaa67fb6026f2d4e6173fb64d1651d649e69a061f3cdc3402efc23a72283f7306e2e88c435590e7ca9a97eb50312b497fda3314cda29d9d71c"
},
{
"filename": "Godot_v4.1.2-stable_mono_win32.zip",
"checksum": "95ad329ed92e3a6347a35ea71ecf5c35e2ce4685c7586156673f36a8c86ffc0b34c68b3b9bf93539072f76b514323d9d18d5a74a32ee39a40327bd3e97e8c871"
},
{
"filename": "Godot_v4.1.2-stable_mono_win64.zip",
"checksum": "26a823c1a5f0818d27db4e94f3b96985f2813619473696c4feb9e6080634668fc1090fbb39dfc7e49e38cbbdebe78f75677cf436e7c648ef778e8121c9e35410"
}
]
}

View File

@@ -0,0 +1,82 @@
{
"name": "4.1.3-rc1",
"version": "4.1.3",
"status": "rc1",
"release_date": 1698407632,
"git_reference": "f80c673cdf8f63d912d151eeaa866ee61ba28e41",
"files": [
{
"filename": "godot-4.1.3-rc1.tar.xz",
"checksum": "4718c6b09e43afafba7ca504873b61c962de1b68428833592f2f18b4d45d0c0cc7e3a2d88ce784c917aaa1d0194357ca8eec4e1ecee37ba12d3ec7907c07d83e"
},
{
"filename": "godot-4.1.3-rc1.tar.xz.sha256",
"checksum": "8763a162005d66f60aec1ed4b178d4390fb9223e29acab1d3baf86b67a92ec50a103fa3e34baaea21c08b7170a6ea4a03e88fdfb9fa1eccaea0867587c446821"
},
{
"filename": "godot-lib.4.1.3.rc1.template_release.aar",
"checksum": "f16e370fdcab0e197473dfff0bf76ce54ddd7d7d0ab65943f8808e1e5a7928a701f791b7660f7befa013eccb6967d55f850d3a69cbf7ab9ec1ffe750e2726fd2"
},
{
"filename": "Godot_v4.1.3-rc1_android_editor.aab",
"checksum": "45193a3cb2bfc5bcc12857990d6cd1ae2bb0b3c51199df8dc691620a07e584e87f8c95ef5a08814bc390c7abc7d3ad0711cb4a4794197ab4673b4e094ce753b0"
},
{
"filename": "Godot_v4.1.3-rc1_android_editor.apk",
"checksum": "f3247bf0309b206f3176fb4664b2b5778d0bfd73b4a30ccfe07e3cabed7c55007789c0135b8f3039a630c925bf4d090067b94d84a5a1f1dddcf541834fa5c91e"
},
{
"filename": "Godot_v4.1.3-rc1_export_templates.tpz",
"checksum": "c084f4b86bcf9ed45610822ec273f99b022d7147abddeb9602fce427ccdad135119a346c729cb0fa15de33a1dce8491dd7e1f47c45dbb52088e3452b70962497"
},
{
"filename": "Godot_v4.1.3-rc1_linux.x86_32.zip",
"checksum": "5ff6550824a018f0a1dcc1a47e34444764aff8a29b040de35fe2ff63bf7e3d50019d278b8da8d749a3549d6ec930ecbff802e36093a89d8f3adb2f96b6cfe29d"
},
{
"filename": "Godot_v4.1.3-rc1_linux.x86_64.zip",
"checksum": "d21f80e45dddfc4c7cd3b9c794a9be2ee3d1a1cbb49017c87e0c4e3f0a2a69ceda2529eddc84448fd8b5c5319b0d2ea0e316acf3f09d683e8021957e21615671"
},
{
"filename": "Godot_v4.1.3-rc1_macos.universal.zip",
"checksum": "95ce6a9111c2c643413bf8eddeba9bbbe2245083d4848e00bc10cd618b958201e04c14337255378c4b64d518c2b4accc165996ae6a51765ace4d4b53bef5c0ed"
},
{
"filename": "Godot_v4.1.3-rc1_web_editor.zip",
"checksum": "2a8764879927e562200ba384ecf2285fd7e29ead100214d52e19099c979b7843cfd63ef0eff02e2e2187b186f9adbf81e7d6dd5e6793f155a8788abfa1d2c30b"
},
{
"filename": "Godot_v4.1.3-rc1_win32.exe.zip",
"checksum": "e187dc0bd8965c91b3094212bf15c68f2f0ae9503b33126b1e3c11706a9dacec094347c2818069726a5b297bf077897cc89f9f3e23d9b59520202e82043ef7fe"
},
{
"filename": "Godot_v4.1.3-rc1_win64.exe.zip",
"checksum": "6e15461d18be10e2b39bcce749822dd4e0db092dc407db8b679745f73aa2006640c30830a55378f11f8212ff44c4a501b44b53c4f6975fb7a5fd6d2cc9842226"
},
{
"filename": "Godot_v4.1.3-rc1_mono_export_templates.tpz",
"checksum": "0503305ee86724165a522499d0580b8b140dd327131fc1e9f492c0e142285a709479c8220d3db9dda6688e6036f5abfa35444805294cbf1e461cd2211677e3a7"
},
{
"filename": "Godot_v4.1.3-rc1_mono_linux_x86_32.zip",
"checksum": "f8d67733cd255d9871669895bf37947f4c5e1676c2dbba8697324bc71617887964b40d4e5d579ff790c961d2dac71806b278a54a9b1c83ad60cd23df5c8ea2f3"
},
{
"filename": "Godot_v4.1.3-rc1_mono_linux_x86_64.zip",
"checksum": "591d43ee1f091ecab14a382dd54c0771ad548eb8fde174b996a1695409215fa52a09fa93e7abe26ee1ec0beff9892382550dbbc38e5e9757a0aa1792a8acf12c"
},
{
"filename": "Godot_v4.1.3-rc1_mono_macos.universal.zip",
"checksum": "f02a4dba10bb0a6008f710c6bb6e03dfb68e1c4e794ad02635535e19ea28ba05f6bf652318ed97830cb891b73fa9c69c7b2b104c0b35b29184b5d28776ef73b6"
},
{
"filename": "Godot_v4.1.3-rc1_mono_win32.zip",
"checksum": "08ea60fbd343b83e9aed2134d17516757cbc181f2ff02f7e85f2d6dc1086178358a9c74ba2f9ce34bb0a2813b984a1ea9a2aeea1a01d19ef49fe557c2a77e1e6"
},
{
"filename": "Godot_v4.1.3-rc1_mono_win64.zip",
"checksum": "c8e268038d25b7ddf3baddc26ba5703736eae9acf5c15da49c2173c225f7eff218107422056b8df0e220cca0d022139bfff075be0a4aed58724565aeae7b8d3b"
}
]
}

View File

@@ -0,0 +1,82 @@
{
"name": "4.1.3",
"version": "4.1.3",
"status": "stable",
"release_date": 1698871265,
"git_reference": "4.1.3-stable",
"files": [
{
"filename": "godot-4.1.3-stable.tar.xz",
"checksum": "e8dc812fc1bd98ce4d691d51fceb75d943fb40790c5a640e6178eb53b4de8b1078de8e1649e182963cb7beea26b2365c202f6deaea9bb679f789cd546d29f858"
},
{
"filename": "godot-4.1.3-stable.tar.xz.sha256",
"checksum": "43cfcdc8d44e6de5d2f2e9daeca9d3561e8a6f7bed4f7f4d6fff35f6120edb264af0ed57819769aa1320c1d2b5e5156e3c506e0b45870eec11de97ed634177d9"
},
{
"filename": "godot-lib.4.1.3.stable.template_release.aar",
"checksum": "3b9fc64063b5d2cefcac4bcf3b21ec40e516170e029d5343a79ce8605e734aee1cdeb5373c287ce00c5cb123d38e29b0ab5652fea49769c36a00dc55260d0219"
},
{
"filename": "Godot_v4.1.3-stable_android_editor.aab",
"checksum": "13f47fb5ce7b238d955d546e8de0d552662d157c11aa4056df3275e3ed15bbac6b61638a1b1d0add985390135809c83cda1f454425b660ccbc97934ba2ee5889"
},
{
"filename": "Godot_v4.1.3-stable_android_editor.apk",
"checksum": "fa27812071d804a0b7f540f9763ccc4e8d771d0466980ceaa5a17209a39c635f88cfdd44ffae6c2fd4e9081ac9f44e87ada1f6fdd79a8e60f67290e119dfee61"
},
{
"filename": "Godot_v4.1.3-stable_export_templates.tpz",
"checksum": "96b18f272ebaf7d0cdd24e8dc2b6cb49e2d0acf6266c9a37468a1a375b018ca065539b3aa80a7a6c185ad40fb7a5471ef75746da16fc229653df3f31139e57dc"
},
{
"filename": "Godot_v4.1.3-stable_linux.x86_32.zip",
"checksum": "2029a37864a5b52f82f459dfc1d97b48bd5abae840b48ba259c5ae421dd683c4f82489c3691db2e9f2211ded68b03e8b30a6386c79d09a28d25eb9fdd70d3434"
},
{
"filename": "Godot_v4.1.3-stable_linux.x86_64.zip",
"checksum": "a805389b6426874ab5b2a512e3227d7f1aca7b4e6f17bb4e98a29d621a59ce90f2a9009961ab4ef1c111f536583bec6a507c29ad4a6cfcb2a4efb1d20618d29b"
},
{
"filename": "Godot_v4.1.3-stable_macos.universal.zip",
"checksum": "479789d910f8adc2b8a8c152cfcdfc9fb29978da6a50c4dfc92a50ff74619701e1a367ee7297e6cdd151db810c4208f6e2a50a6b87c8526ad198b450d1e803f1"
},
{
"filename": "Godot_v4.1.3-stable_web_editor.zip",
"checksum": "2e616a2722874aacd7f6531459eb9da636fcf47fe3291256f0e5edc215e4f4a6ad9753246c6761a125173ada44aee58727e8b7e391b08497a1d4b9d003a2f988"
},
{
"filename": "Godot_v4.1.3-stable_win32.exe.zip",
"checksum": "80998adbff47f72963f2178489fdd982c958368f57ff810b7da99a0bc0826a63a0255545593e4a1dfc21c12ced261f5c1af1b5e82b2ccad2c78b0a563332cd68"
},
{
"filename": "Godot_v4.1.3-stable_win64.exe.zip",
"checksum": "6f490e68ae83f6090f89b51f78322bc524e473723909bf15e083141da530183a9f79364c8e5b7f78658cea7c47cc36796db60f761b2c53d8398cd84f6fd3da31"
},
{
"filename": "Godot_v4.1.3-stable_mono_export_templates.tpz",
"checksum": "fd7c57558b9e2812497adf92d6eb15f9799f01c839bd16b1c12c6db3decb684dbbc5060a2ab2602691f09b0bc8e03c4e455ac265d67190f439f643d712e1d9c6"
},
{
"filename": "Godot_v4.1.3-stable_mono_linux_x86_32.zip",
"checksum": "12c8fa91c0836ee1ab6d8faa7c84ad8448683b851ee19c8ff6ad93d0cd80a56223f110d221979b2450cdb2b2f4d794edfed05a5e4a382cb87e6402c40d352949"
},
{
"filename": "Godot_v4.1.3-stable_mono_linux_x86_64.zip",
"checksum": "2ebaf9d68e2fa0153346a89b775ad491435547e152283b2b57ba46be8d4b768ef8bab9a5ff991471f103ffbb539dd48f38a3da9176b081aa1c596758925c3c83"
},
{
"filename": "Godot_v4.1.3-stable_mono_macos.universal.zip",
"checksum": "6161883ea9bfc2e1620311aa8a842084ee3672042037e1f1d7410599964a6b5faf96aafb347bf701c4c63841482b845178f47556a44f9f8b5c2ecb530cd90fb4"
},
{
"filename": "Godot_v4.1.3-stable_mono_win32.zip",
"checksum": "ff5a96efd66cec8b4b89be49c7ac9aef61b85e88b994c369f1ace7045b75b1094572106c28ad411dbaa6bc8bbd288084ac5b49b48dd8403f1939501007a86311"
},
{
"filename": "Godot_v4.1.3-stable_mono_win64.zip",
"checksum": "f73388da931b58c48b144db92576274abc18b944bb0ec94fd355c118b814b83eb4f486228c9c7adbe0a01da491e9b350200c28a902aed78dc0eef48f72f1e43e"
}
]
}

View File

@@ -0,0 +1,86 @@
{
"name": "4.2-beta1",
"version": "4.2",
"status": "beta1",
"release_date": 1697095477,
"git_reference": "b1371806ad3907c009458ea939bd4b810f9deb21",
"files": [
{
"filename": "godot-4.2-beta1.tar.xz",
"checksum": "cedd39add1596ff2d5858a904f9b04683be1ae59390fa4340b326e1a9cda5480b6ed71964bfd3c4f832d7b849cf2a2b46717509e0f9d2e129f7f53b9166e6482"
},
{
"filename": "godot-4.2-beta1.tar.xz.sha256",
"checksum": "7463fc82f9d633553157f7ea9a760fcb6ea89b2e94f3d1e350cf48c8d079bb12647c7788260f6b77fed3337c8e9e45bbb2a6e18c5dcecb08319bb06120807690"
},
{
"filename": "godot-lib.4.2.beta1.template_release.aar",
"checksum": "307acb80ffb11f1136e64c2c2d17c67868805e0c72072405ad46574c6ceb9872d22f7ea1c685f6fc5bed59dcd2f57fdc114183276f8750351acee3043be9a30e"
},
{
"filename": "Godot_v4.2-beta1_android_editor.aab",
"checksum": "302574253eaca2381f5be8a74415c752dad478b5c56fd437c2cb47c873dc2552a2157395b8445a78b14b8c3a6ee9b59142c21d3df5dedcc4543058f518909b5c"
},
{
"filename": "Godot_v4.2-beta1_android_editor.apk",
"checksum": "9d0028909e40af2bc97a5f8923987c2a2df66eb8fba7ac10902534d41970b8f979f71ec1ce3a4c1dc8e82c027e264b7b4daabafa0e546a0ea38293c8762f66f2"
},
{
"filename": "Godot_v4.2-beta1_export_templates.tpz",
"checksum": "be19d1613fad8fc0c1fea2ff44491e1502d04bbffa6faeb6854f56bb2f85e94fee65f512c428073b5064977fb768e5d3da8300e29b596d8c46d14ad05c3a4acb"
},
{
"filename": "Godot_v4.2-beta1_linux.x86_32.zip",
"checksum": "bc243d0528eee7385a70883c5db39357f5949e3f74c5d29c4adfcb1a91cac33671dc0bdde0e6322716c244a6346d8f31b28807e6711c3fbaacacc3428999be5e"
},
{
"filename": "Godot_v4.2-beta1_linux.x86_64.zip",
"checksum": "2ba328723d9365cc3034c06c2b0992c3b31398d553e7cc17b461d4e3ad0ca8a72d25ab7d1f1cbea62c204ae7eb719ab0168b0b8153b5afeeb43a157103bb281e"
},
{
"filename": "Godot_v4.2-beta1_macos.universal.zip",
"checksum": "049a7d31383f5ece3e99df144611ce4ad9d8e36f69144419115a21bf175a4189e5b4a785ff3b96d6a5b00f75e113b415e36336e885d2eb47510bd94b5a7acdc0"
},
{
"filename": "Godot_v4.2-beta1_web_editor.zip",
"checksum": "4d69dc8586cc98c8717df922209ce84985c87755d7519dbde34aab7d645313eba79af11897e50fa9de4350553d235b62c71bc6f9dc9f670d6d8b95db27d3c40f"
},
{
"filename": "Godot_v4.2-beta1_win32.exe.zip",
"checksum": "bfa272aaaad3f243002315d51a1a56aa149ad6fab512e32bba55e532f50853a9a707a05f51c138a7737548aba7f449a44b213914f60c15ec52c7f6b7ae9bfa43"
},
{
"filename": "Godot_v4.2-beta1_win64.exe.zip",
"checksum": "bff452173bc2d3361b5960e2bdca7d9323e239c1af5ccad88bedc8f465bade284e16f013606834dc707d8378daf1663e59bfb3473c29d58dd56085a068f76f02"
},
{
"filename": "godot-lib.4.2.beta1.mono.template_release.aar",
"checksum": "8c8505646f593d498a430ec50caf353e3794afdf98ed568ffa767a4a4466e99184df791b569eddb5e57282ba164127c0ae3336606b67e8971d6710ab86b6c41d"
},
{
"filename": "Godot_v4.2-beta1_mono_export_templates.tpz",
"checksum": "97d5a32965db87fd2a31f494670403adcdb14ea4e3c04640a93244ba6520222eaa4a24964cbb556a80444193cc29f9b61e31fbe99c6182d0434249c047a9e140"
},
{
"filename": "Godot_v4.2-beta1_mono_linux_x86_32.zip",
"checksum": "bb8db0c6580c9c8de7089546baf4e42de589d54722c745f0db36f673492e9f61609899d4ad72271a7ddb10d7a71a92cbcd789808e48651cf07af6de76b72fd20"
},
{
"filename": "Godot_v4.2-beta1_mono_linux_x86_64.zip",
"checksum": "07499691ff05d3077a912f8b104eaf9ed085db162c38763e37ee057c4fb36324686539211f57ab98db2a0d5fba274bb7ccf4383306d213f579782a51bdd831cc"
},
{
"filename": "Godot_v4.2-beta1_mono_macos.universal.zip",
"checksum": "deaf4afe2f51588613a7727365486b05897ead1507dab87029fc6a0d84b10056b43954cb2f5aef075f47a4b6163777c263b0390583b5aa7b80e9c06355ee0958"
},
{
"filename": "Godot_v4.2-beta1_mono_win32.zip",
"checksum": "c4a5089c540daeeab0067927e0b787fbad91a5d47d41e5b5fe9fea54d9d5ca2cdec39f83b41ddadb3d168837f8f4654bf04d2b874ca9d8e646557feb02f13d27"
},
{
"filename": "Godot_v4.2-beta1_mono_win64.zip",
"checksum": "85b7a372c7101d11493a60c693d4c841270ead936388480ac25679cf744f0bd8d498c702c6d228fa01575a8900c4a17d384885d0cb84a5f6dee5e21718dc0e22"
}
]
}

View File

@@ -0,0 +1,86 @@
{
"name": "4.2-beta2",
"version": "4.2",
"status": "beta2",
"release_date": 1697705267,
"git_reference": "f8818f85e6c43cdf1277e8ae85eba19ca0a003b0",
"files": [
{
"filename": "godot-4.2-beta2.tar.xz",
"checksum": "bb7ba9c92bfbc19c5d6fc2f89a9d48c5990d0433a183031cde678d5cfdf6d8faa92ddadd1e471d129af94159cb91cbf33064b6178f44a4041e811d413e7d4b7f"
},
{
"filename": "godot-4.2-beta2.tar.xz.sha256",
"checksum": "adeef432f095ae9232cec8f952d8dfc4497caf2ec94a10cdb42f3e8d987eb007f4cffa9cf5be7567cf25b3c7bdaba3f30f288b7572d4c0a34da9b5a6bca0b686"
},
{
"filename": "godot-lib.4.2.beta2.template_release.aar",
"checksum": "2f56464d973dc0e1882f768da4d9feab3b67f08bec697661ba44305b2194dec1abe6c35e34e5dbc9a8b85d5ea9e89a6c3c893297e4b3780e3f2d4908fdf77fb9"
},
{
"filename": "Godot_v4.2-beta2_android_editor.aab",
"checksum": "0f5d483436706db659558edb89d2bf9f3e652dbcb150f1d0696a163e39f81a11ae8e627ddbf9645ee7469771c727dba5ec13bee84d6f37809786cf0403f36e25"
},
{
"filename": "Godot_v4.2-beta2_android_editor.apk",
"checksum": "0474527fcba4c936f96d288410e97c98abbeac10cb7f882a94b11741eb8cff583f48401cc95ed4e6f835bd04297a65bd62310deb2295c980199a2245a6ed2fe9"
},
{
"filename": "Godot_v4.2-beta2_export_templates.tpz",
"checksum": "9917124a3bd4b4197a48367fe645730a97d52564f8eac6693fbc24031af2e7c0985f1d4a473f82adc6cc0547619bfadcb667ba9ebb9dddae4fbdec68f56ea71e"
},
{
"filename": "Godot_v4.2-beta2_linux.x86_32.zip",
"checksum": "f0b9b86d85868f06e8ca6ee9a61409254681f9dcc5e232bd7a4beda4d634c9aa384fac5f74ffec0a3beda960dfaae973a4a4df1d50b0e95b4ddfee7e758af041"
},
{
"filename": "Godot_v4.2-beta2_linux.x86_64.zip",
"checksum": "2f9938fa57b27925740ff75f70185a8ac940e6def5393e407f7b98417ef20b0839cddc7ed1b21afff975a4cb6c98a07442a3506194dc83d1c637531f23bc4480"
},
{
"filename": "Godot_v4.2-beta2_macos.universal.zip",
"checksum": "e778c6245cc95c36e4d46081efb4810603fcf07765959e84c1988578f0b741477fc847589125fd6b4946dd1b3d5c59e27f0540be91c4103b9b7fef3446986dd9"
},
{
"filename": "Godot_v4.2-beta2_web_editor.zip",
"checksum": "753804dee7890663d102427123f493822a637d4c980ed80334ae44fbc1d8348706145e527bd99ef866e1e0da6668a87f98c7b6c6798b9fd8a6bffd6c2df2ae7d"
},
{
"filename": "Godot_v4.2-beta2_win32.exe.zip",
"checksum": "5893f84c2e232cb2a5c44add547a70e70710524b5fb02f9870126e7ad45b1e7cb35a15e9f0474d23814d0d2c5bd6177dddecadecc08687f1a01bb341462ae13c"
},
{
"filename": "Godot_v4.2-beta2_win64.exe.zip",
"checksum": "bae4971ad7938684c786feae1a01a312ed780bfaaf36e8630c35637e6fc84a292579a6f1625eb5cb1769cc56aa8be2311a047b7fb34efddd81e9ea907a4c29c3"
},
{
"filename": "godot-lib.4.2.beta2.mono.template_release.aar",
"checksum": "afc7d2215c368859c329a2a517da065e1f4d45ca38906ecfd93aa9eca69d1a9f09db4ee4a7c87485cf13e812649ab4edb360fcba16df6c17f18e3a4064519088"
},
{
"filename": "Godot_v4.2-beta2_mono_export_templates.tpz",
"checksum": "1949af0bb1d71f708273d5706990e26dcf5cfb85d75de40726f305570f93ff78b47cf5df57d4f5c6f36ad5cd8c4314108e323fbd06fb332508bdb8a142f1ff31"
},
{
"filename": "Godot_v4.2-beta2_mono_linux_x86_32.zip",
"checksum": "72086d18e482f1b6d19cbc8669f1c5e30f0de0774265589d0e31cbc28f534c108a609b412ea7c93aab872fe290de1e1663a36016621aa732c16d1d6607c8a713"
},
{
"filename": "Godot_v4.2-beta2_mono_linux_x86_64.zip",
"checksum": "bd2f8c156d3885960bcb661bf354d82a3feed14d32a41700a2514fccfd9823f0f9a018a0bfb97d71155fdb2d0c51e661ae3c94f23fc92527350ebe4ed9aadd33"
},
{
"filename": "Godot_v4.2-beta2_mono_macos.universal.zip",
"checksum": "d0df7045452b93b9a88a124776f1912974bb893ef0b4378f74aa574b2de420aa58ee21341611bc25bb8ee8bc36eac93d3ecd1eb96119ef33d58586e4a7a5b9d0"
},
{
"filename": "Godot_v4.2-beta2_mono_win32.zip",
"checksum": "c9279cf1584f3584cd2a3671f61eabafd74ae7bf48e76a0602fdd1977525d46160650ae8d0e0e223514fd5309a54f9f8258198e9783bfa2048b688ea48d7e607"
},
{
"filename": "Godot_v4.2-beta2_mono_win64.zip",
"checksum": "046bb692a852524bacbd3d044d1928225859da652350730a352411b03e12db860cdc73026797a20c95fd1a3beed9020a25b7b157083397b9143e3cf55c2b0250"
}
]
}

View File

@@ -0,0 +1,86 @@
{
"name": "4.2-beta3",
"version": "4.2",
"status": "beta3",
"release_date": 1698156451,
"git_reference": "e8d57afaeccf0d9f9726746f49936eb93aa0039b",
"files": [
{
"filename": "godot-4.2-beta3.tar.xz",
"checksum": "18439d3e5a35834c16bf479c267a27cc3ead398900b39b083c1805895dde135ecf0af5ed826844989f9f9a6baca7ac9cd0611dda8ea9e2677ad80249b2ddeeb9"
},
{
"filename": "godot-4.2-beta3.tar.xz.sha256",
"checksum": "4116f7a4122a9795c3eae56d54c3e9e049e16ceccf358a55d54730a651908074c780d115b3beb432dcf08c0d030214c3cabb4b59acc1b896547d229e9edadb7f"
},
{
"filename": "godot-lib.4.2.beta3.template_release.aar",
"checksum": "edbc0451d469378d31ae1b2231c37ca44f9e4c1fc63d657eb2ce6eca14f54522ee221a29823085294689ad7b9806d39ddeb8616839f679cc7c7b1f3eb064734b"
},
{
"filename": "Godot_v4.2-beta3_android_editor.aab",
"checksum": "dcb8434064d8413c3657b7105d71a0d543dbbd2d98bc81317e9bd25d1af1713a51f4c18e09e300b80f2599f63953779522ff75a280345f10cef38f32fa1fb2d5"
},
{
"filename": "Godot_v4.2-beta3_android_editor.apk",
"checksum": "b084bf2a25b54eb5a9a8457eb7bb0618b44794eb88e65e258cb0c3b40029e14c6331ee5ff2ad1209365eeba1f07d405c14f2597a7fa660786ae066fe5a86b214"
},
{
"filename": "Godot_v4.2-beta3_export_templates.tpz",
"checksum": "24c04c56523196126374648cc85c458eff554888913b7562fa52b4cf88f06ccaf1900fa372e54aa5ec35e96fe4b99aa24884c5a005dc1ef5da11cd608e3415dd"
},
{
"filename": "Godot_v4.2-beta3_linux.x86_32.zip",
"checksum": "00fb08b30c13d47f38688311ef8351ccc1e8cddf891dd6fd2bbc7bb3d6f6ba570c2ac612a296fe4adf4ff45ec5d2d865f4ae2d80e276238ae41276ae703b2137"
},
{
"filename": "Godot_v4.2-beta3_linux.x86_64.zip",
"checksum": "250874c620131ace3c40f8bc7a327271f06b3a0f6a5ca7289fc20c21daa48f0f316cc6ac2bf2e3270f28c41deb4cd014f4544d6133f4732dc1c1fd15de149cc5"
},
{
"filename": "Godot_v4.2-beta3_macos.universal.zip",
"checksum": "49df596244d5704213d3c75c086234e9f6c3c7638da4e35d2ce881611e951c9f9f77ce68d9344378565c3a7bea632dd41ce743615a72bede8fe250d86caa1b3b"
},
{
"filename": "Godot_v4.2-beta3_web_editor.zip",
"checksum": "ee04423428cceb0e6595eda858be38a1ad5a6c12239deb280901d4ab79c9289d3b52fef669a6179b8b40ea84db4a66cafb4c0387383130bd57534d736c7f6f5b"
},
{
"filename": "Godot_v4.2-beta3_win32.exe.zip",
"checksum": "7e3958d79e60cfee9735cfa5016336289d12bd22418ddeca5bcddc1f9773f4604a8b8ed0d16ccfa2829e66e749ad9cdc94b006ba5d870e6445a8bb3460bd4b6b"
},
{
"filename": "Godot_v4.2-beta3_win64.exe.zip",
"checksum": "eefe4028ed45a35a500ce66416c0ea8e43520de40fffd5d30371222eec35cc18bb8febcc6076e0434c385929b3ffc0efdc7e973f1257573b6132fe0dc601059e"
},
{
"filename": "godot-lib.4.2.beta3.mono.template_release.aar",
"checksum": "375fcbcb9fafcff96ef80b05e33065555df8000e803f7b2acb50ebf698e0e1b9516626f23246527f83e9328951966ff94dd79b43790c78a451c14b4c001c9ac3"
},
{
"filename": "Godot_v4.2-beta3_mono_export_templates.tpz",
"checksum": "e578c1d9a55136baaccc3b7b636525917738e271cd4e862634f8969eab4a835e6874225fcbd59f4ef64faead50c79567b633d84bf3f95aa1ffa0346ef48f0423"
},
{
"filename": "Godot_v4.2-beta3_mono_linux_x86_32.zip",
"checksum": "ebf175f7f15d06944e8c4775a820e6d03603d00f28c5e301c476600390513f03335823098029a7abf490dcef097daa9e218176be27d4117bb2ee21591c96c234"
},
{
"filename": "Godot_v4.2-beta3_mono_linux_x86_64.zip",
"checksum": "62740f46620e4837c53e1774d35c56cfe845198ea27b49785fdc4f39b2755388f61858ec1d88639f982762e306fd51adb230c2c768e71e8329b67f4d9cae3e45"
},
{
"filename": "Godot_v4.2-beta3_mono_macos.universal.zip",
"checksum": "883905fc42871354c7a4883005d99cd57946ee4fe5792cb7caca7d0b9bb80529c580bed24ea33c9862ce18218b698614d32c02745cb3bf4c5824a4719429b0d7"
},
{
"filename": "Godot_v4.2-beta3_mono_win32.zip",
"checksum": "de9378b59cae19c6cbca49b11154171f38f511306b87f44a67e3beb1b2d135e732a268b176b419521bbab43a7e74af79cd5840ca6fe93b4788a8094ed6607376"
},
{
"filename": "Godot_v4.2-beta3_mono_win64.zip",
"checksum": "ee73502cca53736cc329de6e099180d0676a85a39de24c366157e22ed5c42470ec65d87cdb5b1d1b69b5cbbdff11d60210bbbebfa86c843e657543dd4cd63de4"
}
]
}

View File

@@ -0,0 +1,86 @@
{
"name": "4.2-beta4",
"version": "4.2",
"status": "beta4",
"release_date": 1698748253,
"git_reference": "93cdacbb0a30f12b2f3f5e8e06b90149deeb554b",
"files": [
{
"filename": "godot-4.2-beta4.tar.xz",
"checksum": "195aee99bb2f17336c6e214a2a43f35fbd3546c4ca3b88520695ea5d5f4f168b7139f22af778100c18ff8897e6c74c4c2be5a20c734a2214a2e39e856e734300"
},
{
"filename": "godot-4.2-beta4.tar.xz.sha256",
"checksum": "f5bf28a8508df66dfd4953002d874aee9a7a98a6e276db03f379d43a703bd5e0d58bafd7b3c48fd63b6368e217811443586314ecdd972ea765bfed9e7465201d"
},
{
"filename": "godot-lib.4.2.beta4.template_release.aar",
"checksum": "7d68cad645a85664bac8debf775ef1ced2f25be60937e83d7111b7143bc0496cef3ef6f52dc1ae69a84d2fc23ddde5f398fdf2d7c8257928a0724114e250ca82"
},
{
"filename": "Godot_v4.2-beta4_android_editor.aab",
"checksum": "08fb47e81e72026108cc319d924f76aa99a13b4e4f248c3368c68a7233b32c3d929b82e2f87415db0ae5e4da24ee73c0a8ff33ab9a3a6ff5b84943fe623e6d01"
},
{
"filename": "Godot_v4.2-beta4_android_editor.apk",
"checksum": "4a4bb583a25aeda68b9b38e9c32ad9cf14e6fd6cac9db70be3937d287c2754f0473395f2a48e97969f8a55aa7b6588972ea49c3456c60a8bc5b64c822d39f7b8"
},
{
"filename": "Godot_v4.2-beta4_export_templates.tpz",
"checksum": "7e6bfaf151c40065547b6f9ca4c2c92237358d907c4fac934fd6e29b1cf8091cacc4790c9336f0bdf04d2340b0f0a04a3c96b646c27517d78b776ed6f4d5f2d0"
},
{
"filename": "Godot_v4.2-beta4_linux.x86_32.zip",
"checksum": "797338f44355f1722d478d73c4afb9bf9800523d21f67d6c58f26e5c093e99f2c33423745a5acc8c3cac837fd6cc807e9d8fabce57995781302b5a2d0413e6c1"
},
{
"filename": "Godot_v4.2-beta4_linux.x86_64.zip",
"checksum": "de159d1ed3ff31ef2a9179b1ce0c777a4615bbbc92144d7dc3847b464ba12160354785e2266eddafc2299324a99e4cce615fde7c76e9fdca3f57c8856c83ec1a"
},
{
"filename": "Godot_v4.2-beta4_macos.universal.zip",
"checksum": "bcab41802ad2bfdd81b963510c99a9fac255406bfbb6bacda17e3ee5915ed15d5e6756e384001827a057fb9eac0ed21af7eb2297b8390d0cb0072b54be1b88e8"
},
{
"filename": "Godot_v4.2-beta4_web_editor.zip",
"checksum": "6158e0abf8aa5f8c862fc49bafc213df29e3501adf76c7bf6c2d3b24804cf10f96a8b0fa248313983254d035af8a8eb2ca457b59ea7424cd368d7d61e7a9be9b"
},
{
"filename": "Godot_v4.2-beta4_win32.exe.zip",
"checksum": "03899aa48d3af49bfbaa3166ea2d59e14780b7d7dd7cbf14f7d9fc6b6346d87ff18e512758f0c56d253d5308dcd422ceb703041905ba95ff36ff1e361ecee4bb"
},
{
"filename": "Godot_v4.2-beta4_win64.exe.zip",
"checksum": "3e18a9705adda187cc37ffcb3e3b89c12daabe5dd00f75c8855ed871be311bc777b799ddf23aef59cf4ae84e49814dfc7d10dc650dd9a28fc5c3721bb3334cff"
},
{
"filename": "godot-lib.4.2.beta4.mono.template_release.aar",
"checksum": "a2077cabb68f968aec957fef30e1b227c918c9f71f0c0d86f87ffb26e7189befd83dfd3766076d261124694de82b6750e361d41f26a06b8ca81cf7cb4b518628"
},
{
"filename": "Godot_v4.2-beta4_mono_export_templates.tpz",
"checksum": "8816f3db86960f1379af59f7f125c19dff3324b0ec4a4b1d55e751e459d3b1599a6b7a5ce2334e4e3e9ef970e59c6ce866f5e2d1a07c61d62294c919c0435d10"
},
{
"filename": "Godot_v4.2-beta4_mono_linux_x86_32.zip",
"checksum": "241f2ab26cc08a97f7db91b4f6f86251162d39c899bd3f7bff54403db71afed70edbc1ffe18b42ab20410527238a371620027c19776e75b029eab4a4edbb684b"
},
{
"filename": "Godot_v4.2-beta4_mono_linux_x86_64.zip",
"checksum": "0bc2b0f8744247a2990b86dc01fb0110208346f6c9380d9aba12aac6d4b5600655d4fb1d29d8c2d70aab1cc504052361f411a1cdb5476c52f2e5b2dab5b1da5a"
},
{
"filename": "Godot_v4.2-beta4_mono_macos.universal.zip",
"checksum": "2efc7f5556be9d37d89345ad18712b8e732fb420cac5adfc90402483b3bb2f06b5747b39cafaf3b185bfba148f819b4f29e6b4e5594394e5e8dbef2291358a67"
},
{
"filename": "Godot_v4.2-beta4_mono_win32.zip",
"checksum": "de983de93606d13ee40f608a046defa259104318fe72c897123027cd215118b54256103856cc7413d4807618fc5c5e66b5cbe09d891fb41861636cc581d186cb"
},
{
"filename": "Godot_v4.2-beta4_mono_win64.zip",
"checksum": "68b766076eb46649a9dba3521621a441acd79a9635b6a2cce76e13003d7f911725ec7b75e74c4f30f948b7dda568c88186b51d7913b265bac7535e0d53fd9025"
}
]
}

View File

@@ -1,3 +1,18 @@
### This script has been used to generate initial data for this repository
### and is preserved as a reference. DO NOT USE IT.
### Generate commit history adding each official release in order.
###
### Make sure JSON metadata files are put into the releases folder.
### Using these files this script recreates the commit history,
### placing each release at their approximate time and date of
### publication. Each commit is tagged with the release identity.
###
### Make sure you do not rebase or otherwise change the history
### afterwards, as that destroys git tags (they remain assigned
### to old commits).
import json
import os
import subprocess

View File

@@ -1,3 +1,14 @@
### This script has been used to generate initial data for this repository
### and is preserved as a reference. DO NOT USE IT.
### Generate JSON metadata files for each official release of Godot.
###
### Files are put into a temporary folder tmp/releases. To generate
### the data we extract dates and commit hashes from releases published
### on TuxFamily. We also extract SHA512 checksums for release files
### where possible.
import os
import urllib.request
import urllib.error
@@ -96,9 +107,9 @@ def generate_file(version_name, release_name, release_status, release_url):
# Open the file for writing.
output_path = f"./temp/releases/godot-{release_name}.json"
output_path = f"./tmp/releases/godot-{release_name}.json"
if release_status == "stable":
output_path = f"./temp/releases/godot-{release_name}-stable.json"
output_path = f"./tmp/releases/godot-{release_name}-stable.json"
with open(output_path, 'w') as f:
# Get the commit hash / git reference.
@@ -179,8 +190,8 @@ for match in matches:
version_names.append(subfolder_name[:-1])
# Create the output directory if it doesn't exist.
if not os.path.exists("./temp/releases"):
os.makedirs("./temp/releases")
if not os.path.exists("./tmp/releases"):
os.makedirs("./tmp/releases")
for version_name in version_names:
version_url = url + version_name

View File

@@ -1,8 +1,20 @@
### This script has been used to generate initial data for this repository
### and is preserved as a reference. DO NOT USE IT.
### Generate GitHub releases for each official Godot release.
###
### For each release creates a canned release summary based on
### release's characteristics, then publishes a new GitHub release
### in the linked repository. Make sure to use gh to configure
### the default repository for this project's folder.
###
### Generated release notes are available in tmp/notes for examination.
import json
import os
import subprocess
import yaml
from datetime import datetime
website_versions = []
@@ -43,7 +55,6 @@ def generate_notes(release_data):
version_description = ""
if version_status == "stable":
version_bits = version_version.split(".")
if version_flavor == "major":
version_description = "a major release introducing new features and considerable changes to core systems. **Major version releases contain compatibility breaking changes.**"
elif version_flavor == "minor":
@@ -125,7 +136,7 @@ def generate_notes(release_data):
return notes
with open("./temp/versions.yml", "r") as f:
with open("./tmp/versions.yml", "r") as f:
try:
website_versions = yaml.safe_load(f)
except yaml.YAMLError as exc:
@@ -159,8 +170,8 @@ releases.sort(key=lambda x: x['data']['release_date'])
# match the release date.
# Create the output directory if it doesn't exist.
if not os.path.exists("./temp/notes"):
os.makedirs("./temp/notes")
if not os.path.exists("./tmp/notes"):
os.makedirs("./tmp/notes")
for release_data in releases:
release_tag = f"{release_data['data']['version']}-{release_data['data']['status']}"
@@ -170,7 +181,7 @@ for release_data in releases:
prerelease_flag = "--prerelease"
release_notes = generate_notes(release_data['data'])
release_notes_file = f"./temp/notes/release-notes-{release_tag}.txt"
release_notes_file = f"./tmp/notes/release-notes-{release_tag}.txt"
with open(release_notes_file, 'w') as temp_notes:
temp_notes.write(release_notes)

106
tools/create-release-metadata.py Executable file
View File

@@ -0,0 +1,106 @@
#!/usr/bin/env python3
import argparse
import os
from datetime import datetime
def find_file_checksums(release_path):
files = []
checksums_path = f"{release_path}/SHA512-SUMS.txt"
with open(checksums_path, 'r') as checksums:
for line in checksums:
split_line = line.split(" ")
files.append({
"filename": split_line[1].strip(),
"checksum": split_line[0].strip()
})
return files
def generate_file(version_version: str, version_status: str, git_reference: str):
# Open the file for writing.
basedir = os.environ.get("basedir")
buildsdir = os.environ.get('buildsdir')
output_path = f"{buildsdir}/releases/godot-{version_version}-{version_status}.json"
with open(output_path, 'w') as f:
release_name = version_version
commit_hash = git_reference
if version_status == "stable":
commit_hash = f"{version_version}-stable"
else:
release_name = f"{version_version}-{version_status}"
# Start writing the file with basic meta information.
f.write(
f'{{\n'
f' "name": "{release_name}",\n'
f' "version": "{version_version}",\n'
f' "status": "{version_status}",\n'
f' "release_date": {int(datetime.now().timestamp())},\n'
f' "git_reference": "{commit_hash}",\n'
f'\n'
f' "files": [\n'
)
# Generate the list of files.
release_folder = f"{basedir}/releases/{version_version}-{version_status}"
standard_files = find_file_checksums(f"{release_folder}")
mono_files = find_file_checksums(f"{release_folder}/mono")
for i, file in enumerate(standard_files):
f.write(
f' {{\n'
f' "filename": "{file["filename"]}",\n'
f' "checksum": "{file["checksum"]}"\n'
f' }}{"" if i == len(standard_files) - 1 and len(mono_files) == 0 else ","}\n'
)
for i, file in enumerate(mono_files):
f.write(
f' {{\n'
f' "filename": "{file["filename"]}",\n'
f' "checksum": "{file["checksum"]}"\n'
f' }}{"" if i == len(mono_files) - 1 else ","}\n'
)
# Finish the file.
f.write(
f' ]\n'
f'}}\n'
)
print(f"Written release metadata to '{output_path}'.")
def main() -> None:
if os.environ.get("basedir") == "" or os.environ.get("buildsdir") == "":
print("Failed to create release metadata: Missing 'basedir' (godot-build-scripts) and 'buildsdir' (godot-builds) environment variables.\n")
exit(1)
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--version", default="", help="Godot version in the major.minor.patch format (patch should be omitted for major and minor releases).")
parser.add_argument("-f", "--flavor", default="stable", help="Release flavor, e.g. dev, alpha, beta, rc, stable (defaults to stable).")
parser.add_argument("-g", "--git", default="", help="Git commit hash tagged for this release.")
args = parser.parse_args()
if args.version == "" or args.git == "":
print("Failed to create release metadata: Godot version and git hash cannot be empty.\n")
parser.print_help()
exit(1)
release_version = args.version
release_flavor = args.flavor
if release_flavor == "":
release_flavor = "stable"
generate_file(release_version, release_flavor, args.git)
if __name__ == "__main__":
main()

175
tools/create-release-notes.py Executable file
View File

@@ -0,0 +1,175 @@
#!/usr/bin/env python3
import argparse
import os
def get_version_name(version_version: str, version_status: str) -> str:
version_name = version_version
if version_status == "stable":
return version_name
version_name += " "
if version_status.startswith("rc"):
version_name += f"RC {version_status.removeprefix('rc')}"
elif version_status.startswith("beta"):
version_name += f"beta {version_status.removeprefix('beta')}"
elif version_status.startswith("alpha"):
version_name += f"alpha {version_status.removeprefix('alpha')}"
elif version_status.startswith("dev"):
version_name += f"dev {version_status.removeprefix('dev')}"
else:
version_name += version_status
return version_name
def get_version_description(version_version: str, version_status: str, version_flavor: str) -> str:
version_description = ""
if version_status == "stable":
if version_flavor == "major":
version_description = "a major release introducing new features and considerable changes to core systems. **Major version releases contain compatibility breaking changes.**"
elif version_flavor == "minor":
version_description = "a feature release improving upon the previous version in many aspects, such as usability and performance. Feature releases also contain new features, but preserve compatibility with previous releases."
else:
version_description = "a maintenance release addressing stability and usability issues, and fixing all sorts of bugs. Maintenance releases are compatible with previous releases and are recommended for adoption."
else:
flavor_name = "maintenance"
if version_flavor == "major":
flavor_name = "major"
elif version_flavor == "minor":
flavor_name = "feature"
if version_status.startswith("rc"):
version_description = f"a release candidate for the {version_version} {flavor_name} release. Release candidates focus on finalizing the release and fixing remaining critical bugs."
elif version_status.startswith("beta"):
version_description = f"a beta snapshot for the {version_version} {flavor_name} release. Beta snapshots are feature-complete and provided for public beta testing to catch as many bugs as possible ahead of the stable release."
else: # alphas and devs go here.
version_description = f"a dev snapshot for the {version_version} {flavor_name} release. Dev snapshots are in-development builds of the engine provided for early testing and feature evaluation while the engine is still being worked on."
return version_description
def get_release_notes_url(version_version: str, version_status: str, version_flavor: str) -> str:
release_notes_slug = ""
version_sluggified = version_version.replace(".", "-")
if version_status == "stable":
if version_flavor == "major":
release_notes_slug = f"major-release-godot-{version_sluggified}"
elif version_flavor == "minor":
release_notes_slug = f"feature-release-godot-{version_sluggified}"
else:
release_notes_slug = f"maintenance-release-godot-{version_sluggified}"
else:
if version_status.startswith("rc"):
status_sluggified = version_status.removeprefix("rc").replace(".", "-")
release_notes_slug = f"release-candidate-godot-{version_sluggified}-rc-{status_sluggified}"
elif version_status.startswith("beta"):
status_sluggified = version_status.removeprefix("beta").replace(".", "-")
release_notes_slug = f"dev-snapshot-godot-{version_sluggified}-beta-{status_sluggified}"
elif version_status.startswith("alpha"):
status_sluggified = version_status.removeprefix("alpha").replace(".", "-")
release_notes_slug = f"dev-snapshot-godot-{version_sluggified}-alpha-{status_sluggified}"
elif version_status.startswith("dev"):
status_sluggified = version_status.removeprefix("dev").replace(".", "-")
release_notes_slug = f"dev-snapshot-godot-{version_sluggified}-dev-{status_sluggified}"
else:
status_sluggified = version_status.replace(".", "-")
release_notes_slug = f"dev-snapshot-godot-{version_sluggified}-{status_sluggified}"
return f"https://godotengine.org/article/{release_notes_slug}/"
def generate_notes(version_version: str, version_status: str, git_reference: str) -> None:
notes = ""
version_tag = f"{version_version}-{version_status}"
version_bits = version_version.split(".")
version_flavor = "patch"
if len(version_bits) == 2 and version_bits[1] == "0":
version_flavor = "major"
elif len(version_bits) == 2 and version_bits[1] != "0":
version_flavor = "minor"
# Add the intro line.
version_name = get_version_name(version_version, version_status)
version_description = get_version_description(version_version, version_status, version_flavor)
notes += f"**Godot {version_name}** is {version_description}\n\n"
# Link to the bug tracker.
notes += "Report bugs on GitHub after checking that they haven't been reported:\n"
notes += "- https://github.com/godotengine/godot/issues\n"
notes += "\n"
# Add build information.
# Only for pre-releases.
if version_status != "stable":
commit_hash = git_reference
notes += f"Built from commit [{commit_hash}](https://github.com/godotengine/godot/commit/{commit_hash}).\n"
notes += f"To make a custom build which would also be recognized as {version_status}, you should define `GODOT_VERSION_STATUS={version_status}` in your build environment prior to compiling.\n"
notes += "\n"
# Add useful links.
notes += "----\n"
notes += "\n"
release_notes_url = get_release_notes_url(version_version, version_status, version_flavor)
notes += f"- [Release notes]({release_notes_url})\n"
if version_status == "stable":
notes += f"- [Complete changelog](https://godotengine.github.io/godot-interactive-changelog/#{version_version})\n"
notes += f"- [Curated changelog](https://github.com/godotengine/godot/blob/{version_tag}/CHANGELOG.md)\n"
else:
notes += f"- [Complete changelog](https://godotengine.github.io/godot-interactive-changelog/#{version_tag})\n"
notes += "- Download (GitHub): Expand **Assets** below\n"
if version_status == "stable":
notes += f"- [Download (TuxFamily)](https://downloads.tuxfamily.org/godotengine/{version_version})\n"
else:
notes += f"- [Download (TuxFamily)](https://downloads.tuxfamily.org/godotengine/{version_version}/{version_status})\n"
notes += "\n"
notes += "*All files for this release are mirrored under **Assets** below.*\n"
return notes
def main() -> None:
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--version", default="", help="Godot version in the major.minor.patch format (patch should be omitted for major and minor releases).")
parser.add_argument("-f", "--flavor", default="stable", help="Release flavor, e.g. dev, alpha, beta, rc, stable (defaults to stable).")
parser.add_argument("-g", "--git", default="", help="Git commit hash tagged for this release.")
args = parser.parse_args()
if args.version == "" or args.git == "":
print("Failed to create release notes: Godot version and git hash cannot be empty.\n")
parser.print_help()
exit(1)
release_version = args.version
release_flavor = args.flavor
if release_flavor == "":
release_flavor = "stable"
release_tag = f"{release_version}-{release_flavor}"
release_notes = generate_notes(release_version, release_flavor, args.git)
release_notes_file = f"./tmp/release-notes-{release_tag}.txt"
with open(release_notes_file, 'w') as temp_notes:
temp_notes.write(release_notes)
print(f"Written release notes to '{release_notes_file}'.")
if __name__ == "__main__":
main()

141
tools/upload-github.sh Executable file
View File

@@ -0,0 +1,141 @@
#!/bin/bash
set -e
# Generate GitHub release for a Godot version and upload artifacts.
#
# Usage: ./upload-github.sh -v 3.6
# Usage: ./upload-github.sh -v 3.6 -f beta3
# Usage: ./upload-github.sh -v 3.6 -f beta3 -r owner/repository
#
# Run this script from the root of the godot-build-scripts folder
# after building Godot.
# Folder this script is called from, a.k.a its working directory.
export basedir=$(pwd)
# Folder where this scripts resides in.
scriptpath=$(readlink -f "$0")
scriptdir=$(dirname "$scriptpath")
# Root folder of this project, hopefully.
export buildsdir=$(dirname "$scriptdir")
if [ ! -d "${basedir}/releases" ] || [ ! -d "${basedir}/tmp" ]; then
echo "Cannot find one of the required folders: releases, tmp."
echo " Make sure you're running this script from the root of your godot-build-scripts clone, and that Godot has been built with it."
exit 1
fi
# Setup.
godot_version=""
godot_flavor="stable"
godot_repository="godotengine/godot-builds"
while getopts "v:f:r:" opt; do
case "$opt" in
v)
godot_version=$OPTARG
;;
f)
godot_flavor=$OPTARG
;;
r)
godot_repository=$OPTARG
;;
esac
done
release_tag="$godot_version-$godot_flavor"
echo "Preparing release $release_tag..."
version_path="$basedir/releases/$release_tag"
if [ ! -d "${version_path}" ]; then
echo "Cannot find the release folder at $version_path."
echo " Make sure you're running this script from the root of godot-build-scripts, and that Godot has been built."
exit 1
fi
cd git
git_reference=$(git rev-parse HEAD)
cd ..
# Generate release metadata and commit it to Git.
echo "Creating and committing release metadata for $release_tag..."
if ! $buildsdir/tools/create-release-metadata.py -v $godot_version -f $godot_flavor -g $git_reference; then
echo "Failed to create release metadata for $release_tag."
exit 1
fi
cd $buildsdir
git add ./releases/godot-$release_tag.json
git commit -m "Add Godot $release_tag"
git tag $release_tag
if ! git push --atomic origin main $release_tag; then
echo "Failed to push release metadata for $release_tag to GitHub."
exit 1
fi
cd $basedir
# Exactly one time it failed to create release immediately after pushing the tag,
# so we use this for protection...
sleep 2
# Generate GitHub release.
echo "Creating and publishing GitHub release for $release_tag..."
if ! $buildsdir/tools/create-release-notes.py -v $godot_version -f $godot_flavor -g $git_reference; then
echo "Failed to create release notes for $release_tag."
exit 1
fi
release_notes="$basedir/tmp/release-notes-$release_tag.txt"
release_flag=""
if [ $godot_flavor != "stable" ]; then
release_flag="--prerelease"
fi
if ! gh release create $release_tag --verify-tag --title "$release_tag" --notes-file $release_notes $release_flag -R $godot_repository; then
echo "Cannot create a GitHub release for $release_tag."
exit 1
fi
# Upload release files to GitHub.
echo "Uploading release files from $version_path..."
# We are picking up all relevant files lazily, using a substring.
# The first letter can be in either case, so we're skipping it.
for f in $version_path/*odot*; do
echo "Uploading $f..."
gh release upload $release_tag $f -R $godot_repository
done
# Do the same for .NET builds.
for f in $version_path/mono/*odot*; do
echo "Uploading $f..."
gh release upload $release_tag $f -R $godot_repository
done
# README.txt is only generated for pre-releases.
readme_path="$version_path/README.txt"
if [ $godot_flavor != "stable" ] && [ -f "${readme_path}" ]; then
echo "Uploading $readme_path..."
gh release upload $release_tag $readme_path -R $godot_repository
fi
# SHA512-SUMS.txt is split into two: classic and mono, and we need to upload them as one.
checksums_path="$basedir/tmp/SHA512-SUMS.txt"
cp $basedir/releases/$release_tag/SHA512-SUMS.txt $checksums_path
if [ -d "${basedir}/releases/${release_tag}/mono" ]; then
cat $basedir/releases/$release_tag/mono/SHA512-SUMS.txt >> $checksums_path
fi
echo "Uploading $checksums_path..."
gh release upload $release_tag $checksums_path -R $godot_repository
echo "Done."