Retain exact static release archive with commit-bound manifest
Sekta Engineer committed 2026-09-08 14:20:04 +0000

Analyzing diff...

.oxygit/ci.yml+2 −1
index a06bdb5..ade2622 100644
--- a/.oxygit/ci.yml
+++ b/.oxygit/ci.yml
@@ -8,8 +8,9 @@ publish_pages:
     - 'cp "Курс для беременных 2026/Маркетинговые материалы/recepty---25a9d15c-9cda-432f-9444-d94255eb206e.html" public/index.html'
     - 'cp "Курс для беременных 2026/Маркетинговые материалы/"recipe-*.png public/'
     - python3 scripts/validate_static.py public --manifest static-manifest.json
+    - tar -cf static-release.tar -C public .
   artifacts:
-    paths: [static-manifest.json]
+    paths: [static-manifest.json, static-release.tar]
     expire_in: never
   pages:
     path: public
scripts/validate_static.py+2 −2
index 260846a..4f6dc47 100644
--- a/scripts/validate_static.py
+++ b/scripts/validate_static.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 """Validate a static bundle without network access; emit a reproducible byte manifest."""
-import argparse, hashlib, json, re, sys
+import argparse, hashlib, json, os, re, sys
 from html.parser import HTMLParser
 from pathlib import Path
 from urllib.parse import unquote, urlsplit
@@ -51,5 +51,5 @@ if __name__=='__main__':
     files, errors=validate(a.root)
     if errors:
         print('\n'.join(errors),file=sys.stderr); sys.exit(1)
-    if a.manifest: a.manifest.write_text(json.dumps({'schema':1,'files':files},ensure_ascii=False,indent=2)+'\n')
+    if a.manifest: a.manifest.write_text(json.dumps({'schema':1,'sourceCommit':os.environ.get('CI_COMMIT_SHA'),'files':files},ensure_ascii=False,indent=2)+'\n')
     print(f'Validated {len(files)} files')