Put Roku in your CI/CD pipeline.
Every other platform ships from CI/CD. On Roku, someone still logs into a portal and clicks Publish. rku publishes from GitHub Actions or any pipeline instead.
Manual vs. automated
Roku's release lifecycle is manual. All of it.
rku automates the whole thing: beta ships on every commit, production ships through a gate.
How it works
Roku has no publish API. rku is one.
Roku ships channels through a web portal, by hand. rku drives that portal programmatically: you sign in, connect your Roku account, and publish, so shipping a channel becomes a command you can put in CI.
- 01
rku loginSign in
Authenticate to rkuhub with GitHub or Google. The CLI stores a short-lived token and refreshes it for you. No secrets to paste.
- 02
rku connectConnect your Roku account
A browser opens; sign in to the Roku Developer Portal once (MFA and all). rku captures the session and hands it to the hub. Reconnect only when it actually expires.
- 03
rku publishPublish
Upload the build, kick off the publish, and watch it to a result. The same command in your terminal or in CI, with an exit code your pipeline can trust.
In your pipeline
Beta ships on every merge.
Add the rku action to your workflow. Every push to main publishes to your
beta channel, and the step fails the build if the publish does. No portal, no human in the loop.
Features
Clicking through the portal doesn’t scale.
Signing in, linking your account, publishing: everything the portal makes you do by hand, rku turns into something repeatable and scriptable.
login
No secrets on disk
rku login signs you in with GitHub or Google and stores a short-lived token it refreshes for you, so no long-lived secret sits on disk.
connect
Connect once
rku connect captures your Roku Developer Portal session in a real browser (MFA and all), and the hub keeps it. Belong to more than one Roku org? Pick the right one.
beta
Beta on autopilot
Point your workflow at a beta channel and every merge ships, no human in the loop. When Roku expires the channel at 120 days, the hub recreates it, so the pipeline never silently stops.
production
Gated production
Beta ships on every commit; production ships when you say so. Gate a publish behind a tag, a manual approval, or a workflow rule, so prod is deliberate, never a 2am portal login.
ci-native
CI-native
The rku action drops into GitHub Actions with a scoped, least-privilege token, and fails the build when a publish fails. Any other runner calls the CLI the same way.
visibility
See what shipped
Every publish is a job. rku channels and rku jobs show what the hub tracks and what ran (succeeded, failed, queued) from the terminal or the dashboard.
FAQ
Roku publishing, answered.
The questions developers ask before they script their first Roku publish.
-
Is there a Roku publishing CLI?
Yes. rku is a command-line tool that publishes Roku channels straight from your terminal or your CI pipeline. Roku ships no official publishing CLI, so rku is it: sign in, connect your Roku account, and publish a
.pkgwith one command. Install it withnpm i -g @namiml/rku-cli. -
How do I publish a Roku channel from the command line?
Install rku (
npm i -g @namiml/rku-cli), runrku loginandrku connectonce to link your Roku account, then publish with a single command:rku publish -c <channel> -p ./app.pkg -v <version>. rku drives the Roku Developer portal for you and exits with a code your pipeline can trust. -
Can I automate Roku channel publishing in CI/CD?
Yes. Continuous, hands-off publishing is the whole point of rku. Add the
namiml/rku-actionto your GitHub Actions pipeline and every merge ships to Roku automatically: beta on every commit, production behind an approval gate. A failed publish fails the build, so a broken release never ships silently, with no manual steps in the Roku portal. -
Does Roku have an official CLI or publish API?
No. Roku provides no public API and no official CLI for publishing channels; it is normally a manual process in the Roku Developer web portal. rku automates that portal programmatically, which is how it gives you a
rku publishcommand for the terminal and CI.
Get started
Put your next Roku release in CI/CD.
Connect your Roku account once, drop the action into your pipeline, and every merge ships to Roku: beta automatically, production through a gate.