Problem
Currently, the update action proceeds with deployment even when:
- The manifest file (
screenly.yml for production, screenly_qc.yml for stage) does not exist in the repository.
- The manifest file exists but does not contain an
id field.
This causes failures during the deploy step because the Edge App has not been initialized yet (e.g., the id is only written after the first initialize run).
Proposed solution
Add a pre-flight check in the update action that:
- Verifies the manifest file exists for the target environment.
- Uses
yq to check that the id field is present and non-empty in the manifest.
- If either check fails, exits gracefully (skip the remaining steps) instead of erroring.
This avoids duplicating the guard logic in every consuming workflow and keeps individual Edge App repositories clean.
Context
This came up in Screenly/airtable-app, where both screenly.yml and screenly_qc.yml exist on the development branch but neither has an id yet (the app hasn't been initialized). The workflow currently runs on every push to development/main, so it will fail until the app is initialized.
Placing this guard inside the action makes it reusable across all Edge App repositories without code duplication.
Problem
Currently, the
updateaction proceeds with deployment even when:screenly.ymlfor production,screenly_qc.ymlfor stage) does not exist in the repository.idfield.This causes failures during the deploy step because the Edge App has not been initialized yet (e.g., the
idis only written after the firstinitializerun).Proposed solution
Add a pre-flight check in the
updateaction that:yqto check that theidfield is present and non-empty in the manifest.This avoids duplicating the guard logic in every consuming workflow and keeps individual Edge App repositories clean.
Context
This came up in
Screenly/airtable-app, where bothscreenly.ymlandscreenly_qc.ymlexist on thedevelopmentbranch but neither has anidyet (the app hasn't been initialized). The workflow currently runs on every push todevelopment/main, so it will fail until the app is initialized.Placing this guard inside the action makes it reusable across all Edge App repositories without code duplication.