CI and Releases
Current Hosanna app CI runs generation, linting, web build, Hosanna Compiler install, Roku compilation, and tests. Release flows build on the same scripts and add versioning, changelogs, GitHub releases, Keygen publishing, or store uploads depending on the repo.
App CI Baseline
A typical app CI pipeline runs:
npm ci --no-audit --no-fund
npx hst ci:restore-flags
npm run generate
npm run lint
npm run build
npx hst install:compiler
bin/hsc --project platforms/hsconfig-roku.json
npm run test
Required secrets:
| Secret | Purpose |
|---|---|
DEBUG_FLAGS_DEV_BASE64 | restores assets/meta/debug-flags.dev.json |
DEBUG_FLAGS_PROD_BASE64 | restores production debug flags when needed |
HSC_LICENSE_KEY | compiler activation in CI |
HSC_CACHE_DIR | optional compiler cache location |
Generate debug flag secrets locally:
npx hst ci:extract-config
The extractor can limit which root keys are included:
npx hst ci:extract-config --root-keys env,remoteDebug
Roku Packaging In CI
Use these secrets for signed Roku packaging:
| Secret | Purpose |
|---|---|
ROKU_DEV_ID | Roku signing developer ID |
ROKU_DEV_PASSWORD | Roku signing password |
ROKU_PKG_KEY_BASE64 | base64 signed key package |
ROKU_IP | optional device IP for installer workflows |
ROKU_DEVPASSWORD | Roku developer installer password |
Extract the key package from an existing signed package:
npx hst ci:extract-pkg-key myapp.pkg --base64-only
Package in CI:
npx hst roku:package --env prod --quiet
roku:package can also run a prebuild command:
npx hst roku:package --env prod --prebuild "npm run roku:build"
Release Scripts
Hosanna UI uses:
npm run release -- patch
npm run release -- minor --dry-run
npm run release -- major --allow-branch
The UI release script:
- requires a clean
mainbranch unless--allow-branchis passed - strips a
-nextsuffix before release - runs
release-it - can use
XAI_API_KEYfor AI changelog generation - requires authenticated
ghfor GitHub releases
The Hosanna Compiler release script adds:
KEYGEN_ACCOUNT_IDKEYGEN_PRODUCT_IDKEYGEN_ADMIN_TOKEN- optional
--skip-tests - binary packaging and Keygen publishing
- GitHub release creation when not a dry run
Hosanna Compiler Release Workflow
The Hosanna Compiler repo also supports GitHub Actions release flow:
- input a version or
major/minor/patch - set
package.jsonto the release version - lint, build, and test
- package binaries to
dist/bin - generate changelog
- tag
vX.Y.Z - upload binaries to Keygen
- create a GitHub release
- move
mainback to<version>-next
Required CI secrets:
KEYGEN_ACCOUNT_ID
KEYGEN_PRODUCT_ID
KEYGEN_ADMIN_TOKEN
Browser Extension Release
The DevTools extension release script can run:
npm run release -- patch
npm run release -- minor
npm run release -- major
It lints, tests, builds, packages extension.zip, creates a GitHub release, and can publish to Chrome Web Store and Edge Add-ons when store credentials are configured.
Nightly Checks
Nightly app checks run the same generation, lint, build, Hosanna Compiler install, Roku compilation, and tests as CI. They can optionally generate a changelog preview when XAI_API_KEY is configured.
Practical Advice
- Keep debug flags and signing keys out of git; use
ci:extract-config,ci:restore-flags, andci:extract-pkg-key. - Run
npm run lintbeforehsc; linter diagnostics are faster and often map to compiler errors. - Use
npm run lint:strictbefore releases when you want extra portability checks. - For release candidates, run the release command with
--dry-runfirst.