We need to implement a separate versioning and deployment workflow for this frontend app that does not interfere with the versioning or release process of JuliaBUGS.jl
Goals:
- Enable independent versioning for the DoodleBUGS frontend using
package.json
- Deploy each frontend version to GitHub Pages at a path like:
JuliaBUGS.jl/DoodleBUGS/vX.Y.Z/
- Create a
latest/ alias to always point to the newest release
- Maintain an automatically generated version index at
/DoodleBUGS/
- Avoid conflicts with Julia package tags (which use
vX.Y.Z)
- Allow manual release control, ideally by commenting on a commit like JuliaRegistrar (e.g.,
/release doodlebugs)
This repo already uses Git tags like v0.9.0 for the JuliaBUGS.jl, which are created by TagBot
Preferred Approach
1. Versioning Strategy
- Use the version field in
DoodleBUGS/package.json
- Use Git tags with a prefix for the frontend like
doodlebugs/v0.1.0
2. Deployment Targets
-
Deploy to GitHub Pages under:
/DoodleBUGS/v0.X.Y/
/DoodleBUGS/latest/
-
Maintain a versions.json file listing all deployed frontend versions
-
Include an index.html page that reads versions.json and shows links to available versions
3. Triggering Releases
Several options are possible:
Option A: Comment-based trigger (recommended)
- A GitHub Action listens for a commit comment like:
/release doodlebugs, this triggers build workflow
Option B: Manual trigger
- Use GHA with
workflow_dispatch to run the release job manually
Option C: Tag-based trigger
- Push a tag like
doodlebugs/v0.2.0 to trigger deployment (optional)
4. TODO
- Update
vite.config.ts to set the base path dynamically based on version
- Build output is copied to the correct path in the
gh-pages branch
versions.json and index.html are updated and deployed
Remember
- Restrict release triggers to repository collaborators
- Generate GitHub Releases for frontend versions tagged with
doodlebugs/vX.Y.Z
- Include a changelog or version metadata with each deployment
We need to implement a separate versioning and deployment workflow for this frontend app that does not interfere with the versioning or release process of
JuliaBUGS.jlGoals:
package.jsonJuliaBUGS.jl/DoodleBUGS/vX.Y.Z/latest/alias to always point to the newest release/DoodleBUGS/vX.Y.Z)/release doodlebugs)Preferred Approach
1. Versioning Strategy
DoodleBUGS/package.jsondoodlebugs/v0.1.02. Deployment Targets
Deploy to GitHub Pages under:
/DoodleBUGS/v0.X.Y//DoodleBUGS/latest/Maintain a
versions.jsonfile listing all deployed frontend versionsInclude an
index.htmlpage that readsversions.jsonand shows links to available versions3. Triggering Releases
Several options are possible:
Option A: Comment-based trigger (recommended)
/release doodlebugs, this triggers build workflowOption B: Manual trigger
workflow_dispatchto run the release job manuallyOption C: Tag-based trigger
doodlebugs/v0.2.0to trigger deployment (optional)4. TODO
vite.config.tsto set the base path dynamically based on versiongh-pagesbranchversions.jsonandindex.htmlare updated and deployedRemember
doodlebugs/vX.Y.Z