Skip to main content

CI Integration

The default Hosanna project template includes all the necessary .yml files and package scripts to support continuous integration (CI) workflows. Out of the box, your project is configured to:

  • Run tests
  • Lint your codebase
  • Transpile your code

These steps are automated in CI pipelines, ensuring code quality and build consistency.

Playwright and End-to-End Testing

Hosanna projects are ready to work with Playwright for end-to-end testing. CI support for Playwright will be enabled in projects, allowing you to automate browser-based tests as part of your workflow.

Roku Device Deployment

Currently, CI pipelines do not deploy builds directly to Roku devices. This is a planned future enhancement. For now, device deployment and testing are performed manually.

Bundling and Release Packaging

Hosanna projects include package scripts for bundling and releasing your app. These scripts are defined in package.json and automate tasks like generating build info, packaging for Roku, and running release tools.

Example Scripts

"generate:build-info": "node deployment/scripts/generate-build-info.js",
"package:dev": "node deployment/scripts/package-roku.js --env dev",
"package:prod": "node deployment/scripts/package-roku.js --env prod",
"release:ci": "node deployment/release-tool/index.js --ci-build",
"release:preview": "node deployment/release-tool/index.js --dry-run",
"release:final": "node deployment/release-tool/index.js --final"
  • Use npm run package:dev or npm run package:prod to bundle your app for Roku.
  • The generate:build-info script generates dynamic build metadata and writes it to assets/meta/build-info.json, which is imported into Hosanna at runtime.

Environment Configuration

Before running these scripts, configure your environment in src/config/env.js. Do not commit secrets or sensitive keys to source control. Example (sanitize your values):

export const ENV_DEV = {
CLIENT_ID: 'your-client-id',
API_KEY: 'your-api-key',
NPAW_ACCOUNT_CODE: 'your-account-code',
ROKU_DEV_ID: "your-roku-dev-id",
ROKU_DEV_PASSWORD: 'your-roku-dev-password',
ROKU_PKG_NAME: 'your-key.pkg'
}

export const ENV_PROD = {
// ...similar structure...
}

export const ENV = ENV_PROD;
  • The scripts will use the correct configuration for each build flavor (dev/prod).
  • You must have your .pkg files (Roku signing keys) available—recommended location is the project root (these should be git-ignored).
  • Ensure the environment variables ROKU_IP and ROKU_DEVPASSWORD are set for device deployment (the password is usually aaaa).

Notes

  • Bundling and release scripts are currently run manually, not in CI, as they require access to a physical Roku device and signing keys.
  • For more details on each script, see the comments in your package.json and the deployment scripts themselves.

Your Hosanna project is CI-ready for all standard development tasks, with future improvements planned for device deployment automation.