Uh oh!
There was an error while loading. Please reload this page.
Add CI, nightly builds and pull request build links - #1273
Open
rr- wants to merge 4 commits into
Open
Conversation
The test only set ProcessAnimations, leaving ProcessGeometry at its default of true. CanInvertFaces is defined purely as ProcessGeometry, so it correctly returned true and the assert failed. Animation settings always disable geometry processing in practice, as in AnimationSettingsPresets and the WadTool animation import, so the test now sets ProcessGeometry explicitly to match.
Nothing built the solution or ran the test suites automatically. Pull requests and pushes to master now build Release x64 and run both MSTest suites, and pushes to develop additionally publish a portable snapshot to a single rolling "nightly" pre-release. Runners have to be Windows, as all but one project targets net6.0-windows and the test projects touch WPF. The build itself lives in a reusable job_build.yml that both workflows call, so the packaging rules exist in one place. Snapshots are a developer channel and stay clear of the release process: stable installers are still built by hand and published to TombEngine/TombEditorReleases, so snapshots ship without an NSIS installer to keep the two apart. They are also pruned to an overlay, dropping TombIDE project templates and native libraries for other platforms, which takes the download from 370 MB to roughly 30 MB. The pruning throws if either path is missing, so a layout change cannot silently restore the full package.
Build artifacts are kept for 15 days and linked from a comment on the pull request, which is edited in place on later pushes rather than added to. This has to be a separate workflow_run workflow, because a pull_request run from a fork only gets a read-only token and cannot comment. Comments carry GitHub's own artifact URL alongside a nightly.link mirror: the former always works but needs an account, the latter needs no account but is a third party that can go down. Expiry dates are read back from the API rather than computed.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces GitHub Actions-based CI for building and testing the Tomb Editor solution on Windows runners, adds a rolling nightly snapshot release from develop, and posts downloadable build artifact links back to pull requests. It also fixes a previously failing TombLib unit test by aligning the test setup with the production settings combination.
Changes:
- Add reusable Windows build+test workflow (
job_build.yml) that restores, builds, runs both test suites, and uploads packaged build + test results artifacts. - Add
CIworkflow for PRs (andmasterpushes) plus aNightlyworkflow fordevelopthat publishes a rollingnightlypre-release ZIP. - Add a
workflow_run-based commenter workflow that posts/updates artifact download links on the associated PR.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| TombLib/TombLib.Test/ViewModels/GeometryIOSettingsWindowViewModelTests.cs | Fixes a failing test by setting ProcessGeometry = false when ProcessAnimations = true. |
| .github/workflows/ci.yml | Adds the main CI entrypoint that calls the shared build/test workflow for PRs and master. |
| .github/workflows/job_build.yml | Implements the shared Windows build/test/package logic and publishes artifacts. |
| .github/workflows/nightly.yml | Adds a develop-triggered build and rolling prerelease publisher for nightly snapshots. |
| .github/workflows/comment_build.yml | Adds a workflow-run triggered PR commenter that posts artifact download links. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+89
to
+93
| const { data: comments } = await github.rest.issues.listComments({ | ||
| owner, repo, issue_number: pr.number, | ||
| }); | ||
| const existing = comments.filter(c => c.body.includes(marker)).pop(); | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Right now nothing builds the solution or runs the test suite automatically. This adds GitHub Actions on Windows runners (free for public repos) to build and test everything, then reuses that build so testers have something to download.
develop: same as above, plus update a rollingnightlypre-releasejob_build.ymlis shared between both workflows, so the build logic only lives in one place.This is demonstrated on my fork:
End-to-end CI takes about 2m40s.
The snapshot ZIP is about 30 MB. The full build output is around 370 MB, mostly because of
TIDE/Templatesand native libraries for platforms an x64 build never loads. Those are stripped out, and the ZIP is meant to be extracted over an existing installation. Only TombIDE actually uses the templates. If you'd rather have the snapshots be self-contained, I can do that instead, but I'd recommend against it, as serving 400 MB for nightly builds and PR snapshots seems excessive :)The first commit fixes a failing test.
CanInvertFaces_WhenProcessAnimationsIsTrue_ReturnsFalsehas been failing ondevelopbecause it leavesProcessGeometryat its default (true), whileCanInvertFacesis based entirely on that property. In production,ProcessAnimations = trueis always paired withProcessGeometry = false. I'm happy to split that fix into a separate PR if you'd rather keep it separate.Releases are unchanged; installers are still built manually and published to
TombEditorReleases. The nightly snapshots are just ZIPs with no installer, published under a single rolling pre-release and clearly marked as "not a release" – they're just a testing channel, not a second set of releases.Two small caveats:
comment_build.ymlonly runs from the default branch, so PR comments won't appear until this lands onmaster. Also, CI won't pass onmasteras it stands, sinceTombLib.Renderingrequires full MSBuild rather thandotnet build.