Files
qdrant/.github/workflows/docker-image.yml
Ivan Pleshkov 2cf42d7167 Add GPU into github workflows (#5752)
* parent 88f68d95b5
author Ivan Pleshkov <pleshkov.ivan@gmail.com> 1736245999 +0100
committer Ivan Pleshkov <pleshkov.ivan@gmail.com> 1736331073 +0100

gpu test and release workflows

no unprivileged, add sdk

fix ci

include llvm

try to use external sdk

use another vk sdk script

remove ninja

native sdk installation

debug vulkan version

use non-dev packages

debug vkinfo

remove llvm dep

ubuntu process-results

ghcr

* remove running gpu test while pr
2025-01-08 13:51:15 +01:00

99 lines
4.4 KiB
YAML

name: Build and deploy docker image
on:
push:
# Pattern matched against refs/tags
tags:
- '*' # Push events to every tag not containing /
jobs:
build:
# Run build on our self-hosted runner, we had trouble with shared runners
runs-on: [self-hosted, linux, x64]
steps:
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
- name: Get current tag
id: vars
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
- name: Build the Docker image
env:
RELEASE_VERSION: ${{ steps.vars.outputs.tag }}
run: |
# Create build container
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx create --use
# Authenticate on registries
docker login --username generall --password ${{ secrets.DOCKERHUB_TOKEN }}
docker login https://docker.pkg.github.com -u qdrant --password ${{ secrets.GITHUB_TOKEN }}
# Build regular image for Docker Hub
DOCKERHUB_TAG="qdrant/qdrant:${{ github.ref_name }}"
DOCKERHUB_TAG_LATEST="qdrant/qdrant:latest"
TAGS="-t ${DOCKERHUB_TAG} -t ${DOCKERHUB_TAG_LATEST}"
GITHUB_TAG="docker.pkg.github.com/qdrant/qdrant/qdrant:${{ github.ref_name }}"
# Pull, retag and push to GitHub packages
docker buildx build --platform='linux/amd64,linux/arm64' --build-arg GIT_COMMIT_ID=${{ github.sha }} $TAGS --push --label "org.opencontainers.image.version"=$RELEASE_VERSION .
docker pull $DOCKERHUB_TAG
docker tag $DOCKERHUB_TAG $GITHUB_TAG
docker push $GITHUB_TAG
# Build unprivileged image for Docker Hub
DOCKERHUB_TAG_UNPRIVILEGED="qdrant/qdrant:${{ github.ref_name }}-unprivileged"
DOCKERHUB_TAG_LATEST_UNPRIVILEGED="qdrant/qdrant:latest-unprivileged"
TAGS_UNPRIVILEGED="-t ${DOCKERHUB_TAG_UNPRIVILEGED} -t ${DOCKERHUB_TAG_LATEST_UNPRIVILEGED}"
GITHUB_TAG_UNPRIVILEGED="docker.pkg.github.com/qdrant/qdrant/qdrant:${{ github.ref_name }}-unprivileged"
# Pull, retag and push to GitHub packages
docker buildx build --build-arg='USER_ID=1000' --platform='linux/amd64,linux/arm64' $TAGS_UNPRIVILEGED --push --label "org.opencontainers.image.version"=$RELEASE_VERSION .
docker pull $DOCKERHUB_TAG_UNPRIVILEGED
docker tag $DOCKERHUB_TAG_UNPRIVILEGED $GITHUB_TAG_UNPRIVILEGED
docker push $GITHUB_TAG_UNPRIVILEGED
build-gpu:
runs-on: [self-hosted, linux, x64]
steps:
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
- name: Get current tag
id: vars
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
- name: Build the Docker image
env:
RELEASE_VERSION: ${{ steps.vars.outputs.tag }}
run: |
# Create build container
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx create --use
# Authenticate on registries
docker login --username generall --password ${{ secrets.DOCKERHUB_TOKEN }}
docker login https://docker.pkg.github.com -u qdrant --password ${{ secrets.GITHUB_TOKEN }}
# Build GPU NVIDIA image for Docker Hub
DOCKERHUB_TAG="qdrant/qdrant:${{ github.ref_name }}-gpu-nvidia"
DOCKERHUB_TAG_LATEST="qdrant/qdrant:gpu-nvidia-latest"
TAGS="-t ${DOCKERHUB_TAG} -t ${DOCKERHUB_TAG_LATEST}"
GITHUB_TAG="docker.pkg.github.com/qdrant/qdrant/qdrant:${{ github.ref_name }}-gpu-nvidia"
# Pull, retag and push to GitHub packages
docker buildx build --build-arg GPU=nvidia --platform='linux/amd64' --build-arg GIT_COMMIT_ID=${{ github.sha }} $TAGS --push --label "org.opencontainers.image.version"=$RELEASE_VERSION .
docker pull $DOCKERHUB_TAG
docker tag $DOCKERHUB_TAG $GITHUB_TAG
docker push $GITHUB_TAG
# Build GPU AMD image for Docker Hub
DOCKERHUB_TAG="qdrant/qdrant:${{ github.ref_name }}-gpu-amd"
DOCKERHUB_TAG_LATEST="qdrant/qdrant:gpu-amd-latest"
TAGS="-t ${DOCKERHUB_TAG} -t ${DOCKERHUB_TAG_LATEST}"
GITHUB_TAG="docker.pkg.github.com/qdrant/qdrant/qdrant:${{ github.ref_name }}-gpu-amd"
# Pull, retag and push to GitHub packages
docker buildx build --build-arg GPU=amd --platform='linux/amd64' --build-arg GIT_COMMIT_ID=${{ github.sha }} $TAGS --push --label "org.opencontainers.image.version"=$RELEASE_VERSION .
docker pull $DOCKERHUB_TAG
docker tag $DOCKERHUB_TAG $GITHUB_TAG
docker push $GITHUB_TAG