October 26, 2026
Checks, initialize, and update now come as reusable workflows
Until this release, every Edge App repo carried its own full copy of the example workflows: the triggers, the jobs for each environment, the production tag check, and the id expressions. Now those live in this repo as reusable workflows, and an app’s workflow file calls them:
name: Update Edge App
on:
workflow_dispatch:
push:
branches: [main, master]
tags: ['v[0-9]*']
permissions:
contents: read
jobs:
update:
uses: Screenly/edge-apps-actions/.github/workflows/[email protected]
secrets:
SCREENLY_API_TOKEN: ${{ secrets.SCREENLY_API_TOKEN }}When a later release changes how deploys work, bumping that pin is all it takes. Copy the 3 files in
examples/ into your app’s .github/workflows/ to start.
| Workflow | Inputs | Secrets |
|---|---|---|
checks.yml | bun-version (default latest) | none |
initialize.yml | environment, edge_app_name, edge_app_title | SCREENLY_API_TOKEN |
update.yml | delete_missing_settings (default true) | SCREENLY_API_TOKEN |
update.yml deploys to stage on a push or a manual run on the default branch, and other branches
never deploy. It deploys to production when you push a v* tag whose commit is on the default
branch, through the production environment and its reviewers. checks.yml cancels a check still
running on a branch when a newer push to that branch arrives.
Setting up an app
- Create the GitHub environments
stageandproduction, and addSCREENLY_API_TOKENto each as an environment secret. An environment secret only reaches jobs that run in that environment, so the production token stays behind production’s reviewers. - Run “Initialize Edge App” for
stage. Once the run has finished successfully, set the repository variableSTAGE_EDGE_APP_IDto the id in its job summary. Setting it earlier lets a deploy start while Initialize is still running. - Do the same for
productionandPRODUCTION_EDGE_APP_ID.
delete_missing_settings is true in update.yml, so the manifest decides which settings exist.
The update action on its own still defaults to false. To keep settings that aren’t in your
manifest, pass delete_missing_settings: false under with:.
The checks, initialize, and update actions are still there to use as steps in a workflow of
your own.