fix(publish,docker): fix Blender runtime, CI disk/retry, local build docs #1

Merged
haylan merged 4 commits from feat/auto-godot-blender-tracking into main 2026-08-06 20:04:05 +00:00
Showing only changes of commit 5ef5fce4a4 - Show all commits
+26 -2
View File
@@ -65,6 +65,15 @@ jobs:
id: blender id: blender
run: echo "url=$(./scripts/resolve-blender-url.sh)" >> "$GITHUB_OUTPUT" run: echo "url=$(./scripts/resolve-blender-url.sh)" >> "$GITHUB_OUTPUT"
# Now that this workflow tracks the newest Godot/Blender instead of one
# pinned version, most nightly runs build genuinely new multi-GB layers
# instead of hitting cache — nothing here ever pruned old ones, so the
# runner's disk fills up over successive runs until a push (a blob
# write) is what finally fails. Clear stale images/build cache first.
- name: Free up runner disk
if: steps.resolve.outputs.skip != 'true'
run: docker system prune -af --volumes
- name: Build and push - name: Build and push
if: steps.resolve.outputs.skip != 'true' if: steps.resolve.outputs.skip != 'true'
run: | run: |
@@ -74,11 +83,26 @@ jobs:
--build-arg GODOT_VERSION="$VERSION" \ --build-arg GODOT_VERSION="$VERSION" \
--build-arg BLENDER_URL="${{ steps.blender.outputs.url }}" \ --build-arg BLENDER_URL="${{ steps.blender.outputs.url }}" \
-t "${IMAGE}:${VERSION}" . -t "${IMAGE}:${VERSION}" .
docker push "${IMAGE}:${VERSION}"
# Registry blob PUTs have been failing with transient 500s
# (unrelated to build correctness) — retry a few times before
# giving up.
push_with_retry() {
for attempt in 1 2 3; do
if docker push "$1"; then
return 0
fi
echo "::warning::docker push $1 failed (attempt $attempt/3), retrying..."
sleep $((attempt * 10))
done
return 1
}
push_with_retry "${IMAGE}:${VERSION}"
if [ "${{ steps.resolve.outputs.update_latest }}" = "true" ]; then if [ "${{ steps.resolve.outputs.update_latest }}" = "true" ]; then
docker tag "${IMAGE}:${VERSION}" "${IMAGE}:latest" docker tag "${IMAGE}:${VERSION}" "${IMAGE}:latest"
docker push "${IMAGE}:latest" push_with_retry "${IMAGE}:latest"
fi fi
# Gitea packages belong to the owner, not a repo, by default — pushing # Gitea packages belong to the owner, not a repo, by default — pushing