Skip to content

firecrown-nightly

firecrown-nightly #42

Workflow file for this run

# Nightly CI - Multi-Branch Scheduled Testing
# ============================================
# Runs the full CI pipeline once per night against every supported
# long-lived branch. The job definitions live exclusively in
# ci-reusable.yml; this file only declares the schedule.
#
# The list of branches to test is read at runtime from
# .github/ci-branches.json — the single source of truth shared
# with ci.yml.
#
# ADDING OR REMOVING A SUPPORTED BRANCH:
# Edit .github/ci-branches.json only. No changes to this file are needed.
#
# NOTE: GitHub always executes scheduled workflows from the repository's
# default branch (master). The 'ref' input to ci-reusable.yml overrides
# which branch's code is actually checked out and tested.
name: firecrown-nightly
on:
schedule:
- cron: "47 1 * * *"
# Allow manual triggering for testing this workflow itself.
workflow_dispatch:
jobs:
load-branches:
name: Load supported branch list
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.load.outputs.matrix }}
steps:
- uses: actions/checkout@v5
- name: Read ci-branches.json
id: load
run: echo "matrix=$(cat .github/ci-branches.json)" >> $GITHUB_OUTPUT
shell: bash
nightly:
name: Nightly (${{ matrix.branch }})
needs: [load-branches]
strategy:
fail-fast: false
matrix:
branch: ${{ fromJson(needs.load-branches.outputs.matrix) }}
uses: ./.github/workflows/ci-reusable.yml
with:
ref: ${{ matrix.branch }}
ci_mode: nightly
secrets: inherit
rebuild-drift-linux:
name: Rebuild drift Linux (${{ matrix.branch }})
needs: [load-branches]
continue-on-error: true
timeout-minutes: 45
strategy:
fail-fast: false
matrix:
branch: ${{ fromJson(needs.load-branches.outputs.matrix) }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
ref: ${{ matrix.branch }}
- name: Setting up Miniforge
uses: conda-incubator/setup-miniconda@v4
with:
miniforge-version: latest
python-version: "3.12"
activate-environment: firecrown_developer
auto-activate: true
conda-remove-defaults: true
use-mamba: false
- name: Rebuild environment from environment.yml
shell: bash -l {0}
run: |
set -o pipefail
python .github/update_ci.py 3.12
conda deactivate
conda env remove --name firecrown_developer -y -q || true
conda env create --file env_tmp.yml --name firecrown_developer -v -q 2>&1 | tee rebuild-drift.log
- name: Summarize drift failure
if: ${{ failure() }}
shell: bash
run: |
{
echo "## Rebuild Drift Failure (Linux)"
echo ""
echo "Branch: ${{ matrix.branch }}"
echo "OS: ubuntu-latest"
echo "Python: 3.12"
echo ""
echo "See artifact: rebuild-drift-log-linux-${{ matrix.branch }}"
} >> "$GITHUB_STEP_SUMMARY"
- name: Upload drift log
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: rebuild-drift-log-linux-${{ matrix.branch }}
path: rebuild-drift.log
rebuild-drift-macos:
name: Rebuild drift macOS (${{ matrix.branch }})
needs: [load-branches]
continue-on-error: true
timeout-minutes: 45
strategy:
fail-fast: false
matrix:
branch: ${{ fromJson(needs.load-branches.outputs.matrix) }}
runs-on: macos-latest
steps:
- uses: actions/checkout@v5
with:
ref: ${{ matrix.branch }}
- name: Setting up Miniforge
uses: conda-incubator/setup-miniconda@v4
with:
miniforge-version: latest
python-version: "3.12"
activate-environment: firecrown_developer
auto-activate: true
conda-remove-defaults: true
use-mamba: false
- name: Rebuild environment from environment.yml
shell: bash -l {0}
run: |
set -o pipefail
python .github/update_ci.py 3.12
conda deactivate
conda env remove --name firecrown_developer -y -q || true
conda env create --file env_tmp.yml --name firecrown_developer -v -q 2>&1 | tee rebuild-drift.log
- name: Summarize drift failure
if: ${{ failure() }}
shell: bash
run: |
{
echo "## Rebuild Drift Failure (macOS)"
echo ""
echo "Branch: ${{ matrix.branch }}"
echo "OS: macos-latest"
echo "Python: 3.12"
echo ""
echo "See artifact: rebuild-drift-log-macos-${{ matrix.branch }}"
} >> "$GITHUB_STEP_SUMMARY"
- name: Upload drift log
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: rebuild-drift-log-macos-${{ matrix.branch }}
path: rebuild-drift.log