Skip to content

Publish a release from each SemVer tag - #11

Merged
wheakerd merged 3 commits into
mainfrom
release-workflow
Nov 5, 2026
Merged

wheakerd merged 3 commits into
mainfrom
release-workflow

Conversation

@wheakerd

@wheakerd wheakerd commented Nov 4, 2026

Copy link
Copy Markdown
Member

Merge after #10. This branch starts from that branch, so its diff includes that work until then.

Summary

  • Pushing a tag that is a SemVer 2.0 version, such as 1.2.3 or 1.3.0-rc.1, publishes a GitHub Release with skernel-linux-x86_64, skernel-linux-aarch64, skernel-macos-aarch64, and skernel-macos-x86_64, which is what self-update installs. Any other tag, including v1.2.3, fails before anything is built.
  • The newest tag is always the latest release. SKERNEL keeps no older version line and does not support moving back to an older version, so the workflow compares nothing and marks no pre-release.
  • composer config version gives each binary the tag as its --version, such as SKERNEL 1.2.3.
  • Before anything is published, each platform runs .github/scripts/check-binary.sh. It checks the binary with an empty environment and no PHP on the PATH, and then creates, packages, and serves a project with it.
  • A pull request that changes the process runs the same builds and checks without publishing.

Compatibility

  • No command, option, or configuration changes.
  • Windows gets no binary, because SKERNEL requires ext-pcntl.

Validation

  • check-binary.sh passed locally on Linux x86_64 with a binary whose version was set the way the workflow sets it.
  • The SemVer check accepts 1.2.3, 0.1.0-rc.1, 1.0.0-alpha+001, 1.2.3+build.5, and 1.0.0-0.3.7, and rejects v1.2.3, 01.2.3, 1.2, 1.2.3.4, 1.2.3-, 1.0.0-01, and latest.
  • This pull request's own run is the first build of SKERNEL on Linux aarch64 and on macOS.

Not run: the publishing job, which needs a real tag.

🤖 Generated with Claude Code

wheakerd and others added 3 commits November 4, 2026 01:42
Every command of a packaged SKERNEL opened with a warning that the
annotation scan had skipped classes, such as optional Symfony bundles
whose dependencies are not installed. Nothing in it is something a
SKERNEL user can act on.

StderrLogger now drops records whose event is an annotation scan's, and
writes the rest as before. A project that SKERNEL builds still reports
its own scan through its own logger.

A test requires an empty STDERR from --version, and a real packaged
SKERNEL wrote nothing to STDERR.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
package looked only for a composer binary in PATH, while new also tries
the user's usual locations and falls back to SKERNEL's own Composer. Now
that both need Composer the same way, package asks ComposerLocator too,
so a machine without Composer can package a project. --composer and the
package.composer setting still choose a binary, and are used unchecked.

The README and the schema describe the new default, and Composer is no
longer listed as a requirement. The README also stops mentioning scan
summaries on STDERR, which the previous commit removed.

A real package with an empty environment and no Composer used SKERNEL's
own, and the resulting binary served requests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pushing a tag that is a SemVer 2.0 version now publishes a GitHub
Release with a binary for Linux and macOS on x86_64 and aarch64, which
is what self-update installs. Any other tag fails. composer config
version gives the binary the tag as its --version.

The newest tag is always the latest release. SKERNEL keeps no older
version line and does not support moving back to an older version, so
the workflow compares nothing and marks no pre-release.

Before anything is published, each platform checks its binary with an
empty environment and no PHP on the PATH, then creates, packages, and
serves a project with it. A pull request that changes the process runs
the same builds and checks without publishing, which is also the first
time that SKERNEL builds on Linux aarch64 and on macOS.

The check script passed locally on Linux x86_64 with a binary that has a
version. The workflow itself has not run yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@wheakerd
wheakerd merged commit c09ee05 into main Nov 5, 2026
10 of 12 checks passed
@wheakerd
wheakerd deleted the release-workflow branch November 5, 2026 01:48
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