Allow the indexed pack icon in packwiz channel publication
Build Sanctuary / build (push) Canceled after 0s

This commit is contained in:
koka
2026-09-17 03:12:24 +02:00
parent 468743bfe7
commit 2090380712
5 changed files with 19 additions and 6 deletions
-1
View File
@@ -38,4 +38,3 @@ Reçu : `build/beta104-artifact.json`.
Les GameTests dédiés restent exclus. Aucun monde, canal ou installation Les GameTests dédiés restent exclus. Aucun monde, canal ou installation
personnelle modifié ; archives locales uniquement. personnelle modifié ; archives locales uniquement.
@@ -95,3 +95,8 @@ Reçu : `build/integration110-artifact.json`, manifeste des sources :
Les essais natifs sont macOS avec serveur intégré ; pas de test Windows ni Les essais natifs sont macOS avec serveur intégré ; pas de test Windows ni
connexion depuis un second ordinateur. La neige antérieure non suivie garde connexion depuis un second ordinateur. La neige antérieure non suivie garde
la limite de fonte documentée dans beta.109. la limite de fonte documentée dans beta.109.
Le script de publication a été corrigé pour autoriser uniquement `icon.png`
en plus des manifestes TOML, après contrôle de l'index et comparaison à l'icône
source. Les JAR restent exclusivement des pièces jointes de release. Cette
correction de distribution ne change aucun binaire ni le tag source beta.110.
-1
View File
@@ -31,4 +31,3 @@ de débogage changent). Reçu : `build/beta103-artifact.json`.
Les GameTests du serveur dédié restent exclus. Aucun monde personnel, Les GameTests du serveur dédié restent exclus. Aucun monde personnel,
aucune installation ni aucun canal de distribution modifié. aucune installation ni aucun canal de distribution modifié.
+2 -1
View File
@@ -8,7 +8,8 @@ https://git.botsu.net/koka/sanctuary-beta/raw/branch/packwiz/pack.toml
``` ```
Les sources sont sur la branche de travail du ticket. La branche `packwiz` Les sources sont sur la branche de travail du ticket. La branche `packwiz`
contient uniquement les manifestes de distribution produits par le build ; les contient les manifestes de distribution produits par le build et licône
`icon.png` déclarée dans leur index ; les
JAR Sanctuary sont des pièces jointes de releases Gitea. Aucun JAR de mod ou JAR Sanctuary sont des pièces jointes de releases Gitea. Aucun JAR de mod ou
dépendance téléchargée n'entre dans l'historique Git. Le canal Beta est distinct dépendance téléchargée n'entre dans l'historique Git. Le canal Beta est distinct
de l'ancien pack 26.2. de l'ancien pack 26.2.
+12 -3
View File
@@ -115,12 +115,21 @@ def remote_tag_commit(tag):
return found.get('refs/tags/' + tag + '^{}') or found.get('refs/tags/' + tag) return found.get('refs/tags/' + tag + '^{}') or found.get('refs/tags/' + tag)
def channel_file(relative):
"""The indexed pack icon is the only non-TOML file allowed on the channel."""
path = Path(relative)
return path.suffix == '.toml' or path.as_posix() == 'icon.png'
def publish_channel(origin, version, source_head): def publish_channel(origin, version, source_head):
staged = ROOT / 'build/packwiz-release' staged = ROOT / 'build/packwiz-release'
pack.check_index(staged) pack.check_index(staged)
files = [path for path in staged.rglob('*') if path.is_file()] files = [path for path in staged.rglob('*') if path.is_file()]
pack.require(all(path.suffix == '.toml' for path in files), pack.require(all(channel_file(path.relative_to(staged)) for path in files),
'Distribution branch must contain only generated TOML metadata') 'Distribution branch must contain only generated TOML metadata and the pack icon')
if (staged / 'icon.png').exists():
pack.require((staged / 'icon.png').read_bytes() == (ROOT / 'packwiz/icon.png').read_bytes(),
'Distribution icon differs from the verified source icon')
remote = git('ls-remote', '--heads', 'origin', 'refs/heads/' + CHANNEL) remote = git('ls-remote', '--heads', 'origin', 'refs/heads/' + CHANNEL)
with tempfile.TemporaryDirectory(prefix='sanctuary-pack-channel-') as temp: with tempfile.TemporaryDirectory(prefix='sanctuary-pack-channel-') as temp:
directory = Path(temp) directory = Path(temp)
@@ -134,7 +143,7 @@ def publish_channel(origin, version, source_head):
git('fetch', '--quiet', 'origin', CHANNEL, cwd=directory) git('fetch', '--quiet', 'origin', CHANNEL, cwd=directory)
git('checkout', '--quiet', '-b', CHANNEL, 'FETCH_HEAD', cwd=directory) git('checkout', '--quiet', '-b', CHANNEL, 'FETCH_HEAD', cwd=directory)
tracked = git('ls-files', cwd=directory).splitlines() tracked = git('ls-files', cwd=directory).splitlines()
pack.require(all(name.endswith('.toml') for name in tracked), pack.require(all(channel_file(name) for name in tracked),
'Existing distribution branch contains unexpected files') 'Existing distribution branch contains unexpected files')
for name in tracked: for name in tracked:
(directory / name).unlink() (directory / name).unlink()