mirror of
https://github.com/stablyai/orca.git
synced 2026-10-31 00:57:45 +00:00
ci: run hourly and daily dev builds on free hosted runners (#34585)
Hourly and daily builds publish unvetted dev channels on a schedule, so their latency is not user-facing. Move the macOS build to hosted macos-15, the Windows build to hosted windows-2022 (the release path), template qualification to hosted lanes, and the small routing/publish jobs to ubuntu-latest. Adhoc and release builds stay on Blacksmith. Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
co-authored by
OrcaWin
Claude
parent
eb7f4d9c31
commit
f4d98b74e3
@@ -30,7 +30,7 @@ jobs:
|
||||
# Why: the app and the orcad template it ships must come from one commit, so resolve main once.
|
||||
resolve-main:
|
||||
if: github.repository == 'stablyai/orca'
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 5
|
||||
outputs:
|
||||
head_sha: ${{ steps.resolve.outputs.head_sha }}
|
||||
@@ -56,7 +56,7 @@ jobs:
|
||||
with:
|
||||
ref: ${{ needs.resolve-main.outputs.head_sha }}
|
||||
build_template: true
|
||||
fast_runners: true
|
||||
fast_runners: false
|
||||
|
||||
build-daily-mac:
|
||||
needs:
|
||||
@@ -68,7 +68,7 @@ jobs:
|
||||
version: ${{ steps.daily.outputs.version }}
|
||||
head_sha: ${{ steps.freshness.outputs.head_sha }}
|
||||
published: ${{ steps.publish_live.outcome == 'success' && 'true' || 'false' }}
|
||||
runs-on: blacksmith-6vcpu-macos-15
|
||||
runs-on: macos-15
|
||||
# Allow 150min for install 3×10 + publish 2×45 + ~25 setup/build/verify, so outer timeout cannot strand cleanup mid-retry.
|
||||
timeout-minutes: 150
|
||||
env:
|
||||
@@ -427,7 +427,7 @@ jobs:
|
||||
post-daily-e2e:
|
||||
needs: build-daily-mac
|
||||
if: ${{ needs.build-daily-mac.outputs.published == 'true' && needs.build-daily-mac.outputs.head_sha != '' }}
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: write
|
||||
steps:
|
||||
@@ -464,4 +464,4 @@ jobs:
|
||||
ref: ${{ needs.build-daily-mac.outputs.head_sha }}
|
||||
version: ${{ needs.build-daily-mac.outputs.version }}
|
||||
orcad_template: true
|
||||
fast_release: true
|
||||
fast_release: false
|
||||
|
||||
@@ -28,7 +28,7 @@ jobs:
|
||||
publish-win:
|
||||
if: github.repository == 'stablyai/orca'
|
||||
environment: adhoc-mac-build
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 165
|
||||
env:
|
||||
CHANNEL: ${{ inputs.channel }}
|
||||
|
||||
@@ -30,7 +30,7 @@ jobs:
|
||||
# Avoid occupying the limited Mac pool when main has not moved.
|
||||
preflight:
|
||||
if: github.repository == 'stablyai/orca'
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 5
|
||||
outputs:
|
||||
should_build: ${{ steps.freshness.outputs.should_build }}
|
||||
@@ -92,7 +92,7 @@ jobs:
|
||||
with:
|
||||
ref: ${{ needs.preflight.outputs.head_sha }}
|
||||
build_template: true
|
||||
fast_runners: true
|
||||
fast_runners: false
|
||||
|
||||
build-hourly-mac:
|
||||
needs:
|
||||
@@ -104,7 +104,7 @@ jobs:
|
||||
version: ${{ steps.hourly.outputs.version }}
|
||||
head_sha: ${{ needs.preflight.outputs.head_sha }}
|
||||
published: ${{ steps.publish_live.outcome == 'success' && 'true' || 'false' }}
|
||||
runs-on: blacksmith-6vcpu-macos-15
|
||||
runs-on: macos-15
|
||||
# Allow 150min for install 3×10 + publish 2×45 + ~25 setup/build/verify; outer timeout otherwise interrupts cleanup.
|
||||
timeout-minutes: 150
|
||||
env:
|
||||
@@ -402,4 +402,4 @@ jobs:
|
||||
ref: ${{ needs.build-hourly-mac.outputs.head_sha }}
|
||||
version: ${{ needs.build-hourly-mac.outputs.version }}
|
||||
orcad_template: true
|
||||
fast_release: true
|
||||
fast_release: false
|
||||
|
||||
@@ -35,7 +35,7 @@ describe.each(channels)('$name build ships the orcad template', (channel) => {
|
||||
expect(template.with).toEqual({
|
||||
ref: channel.pinnedSha,
|
||||
build_template: true,
|
||||
fast_runners: true
|
||||
fast_runners: false
|
||||
})
|
||||
expect(template.permissions).toEqual({ contents: 'read', actions: 'read' })
|
||||
expect(template.secrets).toBeUndefined()
|
||||
|
||||
@@ -57,7 +57,7 @@ async function checkFreshness(overrides = {}) {
|
||||
describe('hourly build preflight', () => {
|
||||
it('gates Mac allocation and pins the checkout and downstream identity', () => {
|
||||
const build = workflow.jobs['build-hourly-mac']
|
||||
expect(preflight['runs-on']).toBe('blacksmith-2vcpu-ubuntu-2404')
|
||||
expect(preflight['runs-on']).toBe('ubuntu-latest')
|
||||
expect(preflight.steps.some((step) => step.uses?.startsWith('actions/checkout'))).toBe(false)
|
||||
expect(
|
||||
preflight.steps.find((step) => step.id === 'app_token').with['permission-contents']
|
||||
|
||||
@@ -88,7 +88,8 @@ describe('macOS build workflow policy', () => {
|
||||
job.steps?.some((step) => step.with?.command?.includes('electron-builder --config'))
|
||||
)
|
||||
expect(job['runs-on']).toBe(
|
||||
channel === 'adhoc' ? 'blacksmith-12vcpu-macos-15' : 'blacksmith-6vcpu-macos-15'
|
||||
{ adhoc: 'blacksmith-12vcpu-macos-15', release: 'blacksmith-6vcpu-macos-15' }[channel] ??
|
||||
'macos-15'
|
||||
)
|
||||
const step = job.steps.find((step) =>
|
||||
step.with?.command?.includes('electron-builder --config')
|
||||
|
||||
Reference in New Issue
Block a user