The roku-guidelines-app really is a simple framework for building Roku applications rapidly. It contains most modules necessary for creating a roku application using scenegraph. The application follows a MVC architecture overall and we recommend that you follow a component oriented style of development on top of the MVC to make the application consistent, testable and extentable. The framework is built with optimization in mind and runs well on low end and high end devices a like.
Modules contained within the framework are
- A http Module
- General Utilites - Type checks and low end device checks
- Array Utils - Map, Filter, Reduce, Slice ..etc
- File utility module
- Registry Utility ( Local storage )
- Focus Manager
- UI components - Vertical Scrollview, UIDialog, UIButtons
- Navigation Stack - History keeper
- Deeplink Integration
- Integrated Test Suite for general files and scenegraph components
makescripts deploying and packaging the application locally
- Files for integrating
CI. The CI used here is concourse.ci
Deploying the app locally
To deploy the app locally, you could use the
make tool. Just make sure to run the
make from command line on the right directory.
You need to be on the same folder as where the make Makefile exists. You need to set these there parameters first to deploy on to the
roku on the same network.
export ROKU_DEV_TARGET=<<Your Roku IP>>
export DEVPASSWORD=<<Your Roku Dev Password>>
// This would be needed if to create the pkg file. Make sure to `rekey` the certificate
onto the roku device if you are using an existing password that was generated on another roku hardware.
export APP_KEY_PASS=<<Roku Signing Key Password>>
// To Install the app locally
// To Create a package locally
Once the app is deployed locally, you can get the tests running by passing this command from
Method : POST
URL: <<YOUR ROKU IP>>:8060/launch/dev?RunTests=true
You can see the tests results on the debugging console.
This project is integrated with concourse-ci for continous integration and deployment. The pipeline information
can be found within
pipeline.yml within the
ci folder. The credentials.yml file is not included but a sample of what is needed can be
The Pipelines at the moment is simple and straightforward. It contains two jobs.
Deploy - Triggers on every commit to this branch. Deploys the application to the test device, runs tests and if tests succeeds. It creates a sideloaded build (*.zip) and uploads it to the s3 bucket.
Package - Is manually triggered, This job does not run tests but rather creates a signed package file that can be sent over for certification or for updating the private channel.
Both these jobs run of the
To Set up your own concourse pipeline just follow the steps below
Make sure to install
fly CLI tools. This package can be downloaded from the ci.tribalscale.com ( This is our concourse-ci server ).
Login into the concourse-ci server and get the
fly tools downloadable package.
To install fly tools.
fly is a just a bunch of tools used to control and configure the concourse-ci server locally.
install ~/Downloads/fly /usr/local/bin
which fly - this should confirm the existence of fly tool
Login into Concourse Server Instance
fly --target ci login --team-name <<Team-Name-Set-On-CI-Server>> --concourse-url <<CONCOURSE-CI-SERVER-URL>> --insecure
target serves as key reference for future pipleline project manipulations
team-name is main
Create or Update an existing pipeline with credentials information
fly --target ci set-pipeline --config pipeline.yml --load-vars-from credentials.yml --pipeline roku-guidelines-app
Make sure to run this command from the directory that contains
credentials.yml. If the pipeline does not exist on
the server already, it simply updates it.
Doing all the above steps correctly should create new builds and packages and have them saved in s3 amazon bucket. The builds are all versioned by timestamp.
NOTE: The credentials.yml file contains all the important parameters such as
Roku's IP, Dev password and the signing key for packages. Make sure that
the roku device and the build server remain on the same network. Builds would fail otherwise.