| name: 'build backend container images (PR-filtered)' |
|
|
| on: |
| pull_request: |
|
|
| concurrency: |
| group: ci-backends-pr-${{ github.head_ref || github.ref }}-${{ github.repository }} |
| cancel-in-progress: true |
|
|
| jobs: |
| generate-matrix: |
| runs-on: ubuntu-latest |
| outputs: |
| matrix: ${{ steps.set-matrix.outputs.matrix }} |
| matrix-darwin: ${{ steps.set-matrix.outputs.matrix-darwin }} |
| has-backends: ${{ steps.set-matrix.outputs.has-backends }} |
| has-backends-darwin: ${{ steps.set-matrix.outputs.has-backends-darwin }} |
| steps: |
| - name: Checkout repository |
| uses: actions/checkout@v6 |
|
|
| - name: Setup Bun |
| uses: oven-sh/setup-bun@v2 |
|
|
| - name: Install dependencies |
| run: | |
| bun add js-yaml |
| bun add @octokit/core |
| |
| |
| - name: Filter matrix for changed backends |
| id: set-matrix |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| GITHUB_EVENT_PATH: ${{ github.event_path }} |
| run: bun run scripts/changed-backends.js |
|
|
| backend-jobs: |
| needs: generate-matrix |
| uses: ./.github/workflows/backend_build.yml |
| if: needs.generate-matrix.outputs.has-backends == 'true' |
| with: |
| tag-latest: ${{ matrix.tag-latest }} |
| tag-suffix: ${{ matrix.tag-suffix }} |
| build-type: ${{ matrix.build-type }} |
| cuda-major-version: ${{ matrix.cuda-major-version }} |
| cuda-minor-version: ${{ matrix.cuda-minor-version }} |
| platforms: ${{ matrix.platforms }} |
| runs-on: ${{ matrix.runs-on }} |
| base-image: ${{ matrix.base-image }} |
| backend: ${{ matrix.backend }} |
| dockerfile: ${{ matrix.dockerfile }} |
| skip-drivers: ${{ matrix.skip-drivers }} |
| context: ${{ matrix.context }} |
| ubuntu-version: ${{ matrix.ubuntu-version }} |
| secrets: |
| quayUsername: ${{ secrets.LOCALAI_REGISTRY_USERNAME }} |
| quayPassword: ${{ secrets.LOCALAI_REGISTRY_PASSWORD }} |
| strategy: |
| fail-fast: true |
| matrix: ${{ fromJson(needs.generate-matrix.outputs.matrix) }} |
| backend-jobs-darwin: |
| needs: generate-matrix |
| uses: ./.github/workflows/backend_build_darwin.yml |
| if: needs.generate-matrix.outputs.has-backends-darwin == 'true' |
| with: |
| backend: ${{ matrix.backend }} |
| build-type: ${{ matrix.build-type }} |
| go-version: "1.24.x" |
| tag-suffix: ${{ matrix.tag-suffix }} |
| lang: ${{ matrix.lang || 'python' }} |
| use-pip: ${{ matrix.backend == 'diffusers' }} |
| runs-on: "macos-latest" |
| secrets: |
| quayUsername: ${{ secrets.LOCALAI_REGISTRY_USERNAME }} |
| quayPassword: ${{ secrets.LOCALAI_REGISTRY_PASSWORD }} |
| strategy: |
| fail-fast: true |
| matrix: ${{ fromJson(needs.generate-matrix.outputs.matrix-darwin) }} |
|
|