Skip to content

publish sflux

publish sflux #120

Workflow file for this run

name: publish sflux
# GFS surface flux on the native ~13 km Gaussian grid (3072 × 1536), hourly
# to F120 and 3-hourly to F240, with the extra dswrf layer. Same cycles as
# GFS 0.25°, but roughly 4.5× the points per frame, so each bundle builds
# slower. Split one bundle per job, a build fits a hosted runner's disk
# without sweeping the preinstalled toolchains first. The pipeline lives in
# the reusable publish.yml.
on:
schedule:
# Half an hour behind publish-gfs.yml: the sflux files come from the same
# cycles, and staggering keeps the two builds off NOAA's bucket (and the
# runner pool) at the same moment.
- cron: "50 5,11,17,23 * * *"
workflow_dispatch:
inputs:
run:
description: "Cycle to publish: latest or YYYYMMDDHH"
type: string
default: latest
profile:
description: "Quantization/compression profile"
type: choice
options: [balanced, quality, compact]
default: balanced
keep:
description: "Published runs to keep on R2 (1 = live run only)"
type: string
default: "1"
force:
description: "Rebuild even when R2 already serves this run"
type: boolean
default: false
dry_run:
description: "Build and report what pruning would delete, but write nothing to R2"
type: boolean
default: false
permissions:
contents: read
concurrency:
group: publish-sflux
cancel-in-progress: false
jobs:
publish:
# Scheduled runs on forks would publish into a bucket they cannot reach.
if: github.event_name != 'schedule' || github.repository == 'ringsaturn/xue'
uses: ./.github/workflows/publish.yml
with:
model: sflux
run: ${{ inputs.run || 'latest' }}
profile: ${{ inputs.profile || 'balanced' }}
keep: ${{ inputs.keep || '1' }}
force: ${{ inputs.force || false }}
dry_run: ${{ inputs.dry_run || false }}
# Published as Zarr stores alone (plan 017 phase 7), after HRRR.
zarr: true
container: false
secrets: inherit