name: Model Servers on: pull_request: branches: - main paths: - 'model_servers/**' - 'models/Makefile' - .github/workflows/model_servers.yaml push: branches: - main paths: - 'model_servers/**' - 'models/Makefile' - .github/workflows/model_servers.yaml tags: - '*' workflow_dispatch: env: REGISTRY: ghcr.io REGISTRY_ORG: containers jobs: model-servers-buid-and-push: if: "!contains(github.event.pull_request.labels.*.name, 'hold-tests')" strategy: matrix: include: - image_name: llamacpp_python model: granite flavor: base directory: llamacpp_python platforms: linux/amd64,linux/arm64 no_gpu: 1 - image_name: llamacpp-python-cuda model: granite flavor: cuda directory: llamacpp_python platforms: linux/amd64,linux/arm64 no_gpu: 0 - image_name: llamacpp-python-vulkan-amd model: granite flavor: vulkan/amd64 directory: llamacpp_python platforms: linux/amd64 no_gpu: 0 - image_name: llamacpp-python-vulkan-arm model: granite flavor: vulkan/arm64 directory: llamacpp_python platforms: linux/arm64 no_gpu: 0 - image_name: whispercpp model: whisper-small flavor: base directory: whispercpp platforms: linux/amd64,linux/arm64 no_gpu: 1 - image_name: object_detection_python model: facebook-detr-resnet-101 flavor: base directory: object_detection_python platforms: linux/amd64,linux/arm64 no_gpu: 1 runs-on: ubuntu-24.04 permissions: contents: read packages: write services: registry: image: registry:2.8.3 ports: - 5000:5000 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: Set up Python uses: actions/setup-python@v5.1.1 with: python-version: '3.11' - name: Build Image id: build_image uses: redhat-actions/buildah-build@v2.13 with: image: ${{ env.REGISTRY }}/${{ github.repository_owner}}/${{ matrix.image_name }} platforms: ${{ matrix.platforms }} tags: latest ${{ github.ref_type == 'tag' && github.ref_name || '' }} containerfiles: ./model_servers/${{ matrix.directory }}/${{ matrix.flavor }}/Containerfile context: model_servers/${{ matrix.directory }}/ - name: Download model working-directory: ./models run: make download-model-${{ matrix.model }} - name: Install python dependencies working-directory: ./model_servers/${{ matrix.directory }}/ run: make install - name: Run non-gpu tests working-directory: ./model_servers/${{ matrix.directory }}/ if: ${{ matrix.no_gpu }} run: make test REGISTRY=${{ env.REGISTRY }} IMAGE_NAME=${{ env.REGISTRY_ORG }}/${{ matrix.image_name}}:latest - 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: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - 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 }}