Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 28 additions & 10 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ on:
- "v*.*.*"
- "!v*-nightly.*"
schedule:
- cron: "0 */3 * * *"
# Off minute zero: GitHub delays scheduled runs most at the top of the hour.
- cron: "7 */3 * * *"
workflow_dispatch:
inputs:
channel:
Expand All @@ -22,6 +23,14 @@ on:
required: false
type: string

# Serialize nightlies (scheduled and manual) so overlapping runs cannot build
# the same commit twice or publish out of order. Stable tag releases get their
# own group so a nightly never blocks them. Running publishers are never
# canceled; only a not-yet-started run waiting in the same group is replaced.
concurrency:
group: release-${{ (github.event_name == 'schedule' || inputs.channel == 'nightly') && 'nightly' || 'stable' }}
cancel-in-progress: false

permissions:
contents: read
id-token: none
Expand Down Expand Up @@ -199,8 +208,14 @@ jobs:

relay_public_config:
name: Resolve T3 Connect public config
needs: preflight
if: ${{ !failure() && !cancelled() && needs.preflight.result == 'success' }}
# Consumes only the commit SHA, not preflight's resolved version, so it runs
# alongside preflight instead of after it. The condition mirrors preflight's:
# check_changes is skipped on non-schedule events (skipped is neither failure
# nor success, so success() would be wrong here).
needs: [check_changes]
if: |
!failure() && !cancelled() &&
(github.event_name != 'schedule' || needs.check_changes.outputs.has_changes == 'true')
runs-on: blacksmith-8vcpu-ubuntu-2404
timeout-minutes: 5
environment:
Expand All @@ -222,7 +237,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ needs.preflight.outputs.ref }}
ref: ${{ github.sha }}
sparse-checkout: |
/*
!/.repos/
Expand Down Expand Up @@ -295,15 +310,19 @@ jobs:
# machine. node-pty is N-API, so one binary works across all WSL Node versions.
build_wsl_node_pty:
name: Build WSL node-pty (linux-x64)
needs: [preflight]
if: ${{ !failure() && !cancelled() && needs.preflight.result == 'success' }}
# Same gating as relay_public_config: only the commit SHA is needed, so this
# runs alongside preflight. See the condition comment there.
needs: [check_changes]
if: |
!failure() && !cancelled() &&
(github.event_name != 'schedule' || needs.check_changes.outputs.has_changes == 'true')
runs-on: blacksmith-8vcpu-ubuntu-2404
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ needs.preflight.outputs.ref }}
ref: ${{ github.sha }}
sparse-checkout: |
/*
!/.repos/
Expand Down Expand Up @@ -758,9 +777,8 @@ jobs:
- name: Align package versions to release version
run: node scripts/update-release-package-versions.ts "${{ needs.preflight.outputs.version }}"

- name: Build web package
run: vp run --filter @t3tools/web build

# The t3 build task depends on @t3tools/web#build, so the web client is
# built (once) as part of this step.
- name: Build CLI package
run: vp run --filter t3 build

Expand Down
Loading