GitHub Release Workflow
The release pipeline is defined in .github/workflows/release.yml.
Trigger
The workflow runs on:
- tags matching
v0.* - tags matching
early-*
What it does
- Runs focused Early Preview verification on Linux.
- Builds
drat,draton-runtime, anddraton-lspin release mode for the supported preview targets:- Linux x86_64
- Linux aarch64
- macOS x86_64
- macOS aarch64
- Windows x86_64
- Packages one archive per supported platform.
- Verifies each archive with a smoke test:
drat --versiondrat fmt --checkdrat lintdrat taskdrat builddrat lspinitialize
- Generates per-archive
.sha256files and a combinedSHA256SUMS.txt. - Publishes the GitHub Release and uploads all supported assets plus install scripts.
Archive Layout
Each shipped Early Preview archive contains:
dratordrat.exe- the packaged Draton runtime static library
LICENSEQUICKSTART.mdexamples/hello.dtexamples/early-preview/hello-app/INSTALL.mdEARLY-PREVIEW.mdinstall.shinstall.ps1
Native Dependency Strategy
Releases are built against LLVM 14, but the shipped drat binaries on verified preview targets do not currently depend on an external LLVM shared library at runtime. The smoke test strips LLVM-specific environment variables from the packaged-artifact run and checks the packaged binary for accidental libLLVM / clang-cpp dynamic dependencies on Linux and macOS.
The remaining runtime expectation is limited to normal OS libraries:
- Linux: common system libraries such as
libstdc++,libffi,libz, andlibtinfo - macOS: standard system runtime libraries
- Windows x86_64: the normal Windows desktop runtime stack
This keeps the preview archives self-contained enough for end users without bundling fragile copies of platform runtime libraries.
Packaging Scripts
scripts/package_release.pyscripts/smoke_release.py
Use them locally to sanity-check the release flow before tagging.
Example:
cargo build -p drat -p draton-runtime
python3 scripts/package_release.py \
--binary target/debug/drat \
--artifact draton-early-linux-x86_64.tar.gz \
--out-dir dist
python3 scripts/smoke_release.py --archive dist/draton-early-linux-x86_64.tar.gz