Renamed release.yml → build.yml and added three build modes:
1. Push to master — validates code, then auto-creates a pre-release
with a unique tag (v<version>-pre.<timestamp>.<sha>). Published
immediately as a GitHub Pre-release (not draft).
2. Push a v* tag — validates code, then creates a draft release for
manual review before publishing (existing behavior preserved).
3. workflow_dispatch — requires the 'tag' input; fails early with a
clear error if omitted.
Key changes from the old release.yml:
- Added branch trigger (master) for automatic pre-releases
- Determines tag from event context: auto-generated for master,
from ref for tagged pushes, from input for manual dispatch
- Uses prerelease/draft flags appropriately per mode
- Dynamic job name ('Create pre-release' vs 'Create release')
The release action (softprops/action-gh-release@v1) was called without a tag_name parameter. For tag-push triggers, GITHUB_REF contains the tag ref so the action implicitly infers the tag. For workflow_dispatch (manual trigger), GITHUB_REF points to the branch (refs/heads/master), so no valid tag was found.
Fixes:
1. Added a 'Determine release tag' step that resolves the tag from the correct source: inputs.tag for workflow_dispatch, GITHUB_REF for tag pushes. Fails early with ::error if no tag is provided.
2. Passes tag_name to the release action.
3. Changed checkout in the release job to fetch-depth: 0 + fetch-tags: true so changelog generation can find previous tags.
CI fixes:
- Use npm run lint/check-format instead of npx (PATH handling)
- Explicit test file paths instead of glob (shell compatibility)
- Remove duplicate cache steps that could overwrite
- Remove newIDE Jest tests (require GDevelop.js C++ build artifacts
not available in CI environment)
Release workflow:
- Triggers on tag push (v*) or manual dispatch
- Validates lint + BYOK syntax + unit tests
- Creates draft GitHub Release with auto-generated notes
- Full packaging requires C++/Emscripten; documented how to build locally
- .github/workflows/ci.yml: 4-job CI pipeline (install, lint, BYOK unit
tests, newIDE Jest tests) running on push/PR to main/master/milestone/*
- newIDE/electron-app/app/byok/SMOKE-TEST.md: 17-step manual verification
procedure for the BYOK feature (config persistence, chat routing,
non-BYOK fallback)
We can always remove this tag before merging. This is to avoid doubling the usage of Travis/Semaphore CIs at every commit on master.
Don't show in changelog
* Useful to quickly test components without having to fetch and build locally a branch.
* Can optionally be deployed to Chromatic if the GitHub action is launched manually.
Only show in developer changelog