Skip to content

feat(ci): switch release pipeline to homeboy-native release workflow#417

Merged
chubes4 merged 1 commit into
mainfrom
add-homeboy-release-workflow
May 17, 2026
Merged

feat(ci): switch release pipeline to homeboy-native release workflow#417
chubes4 merged 1 commit into
mainfrom
add-homeboy-release-workflow

Conversation

@chubes4
Copy link
Copy Markdown
Member

@chubes4 chubes4 commented May 17, 2026

Summary

Replace the standalone release-asset.yml workflow with the homeboy continuous-release pattern. On every push to main, check for releasable conventional commits and run homeboy release if any exist. The homeboy release pipeline now handles ZIP packaging and GitHub asset upload natively because the wordpress extension provides release.package and release.publish actions (Extra-Chill/homeboy-extensions#658).

- .github/workflows/release-asset.yml   # custom release-event hook
+ .github/workflows/release.yml          # homeboy continuous release
+ homeboy.json                            # add release_latest_branch config

Before this change

push main → homeboy.yml (audit/lint/test only)
            ↓ (someone runs homeboy release manually)
            git tag pushed + GitHub Release created (no asset)
            ↓ (release:published event)
            release-asset.yml: rebuild ZIP, gh release upload

Three problems:

  • Manual release trigger. Someone has to run homeboy release locally to bump version, tag, push.
  • Parallel codepath for the ZIP. release-asset.yml rebuilds the ZIP using its own composer/npm install + rsync rules, separate from anything homeboy knows about. State drift between developer builds and release builds.
  • Two failure modes to debug. homeboy release failures and release-asset.yml failures have different surfaces.

After this change

push main → release.yml dry-run check
            ↓ (releasable commits since last tag?)
            release.yml release
            ↓
            homeboy release runs the full pipeline:
              changelog.finalize → version → git.commit
              → package (wordpress extension builds ZIP)
              → git.tag → git.push → github.release
              → publish.wordpress (uploads ZIP + mirrors release-latest branch)

Single pipeline, single failure mode, single source of truth for what a release ZIP contains.

The release-latest branch

homeboy.json declares release_latest_branch: "release-latest" in the wordpress extension config. After the GitHub release-asset upload completes, the wordpress extension's release.publish action also force-pushes the unzipped vendor-bundled tree to refs/heads/release-latest. WordPress Playground blueprints can then install via:

{
  "resource": "git:directory",
  "url": "https://github.com/Extra-Chill/data-machine-code",
  "ref": "release-latest",
  "refType": "branch"
}

This bypasses the CORS failure that has been preventing Data Machine Code from installing in browser-based Playground (GitHub release-asset URLs 302 to S3 buckets that don't send Access-Control-Allow-Origin). The world-of-wordpress blueprint will switch to this resource shape once DMC has released once and the release-latest branch exists.

Validation

  • New release.yml is yaml-valid and structurally identical to the proven workflow in homeboy-action (the same workflow that has been releasing homeboy-action on every push to main for months).
  • homeboy.json extensions.wordpress block follows the schema established in the wordpress extension manifest.
  • release-asset.yml was solely responsible for ZIP upload on release:published. The homeboy pipeline now owns that step (verified against homeboy-extensions release pipeline running on every push), so deleting it is safe.
  • Manual asset rebuilds remain available via workflow_dispatch on release.yml.

What happens when this merges

The merge commit's message is feat: (this change), so the next push to main triggers a release. Predicted version bump:

  • Current: v0.44.0
  • Bump: minor (one feat: since last tag)
  • New: v0.45.0

The release will:

  1. Update data-machine-code.php version targets
  2. Generate the changelog entry
  3. Push the v0.45.0 tag
  4. Create the GitHub Release
  5. Build build/data-machine-code.zip
  6. Upload it as a release asset
  7. Force-push the unzipped tree to release-latest

Dependencies

AI assistance

  • AI assistance: Yes
  • Tool(s): Claude Code (Sonnet 4.5)
  • Used for: Identified the gap between the custom release-asset workflow and the homeboy-native pipeline, modeled the new release.yml on homeboy-action's release.yml, and drafted the homeboy.json wordpress extension config. Chris confirmed the homeboy gap and chose the recommended scope (replace the standalone workflow, no migration path).

Replace the standalone release-asset.yml workflow with the homeboy
continuous-release pattern used by homeboy-action and
homeboy-extensions: on every push to main, check for releasable
conventional commits, then run `homeboy release` to bump the
version, generate the changelog, tag, push, create the GitHub
Release, build the vendor-bundled ZIP via the wordpress extension's
release.package action, and upload it via release.publish.

The homeboy-extensions wordpress extension now provides both actions
(release.package and release.publish), so we no longer need a
parallel custom workflow that rebuilds the ZIP after the release
event fires. The homeboy pipeline handles packaging and asset upload
as part of its standard step graph (version → commit → package →
git.tag → git.push → github.release → publish.wordpress).

Add release_latest_branch: "release-latest" to the wordpress
extension config so release.publish also mirrors the unzipped tree
to a CORS-friendly branch after the release-asset upload. This
unblocks WordPress Playground blueprints that hit CORS on the
GitHub release-asset CDN — the world-of-wordpress blueprint can
switch from releases/latest/download/data-machine-code.zip to
git:directory against release-latest once the next release has
populated the branch.

Removes .github/workflows/release-asset.yml because the homeboy
pipeline now owns ZIP production and upload. Manual asset rebuilds
remain available via the workflow_dispatch on the new release.yml.
@homeboy-ci
Copy link
Copy Markdown
Contributor

homeboy-ci Bot commented May 17, 2026

Homeboy Results — data-machine-code

Lint

lint — passed

Deep dive: homeboy lint data-machine-code --changed-since 1f73d41

Test

test — passed

ℹ️ No impacted tests found for --changed-since 1f73d41
ℹ️ Run full suite if needed: homeboy test data-machine-code
Deep dive: homeboy test data-machine-code --changed-since 1f73d41

Audit

audit — passed

Deep dive: homeboy audit data-machine-code --changed-since 1f73d41

Tooling versions
  • Homeboy CLI: homeboy 0.182.0+727d32a
  • Extension: wordpress from https://github.com/Extra-Chill/homeboy-extensions
  • Extension revision: 4c8e91c
  • Action: unknown@unknown

@chubes4 chubes4 merged commit f22b4f4 into main May 17, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant