name: Update quay.io/ai-lab model images on: schedule: # schedule the job to run at 12 AM daily - cron: '0 0 * * *' pull_request: branches: - main paths: - .github/workflows/model_image_build_push.yaml push: branches: - main paths: - .github/workflows/model_image_build_push.yaml workflow_dispatch: env: REGISTRY: quay.io REGISTRY_ORG: ai-lab jobs: models-build-and-push: if: "!contains(github.event.pull_request.labels.*.name, 'hold-tests')" strategy: matrix: include: - image_name: mistral-7b-code-16k-qlora label: Q4_K_M url: https://huggingface.co/TheBloke/Mistral-7B-Code-16K-qlora-GGUF/resolve/main/mistral-7b-code-16k-qlora.Q4_K_M.gguf platforms: linux/amd64,linux/arm64 - image_name: mistral-7b-instruct label: Q4_K_M url: https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/mistral-7b-instruct-v0.2.Q4_K_M.gguf platforms: linux/amd64,linux/arm64 - image_name: merlinite-7b-lab label: Q4_K_M url: https://huggingface.co/instructlab/merlinite-7b-lab-GGUF/resolve/main/merlinite-7b-lab-Q4_K_M.gguf platforms: linux/amd64,linux/arm64 - image_name: granite-7b-lab label: Q4_K_M url: https://huggingface.co/instructlab/granite-7b-lab-GGUF/resolve/main/granite-7b-lab-Q4_K_M.gguf platforms: linux/amd64,linux/arm64 - image_name: whisper-small url: https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.bin platforms: linux/amd64,linux/arm64 runs-on: ubuntu-24.04 permissions: contents: read packages: write steps: - name: Remove unnecessary files run: | sudo rm -rf /usr/share/dotnet sudo rm -rf "$AGENT_TOOLSDIRECTORY" - uses: actions/checkout@v4.1.7 - name: Install qemu dependency run: | sudo apt-get update sudo apt-get install -y qemu-user-static - name: Build Image id: build_image uses: redhat-actions/buildah-build@v2.13 with: image: ${{ env.REGISTRY_ORG }}/${{ matrix.image_name }} platforms: ${{ matrix.platforms }} labels: | ${{ matrix.label }} build-args: | MODEL_URL=${{ matrix.url }} tags: latest containerfiles: ./models/Containerfile context: models - name: Login to Container Registry if: github.event_name == 'push' && github.ref == 'refs/heads/main' uses: redhat-actions/podman-login@v1.7 with: registry: ${{ env.REGISTRY }} username: ${{ secrets.REGISTRY_USER }} password: ${{ secrets.REGISTRY_PASSWORD }} - name: Push image if: github.event_name == 'push' && github.ref == 'refs/heads/main' uses: redhat-actions/push-to-registry@v2.8 with: image: ${{ steps.build_image.outputs.image }} tags: ${{ steps.build_image.outputs.tags }} registry: ${{ env.REGISTRY }}