Short, repeatable steps for cutting a prerelease or release (e.g. v1.0.0-beta.N).
Keep Windows and macOS in sync before tagging.
- Create / check out
release/vX.Y.Z[-suffix]frommain. - Bump every product-facing version string:
CMakeLists.txt—SEASTACK_VERSION_SUFFIX(e.g."-beta.4")README.md— badge + “current release” proseTECHNICAL_OVERVIEW.md— version header and body mentionsscripts/windows/stage_release_reports.ps1— usage examples (-Version v…)
- Commit:
Bump version to vX.Y.Z[-suffix].
Keep SEASTACK_VERSION_SUFFIX in sync with the release branch name
(release/v<PROJECT_VERSION><SUFFIX>).
From a Visual Studio / vcvars64 environment:
.\scripts\windows\build.ps1 -Clean -Package -MoorDyn -VSG -DemosExpect: build/SEAStack-<version>-win64.zip. Confirm layout in
PACKAGE_LAYOUT.md.
./scripts/unix/build.sh --clean --package --moordyn --vsg --demosExpect: build/SEAStack-<version>-*.zip (darwin naming from CPack). Same content
checks as Windows.
After the packaged Release build exists (do not -Clean again before staging
reports):
.\scripts\windows\run_unit_tests.ps1
.\scripts\windows\run_chrono_free_tests.ps1
.\scripts\windows\run_regression_tests.ps1
.\scripts\windows\run_verification_tests.ps1
.\scripts\windows\run_comparison_tests.ps1
.\scripts\windows\run_benchmarks.ps1Repeat the equivalent runners on macOS via scripts/unix/ctest_suite.sh
(unit, chrono-free, regression, verification, comparison,
benchmark). If a fresh checkout reports permission denied, the scripts lost
their executable bit — run chmod +x scripts/unix/*.sh (or invoke with
bash scripts/unix/...).
The six suite runners do not cover the external label. Run it separately
on both platforms so the external-PTO Chrono regression is exercised:
ctest --test-dir build -C Release -L external --output-on-failurePDF reports: suite scripts request PDF via pandoc when available. PDF needs a
LaTeX engine on PATH (xelatex / pdflatex / lualatex, e.g. MiKTeX on
Windows, MacTeX on macOS). Without it, suites still pass and write Markdown
only — but release staging expects the PDFs.
.\scripts\windows\stage_release_reports.ps1 -Version vX.Y.Z-suffixCopies regression / verification / comparison PDF reports into
./release-assets/ (gitignored) with GitHub Release names, e.g.
SEA-Stack-v1.0.0-beta.4-regression-report.pdf. Fails if any PDF is missing.
From the install prefix produced by packaging (build/install), run one or two
representative demos with the staged run_seastack (and PATH set so bundled
DLLs / shared libraries resolve). Confirm the case starts cleanly and writes
outputs under the case directory.
Include at least one external-PTO demo, since it exercises the child-process
launch path (needs Python 3 on PATH; python3 alone is fine on macOS/Linux):
./bin/run_seastack --nogui demos/rm3/external_ptoConventions used in this project:
- Work on a
release/v…branch (not directly onmain), then open a PR and merge it intomainwhen the cut is ready. - Tag the release commit with an annotated tag matching the version string, e.g.
v1.0.0-beta.4(same stem as the branch /SEASTACK_VERSION_FULL). - Beta / RC tags are published as GitHub pre-releases; attach the Windows and
macOS ZIPs plus any staged reports from
release-assets/. - Prefer creating the GitHub Release in the web UI (or
gh release create) after the tag exists — include a short summary of what changed since the previous tag.
| Doc | Role |
|---|---|
| BUILD_WINDOWS.md / BUILD_MACOS.md | Machine setup and build.ps1 / build.sh flags |
| PACKAGE_LAYOUT.md | What is inside the runtime ZIP |
| QUICKSTART_RELEASE.txt | End-user notes installed as QUICKSTART.txt |