95 lines
2.9 KiB
YAML
95 lines
2.9 KiB
YAML
name: channel vars
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
github_event_name:
|
|
type: string
|
|
github_ref_name:
|
|
type: string
|
|
required: false
|
|
github_ref:
|
|
type: string
|
|
required: false
|
|
workflow_dispatch_channel:
|
|
type: string
|
|
required: false
|
|
workflow_dispatch_ref:
|
|
type: string
|
|
required: false
|
|
|
|
outputs:
|
|
channel:
|
|
description: 'Computed release channel (stable|canary)'
|
|
value: ${{ jobs.emit.outputs.channel }}
|
|
is_canary:
|
|
description: 'Whether this is a canary deploy (true|false)'
|
|
value: ${{ jobs.emit.outputs.is_canary }}
|
|
source_ref:
|
|
description: 'Git ref to check out for the deploy'
|
|
value: ${{ jobs.emit.outputs.source_ref }}
|
|
stack_suffix:
|
|
description: "Suffix for stack/image names ('' or '-canary')"
|
|
value: ${{ jobs.emit.outputs.stack_suffix }}
|
|
|
|
jobs:
|
|
emit:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
channel: ${{ steps.compute.outputs.channel }}
|
|
is_canary: ${{ steps.compute.outputs.is_canary }}
|
|
source_ref: ${{ steps.compute.outputs.source_ref }}
|
|
stack_suffix: ${{ steps.compute.outputs.stack_suffix }}
|
|
steps:
|
|
- name: Determine channel
|
|
id: compute
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
|
|
event_name="${{ inputs.github_event_name }}"
|
|
ref_name="${{ inputs.github_ref_name || '' }}"
|
|
ref="${{ inputs.github_ref || '' }}"
|
|
dispatch_channel="${{ inputs.workflow_dispatch_channel || '' }}"
|
|
dispatch_ref="${{ inputs.workflow_dispatch_ref || '' }}"
|
|
|
|
channel="stable"
|
|
if [[ "${event_name}" == "push" ]]; then
|
|
if [[ "${ref_name}" == "canary" ]]; then
|
|
channel="canary"
|
|
fi
|
|
else
|
|
if [[ "${dispatch_channel}" == "canary" ]]; then
|
|
channel="canary"
|
|
fi
|
|
fi
|
|
|
|
if [[ "${event_name}" == "push" ]]; then
|
|
source_ref="${ref:-refs/heads/${ref_name:-main}}"
|
|
else
|
|
if [[ -n "${dispatch_ref}" ]]; then
|
|
source_ref="${dispatch_ref}"
|
|
else
|
|
if [[ "${channel}" == "canary" ]]; then
|
|
source_ref="refs/heads/canary"
|
|
else
|
|
source_ref="refs/heads/main"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
stack_suffix=""
|
|
if [[ "${channel}" == "canary" ]]; then
|
|
stack_suffix="-canary"
|
|
fi
|
|
|
|
is_canary="false"
|
|
if [[ "${channel}" == "canary" ]]; then
|
|
is_canary="true"
|
|
fi
|
|
|
|
printf 'channel=%s\n' "${channel}" >> "$GITHUB_OUTPUT"
|
|
printf 'is_canary=%s\n' "${is_canary}" >> "$GITHUB_OUTPUT"
|
|
printf 'source_ref=%s\n' "${source_ref}" >> "$GITHUB_OUTPUT"
|
|
printf 'stack_suffix=%s\n' "${stack_suffix}" >> "$GITHUB_OUTPUT"
|