From f4e68d41ae851ffd73223a1c69fa0bbaa06fb64d Mon Sep 17 00:00:00 2001 From: rob thijssen Date: Fri, 24 Apr 2026 11:41:01 +0300 Subject: [PATCH] refactor(ci): replace dynamic matrix with static includes Gitea Actions doesn't support fromJSON in matrix strategies (expressions are evaluated before dependent jobs run). Move flavour definitions into the workflow as static matrix includes and remove flavours.yml. Co-Authored-By: Claude Opus 4.6 (1M context) --- .gitea/workflows/build-release.yml | 65 ++++++++++++------------------ flavours.yml | 5 --- 2 files changed, 25 insertions(+), 45 deletions(-) delete mode 100644 flavours.yml diff --git a/.gitea/workflows/build-release.yml b/.gitea/workflows/build-release.yml index 4d3b6fb..63f4005 100644 --- a/.gitea/workflows/build-release.yml +++ b/.gitea/workflows/build-release.yml @@ -9,30 +9,17 @@ on: type: string jobs: - plan: - runs-on: fedora - outputs: - flavours: ${{ steps.plan.outputs.flavours }} - version: ${{ steps.plan.outputs.version }} - steps: - - uses: actions/checkout@v4 - - id: plan - run: | - version="${TAG#v}" - echo "version=${version}" >> "$GITHUB_OUTPUT" - # Emit flavours as a JSON array for matrix consumption - flavours=$(yq --compact-output '.flavours' flavours.yml) - echo "flavours=${flavours}" >> "$GITHUB_OUTPUT" - env: - TAG: ${{ inputs.tag }} - build: - needs: plan - runs-on: cuda-13.0 strategy: fail-fast: false matrix: - flavour: ${{ fromJSON(needs.plan.outputs.flavours) }} + include: + - name: cuda13 + runner: cuda-13.0 + cuda_home: /usr/local/cuda-13.0 + cargo_features: "cuda cudnn flash-attn nccl" + compute_caps: "120" + runs-on: ${{ matrix.runner }} steps: - uses: actions/checkout@v4 @@ -44,57 +31,58 @@ jobs: - name: Build run: ./script/build-binary.sh env: - FLAVOUR_NAME: ${{ matrix.flavour.name }} - CUDA_HOME: ${{ matrix.flavour.cuda_home }} - CARGO_FEATURES: ${{ matrix.flavour.cargo_features }} - CUDA_COMPUTE_CAP: ${{ matrix.flavour.compute_caps }} + FLAVOUR_NAME: ${{ matrix.name }} + CUDA_HOME: ${{ matrix.cuda_home }} + CARGO_FEATURES: ${{ matrix.cargo_features }} + CUDA_COMPUTE_CAP: ${{ matrix.compute_caps }} SRC_DIR: src - name: Upload binary artifact uses: actions/upload-artifact@v3 with: - name: mistralrs-server-${{ matrix.flavour.name }} - path: artifacts/mistralrs-server-${{ matrix.flavour.name }} + name: mistralrs-server-${{ matrix.name }} + path: artifacts/mistralrs-server-${{ matrix.name }} retention-days: 1 package: - needs: [plan, build] + needs: build runs-on: fedora strategy: fail-fast: false matrix: - flavour: ${{ fromJSON(needs.plan.outputs.flavours) }} + include: + - name: cuda13 steps: - uses: actions/checkout@v4 - #- name: Install build tools - # run: sudo dnf install -y rpm-build rpmdevtools systemd-rpm-macros - - name: Download binary uses: actions/download-artifact@v3 with: - name: mistralrs-server-${{ matrix.flavour.name }} + name: mistralrs-server-${{ matrix.name }} path: artifacts/ - name: Build RPM run: | + version="${TAG#v}" rpmdev-setuptree - cp artifacts/mistralrs-server-${{ matrix.flavour.name }} ~/rpmbuild/SOURCES/ + cp artifacts/mistralrs-server-${{ matrix.name }} ~/rpmbuild/SOURCES/ cp rpm/systemd/mistralrs@.service ~/rpmbuild/SOURCES/ cp rpm/systemd/mistralrs@.conf.example ~/rpmbuild/SOURCES/ rpmbuild -bb rpm/mistralrs.spec \ - --define "mistralrs_version ${{ needs.plan.outputs.version }}" \ - --define "mistralrs_flavour ${{ matrix.flavour.name }}" + --define "mistralrs_version ${version}" \ + --define "mistralrs_flavour ${{ matrix.name }}" + env: + TAG: ${{ inputs.tag }} - name: Upload RPM uses: actions/upload-artifact@v3 with: - name: rpm-${{ matrix.flavour.name }} + name: rpm-${{ matrix.name }} path: ~/rpmbuild/RPMS/x86_64/*.rpm retention-days: 7 publish: - needs: [plan, package] + needs: package runs-on: fedora # concurrency ensures only one publish runs at a time — repo metadata # corruption is a nightmare if two createrepo_c processes race. @@ -104,9 +92,6 @@ jobs: steps: - uses: actions/checkout@v4 - #- name: Install tools - # run: sudo dnf install -y createrepo_c rpm-sign rsync - - name: Download all RPMs uses: actions/download-artifact@v3 with: diff --git a/flavours.yml b/flavours.yml deleted file mode 100644 index ed62ee4..0000000 --- a/flavours.yml +++ /dev/null @@ -1,5 +0,0 @@ -flavours: - - name: cuda13 - cuda_home: /usr/local/cuda-13.0 - cargo_features: "cuda cudnn flash-attn nccl" - compute_caps: "120"