name: Nightly on: push: branches: [main] workflow_dispatch: permissions: contents: read concurrency: group: nightly-${{ github.ref }} cancel-in-progress: true env: CARGO_TERM_COLOR: always RUSTFLAGS: -Dwarnings DEEPSEEK_BUILD_SHA: ${{ github.sha }} jobs: build: name: Build ${{ matrix.artifact_name }} strategy: fail-fast: false matrix: include: # --- codewhale (cli dispatcher, canonical) --- - os: ubuntu-latest target: x86_64-unknown-linux-gnu binary: codewhale artifact_name: codewhale-linux-x64 - os: ubuntu-24.04-arm target: aarch64-unknown-linux-gnu binary: codewhale artifact_name: codewhale-linux-arm64 - os: ubuntu-latest target: riscv64gc-unknown-linux-gnu binary: codewhale artifact_name: codewhale-linux-riscv64 - os: macos-latest target: x86_64-apple-darwin binary: codewhale artifact_name: codewhale-macos-x64 - os: macos-latest target: aarch64-apple-darwin binary: codewhale artifact_name: codewhale-macos-arm64 - os: windows-latest target: x86_64-pc-windows-msvc binary: codewhale.exe artifact_name: codewhale-windows-x64.exe # --- codewhale-tui (TUI runtime, canonical) --- - os: ubuntu-latest target: x86_64-unknown-linux-gnu binary: codewhale-tui artifact_name: codewhale-tui-linux-x64 - os: ubuntu-24.04-arm target: aarch64-unknown-linux-gnu binary: codewhale-tui artifact_name: codewhale-tui-linux-arm64 - os: ubuntu-latest target: riscv64gc-unknown-linux-gnu binary: codewhale-tui artifact_name: codewhale-tui-linux-riscv64 - os: macos-latest target: x86_64-apple-darwin binary: codewhale-tui artifact_name: codewhale-tui-macos-x64 - os: macos-latest target: aarch64-apple-darwin binary: codewhale-tui artifact_name: codewhale-tui-macos-arm64 - os: windows-latest target: x86_64-pc-windows-msvc binary: codewhale-tui.exe artifact_name: codewhale-tui-windows-x64.exe runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.target }} - uses: Swatinem/rust-cache@v2 with: cache-bin: false - name: Install Linux system dependencies if: runner.os == 'Linux' run: | for i in 1 2 3 4 5; do sudo apt-get update && break echo "apt-get update failed (attempt $i); retrying in 15s" sleep 15 done sudo apt-get install -y libdbus-1-dev pkg-config - name: Install RISC-V cross-compilation toolchain if: matrix.target == 'riscv64gc-unknown-linux-gnu' run: | # Install cross-compiler (available in standard repos) sudo apt-get update sudo apt-get install -y gcc-riscv64-linux-gnu libc6-dev-riscv64-cross # Add Ubuntu ports for riscv64 packages . /etc/os-release sudo tee /etc/apt/sources.list.d/riscv64.sources < nightly/nightly-build-info.txt <> "${GITHUB_OUTPUT}" - uses: actions/upload-artifact@v4 with: name: ${{ steps.stage.outputs.name }} path: nightly/* retention-days: 14