OverviewFilesCommitsIssuesDocsReleasesPeers

hardops commits / 6603b0e

ci: build an installable Blender zip as a release artifact
"Release" means two different things in this stack and only one of them makes a file. `pgh publish .` appends metadata (name, version, treeHash, deps) to pgh-sidecar's ReleaseRegistry so `pgh app install` can content-address the tree — it never produces a zip, which is why an app with registry releases still shows an empty repo releases page. The forge's own build-release, driven by this ci.yaml on push, is what puts a downloadable file there. So this builds the zip and declares it under `artifacts:`. Layout is a single top-level hardops/ directory holding blender_manifest.toml — what Blender's "Install from Disk" expects, matching the vendor zip's own shape. No `pgh publish` step: publishing propagates fleet-wide on autoupdate and is permanent, so it stays a deliberate act rather than a consequence of a push. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
6603b0ec9d801290630b2a86300b78d6ec31b355
by plankatron <fleeky@gmail.com> · 2026-08-07T22:06:28.000Z

Changed files (2) +33 -0

.gitignore +2 -0
……@@ -1,2 +1,4 @@
11__pycache__/
22*.pyc
3build/
4hardops.zip
.pear-git/ci.yaml +31 -0
……@@ -0,0 +1,31 @@
1# pear-git CI — build an installable Blender zip on push.
2#
3# Note this repo does NOT end in `pgh publish .` like the bare apps do. Two
4# different systems share the name "release":
5#
6# pgh publish . -> pgh-sidecar's ReleaseRegistry. Content-addresses the tree
7# for `pgh app install`. Produces metadata only — never a file.
8# this ci.yaml -> the forge's build-release. Whatever is listed under
9# `artifacts:` lands on /git/repos/hardops/releases as a
10# download.
11#
12# A downloadable addon zip only comes from the second one, so it is built here.
13#
14# The zip has a single top-level `hardops/` directory holding
15# blender_manifest.toml, which is the layout Blender's "Install from Disk"
16# expects (the vendor zip ships the same shape as `HOps/`).
17
18steps:
19 - name: build blender zip
20 run: |
21 set -e
22 mkdir -p build/hardops
23 # copy the tree minus VCS, bytecode and the build dir itself
24 tar cf - --exclude=./.git --exclude=__pycache__ --exclude=./build . \
25 | (cd build/hardops && tar xf -)
26 (cd build && zip -qr ../hardops.zip hardops)
27 ls -l hardops.zip
28 timeout: 300
29
30artifacts:
31 - hardops.zip