From 5c56bfb28b14fb2ec3c77efa8240a5620ca281a9 Mon Sep 17 00:00:00 2001 From: Jinjing <6427696+AmethystLiang@users.noreply.github.com> Date: Sun, 16 Aug 2026 01:52:58 -0700 Subject: [PATCH] ci: run the daily macOS build 4 hours later (#14869) The 14:15 UTC cut is too early (6:15am PST / 7:15am PDT). Move it to 18:15 UTC so dailies land late morning Pacific instead. --- .github/workflows/daily-mac-build.yml | 6 +++--- config/scripts/daily-build-version.mjs | 2 +- config/scripts/daily-build-version.test.mjs | 18 +++++++++--------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/daily-mac-build.yml b/.github/workflows/daily-mac-build.yml index 5670c634d2d..081c0b20c45 100644 --- a/.github/workflows/daily-mac-build.yml +++ b/.github/workflows/daily-mac-build.yml @@ -5,7 +5,7 @@ name: Daily macOS Dev Build # hourly. # # Schedule is a single UTC cron (GH Actions has no timezone-aware schedules). -# 14:15 UTC is early morning Pacific year-round (6:15am PST / 7:15am PDT). Minute +# 18:15 UTC is late morning Pacific year-round (10:15am PST / 11:15am PDT). Minute # 15 avoids stacking with hourly-mac-build, which fires at minute 0 every hour. # # Deliberately narrow scope: @@ -45,8 +45,8 @@ name: Daily macOS Dev Build on: schedule: - # Once a day, early morning Pacific. Single cron — no DST twin, no clock gate. - - cron: '15 14 * * *' + # Once a day, late morning Pacific. Single cron — no DST twin, no clock gate. + - cron: '15 18 * * *' workflow_dispatch: inputs: force: diff --git a/config/scripts/daily-build-version.mjs b/config/scripts/daily-build-version.mjs index 1d27ef5fb34..1b1f54dccd1 100755 --- a/config/scripts/daily-build-version.mjs +++ b/config/scripts/daily-build-version.mjs @@ -60,7 +60,7 @@ export function nextDailyBuildNumber(baseVersion, releaseNames = []) { } /** - * `1.4.163 • 01 • Aug 9, 6:15AM • e698241` — the human-facing release title, + * `1.4.163 • 01 • Aug 9, 10:15AM • e698241` — the human-facing release title, * shown verbatim in both the GitHub releases list and the in-app build picker. */ export function formatDailyReleaseName(version, buildNumber, commit, date) { diff --git a/config/scripts/daily-build-version.test.mjs b/config/scripts/daily-build-version.test.mjs index 7f0e71b92c9..422d570a878 100644 --- a/config/scripts/daily-build-version.test.mjs +++ b/config/scripts/daily-build-version.test.mjs @@ -45,27 +45,27 @@ describe('formatDailyReleaseName', () => { formatDailyReleaseName('1.4.163-daily.x', buildNumber, commit, new Date(iso)) it('renders version, number, Pacific timestamp, and short sha', () => { - // 13:15 UTC is 6:15AM PDT in July (the daily cut time). - expect(name('2026-07-28T13:15:00Z')).toBe('1.4.163 • 01 • Jul 28, 6:15AM • e698241') + // 17:15 UTC is 10:15AM PDT in July (the daily cut time). + expect(name('2026-07-28T17:15:00Z')).toBe('1.4.163 • 01 • Jul 28, 10:15AM • e698241') }) // Why both sides of DST: the tag's stamp is UTC and the title is Pacific, so // the offset between them is not a constant. A test pinned to one season would // pass all summer and start failing in November. it('follows the Pacific offset across DST', () => { - expect(name('2026-01-15T14:15:00Z')).toBe('1.4.163 • 01 • Jan 15, 6:15AM • e698241') - expect(name('2026-07-28T13:15:00Z')).toBe('1.4.163 • 01 • Jul 28, 6:15AM • e698241') + expect(name('2026-01-15T18:15:00Z')).toBe('1.4.163 • 01 • Jan 15, 10:15AM • e698241') + expect(name('2026-07-28T17:15:00Z')).toBe('1.4.163 • 01 • Jul 28, 10:15AM • e698241') }) it('pads to two digits and grows past them', () => { - expect(name('2026-07-28T13:15:00Z', 9)).toContain(' • 09 • ') - expect(name('2026-07-28T13:15:00Z', 42)).toContain(' • 42 • ') + expect(name('2026-07-28T17:15:00Z', 9)).toContain(' • 09 • ') + expect(name('2026-07-28T17:15:00Z', 42)).toContain(' • 42 • ') }) it('rejects a build number that is not a positive integer', () => { - expect(() => name('2026-07-28T13:15:00Z', 0)).toThrow(/positive integer/) - expect(() => name('2026-07-28T13:15:00Z', -1)).toThrow(/positive integer/) - expect(() => name('2026-07-28T13:15:00Z', 1.5)).toThrow(/positive integer/) + expect(() => name('2026-07-28T17:15:00Z', 0)).toThrow(/positive integer/) + expect(() => name('2026-07-28T17:15:00Z', -1)).toThrow(/positive integer/) + expect(() => name('2026-07-28T17:15:00Z', 1.5)).toThrow(/positive integer/) }) it('rejects an invalid timestamp', () => {