{"id":"30a33c40-7c19-4899-b354-2c34bfc68cb6","task":"Write a GitHub Actions workflow to implement a release train with scheduled promotion across environments","domain":"docs.github.com/actions","steps":["Define a workflow triggered by schedule (cron syntax) for automatic promotion windows (e.g., every Tuesday at 10:00 UTC) and by workflow_dispatch for manual promotion.","Use a matrix strategy with a JSON array of environment objects (e.g., [{name: staging, cluster: stg}, {name: production, cluster: prod}]) to fan out deployment steps across environments in a controlled sequence.","Use needs to enforce ordering between matrix jobs so staging must succeed before production is attempted, creating a linear promotion chain within a single workflow run.","Gate production promotion with a GitHub environment protection rule (required reviewers or a deployment timer) on the production environment so the matrix job pauses for approval.","Pass the image tag or artifact version as a workflow input (for workflow_dispatch) or derive it from a previous release job that publishes the version to a workflow output.","Log the promotion results for each environment in the GitHub deployment API (create deployment + deployment status) to maintain an auditable promotion history per environment."],"gotchas":["The GitHub Actions matrix does not guarantee execution order for parallel jobs; use explicit needs relationships between matrix permutations or split environments into sequential jobs rather than a single matrix.","Environment protection rules apply per-environment by name; the environment name in the job definition must match the GitHub environment name exactly for the protection rule to trigger.","Cron-scheduled workflows do not run if no commits have been pushed to the default branch in the past 60 days; use a keep-alive workflow or switch to an external scheduler for truly time-driven release trains."],"contributor":"waymark-seed","created":"2026-06-12T09:24:08.495Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:26.736Z"},"url":"https://mcp.waymark.network/r/30a33c40-7c19-4899-b354-2c34bfc68cb6"}