build base-grpc images #2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| --- | |
| name: 'build base-grpc images' | |
| # Builds + pushes pre-compiled builder base images that downstream | |
| # llama-cpp / ik-llama-cpp / turboquant variant Dockerfiles will FROM | |
| # (PR 2). Each base contains apt deps + protoc + cmake + gRPC at | |
| # /opt/grpc + (conditionally) CUDA / ROCm / Vulkan toolchains. | |
| # | |
| # Triggers: | |
| # - schedule (Saturdays 05:00 UTC) - picks up Ubuntu/CUDA/ROCm | |
| # security updates and re-runs ahead of the backend.yml weekly | |
| # cron (Sundays 06:00 UTC). | |
| # - workflow_dispatch - manual one-off rebuild. | |
| # - push to master that touches Dockerfile.base-grpc-builder or | |
| # this workflow itself - keeps bases in sync with their inputs. | |
| # | |
| # Bootstrap (one-time after this PR merges): | |
| # gh workflow run base-images.yml --ref master | |
| # Wait ~30 min for all 9 matrix variants to push to | |
| # quay.io/go-skynet/ci-cache:base-grpc-* before merging PR 2. | |
| on: | |
| schedule: | |
| - cron: '0 5 * * 6' | |
| workflow_dispatch: | |
| push: | |
| branches: [master] | |
| paths: | |
| - 'backend/Dockerfile.base-grpc-builder' | |
| - '.github/workflows/base-images.yml' | |
| concurrency: | |
| group: ci-base-images-${{ github.event.pull_request.number || github.sha }}-${{ github.repository }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| jobs: | |
| build: | |
| if: github.repository == 'mudler/LocalAI' | |
| runs-on: ${{ matrix.runs-on }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - tag: 'base-grpc-amd64' | |
| runs-on: 'ubuntu-latest' | |
| base-image: 'ubuntu:24.04' | |
| build-type: '' | |
| cuda-major-version: '' | |
| cuda-minor-version: '' | |
| ubuntu-version: '2404' | |
| - tag: 'base-grpc-arm64' | |
| runs-on: 'ubuntu-24.04-arm' | |
| base-image: 'ubuntu:24.04' | |
| build-type: '' | |
| cuda-major-version: '' | |
| cuda-minor-version: '' | |
| ubuntu-version: '2404' | |
| - tag: 'base-grpc-cuda-12-amd64' | |
| runs-on: 'ubuntu-latest' | |
| base-image: 'ubuntu:24.04' | |
| build-type: 'cublas' | |
| cuda-major-version: '12' | |
| cuda-minor-version: '8' | |
| ubuntu-version: '2404' | |
| - tag: 'base-grpc-cuda-13-amd64' | |
| runs-on: 'ubuntu-latest' | |
| base-image: 'ubuntu:22.04' | |
| build-type: 'cublas' | |
| cuda-major-version: '13' | |
| cuda-minor-version: '0' | |
| ubuntu-version: '2204' | |
| - tag: 'base-grpc-cuda-13-arm64' | |
| runs-on: 'ubuntu-24.04-arm' | |
| base-image: 'ubuntu:24.04' | |
| build-type: 'cublas' | |
| cuda-major-version: '13' | |
| cuda-minor-version: '0' | |
| ubuntu-version: '2404' | |
| - tag: 'base-grpc-rocm-amd64' | |
| runs-on: 'ubuntu-latest' | |
| base-image: 'rocm/dev-ubuntu-24.04:7.2.1' | |
| build-type: 'hipblas' | |
| cuda-major-version: '' | |
| cuda-minor-version: '' | |
| ubuntu-version: '2404' | |
| - tag: 'base-grpc-vulkan-amd64' | |
| runs-on: 'ubuntu-latest' | |
| base-image: 'ubuntu:24.04' | |
| build-type: 'vulkan' | |
| cuda-major-version: '' | |
| cuda-minor-version: '' | |
| ubuntu-version: '2404' | |
| - tag: 'base-grpc-vulkan-arm64' | |
| runs-on: 'ubuntu-24.04-arm' | |
| base-image: 'ubuntu:24.04' | |
| build-type: 'vulkan' | |
| cuda-major-version: '' | |
| cuda-minor-version: '' | |
| ubuntu-version: '2404' | |
| - tag: 'base-grpc-intel-amd64' | |
| runs-on: 'ubuntu-latest' | |
| base-image: 'intel/oneapi-basekit:2025.3.2-0-devel-ubuntu24.04' | |
| build-type: 'sycl' | |
| cuda-major-version: '' | |
| cuda-minor-version: '' | |
| ubuntu-version: '2404' | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| submodules: false | |
| - name: Free disk space | |
| uses: ./.github/actions/free-disk-space | |
| - name: Set up build disk | |
| uses: ./.github/actions/setup-build-disk | |
| - uses: docker/setup-qemu-action@master | |
| with: | |
| platforms: all | |
| - uses: docker/setup-buildx-action@master | |
| - uses: docker/login-action@v4 | |
| with: | |
| registry: quay.io | |
| username: ${{ secrets.LOCALAI_REGISTRY_USERNAME }} | |
| password: ${{ secrets.LOCALAI_REGISTRY_PASSWORD }} | |
| - uses: docker/build-push-action@v7 | |
| with: | |
| context: . | |
| file: ./backend/Dockerfile.base-grpc-builder | |
| build-args: | | |
| BASE_IMAGE=${{ matrix.base-image }} | |
| BUILD_TYPE=${{ matrix.build-type }} | |
| CUDA_MAJOR_VERSION=${{ matrix.cuda-major-version }} | |
| CUDA_MINOR_VERSION=${{ matrix.cuda-minor-version }} | |
| UBUNTU_VERSION=${{ matrix.ubuntu-version }} | |
| cache-from: type=registry,ref=quay.io/go-skynet/ci-cache:cache-${{ matrix.tag }} | |
| cache-to: type=registry,ref=quay.io/go-skynet/ci-cache:cache-${{ matrix.tag }},mode=max,ignore-error=true | |
| provenance: false | |
| tags: quay.io/go-skynet/ci-cache:${{ matrix.tag }} | |
| push: true |