diff --git a/.github/workflows/manual-benchmark.yaml b/.github/workflows/manual-benchmark.yaml index e3e1f4512..7146ac68b 100644 --- a/.github/workflows/manual-benchmark.yaml +++ b/.github/workflows/manual-benchmark.yaml @@ -39,6 +39,16 @@ jobs: - uses: webfactory/ssh-agent@v0.8.0 with: ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} + - name: prepare image tag + id: prepare-tag + if: ${{ inputs.build_vector_db_image == 'true' }} + shell: bash + run: | + branch_tmp=$(git rev-parse --abbrev-ref HEAD) + branch=${branch_tmp//\//-} # replace all / with - + tag="ghcr.io/${{ github.repository_owner }}/vector-db-benchmark:${branch}" + echo "Use tag ${tag}" + echo "tag=${tag}" >> $GITHUB_OUTPUT - name: Set up Docker Buildx if: ${{ inputs.build_vector_db_image == 'true' }} uses: docker/setup-buildx-action@v3 @@ -47,7 +57,7 @@ jobs: uses: docker/login-action@v3 with: registry: ghcr.io - username: qdrant + username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build Vector DB image if: ${{ inputs.build_vector_db_image == 'true' }} @@ -55,8 +65,10 @@ jobs: with: context: . push: true - tags: ghcr.io/qdrant/vector-db-benchmark:${{ github.ref_name }} + tags: ${{ steps.prepare-tag.outputs.tag }} provenance: false + cache-from: type=gha + cache-to: type=gha,mode=max - name: Benches run: | export HCLOUD_TOKEN=${{ secrets.HCLOUD_TOKEN }} @@ -68,7 +80,8 @@ jobs: export POSTGRES_TABLE=benchmark_manual export QDRANT__FEATURE_FLAGS__ALL=${{ inputs.feature_flags_all }} if [ "${{ inputs.build_vector_db_image }}" = "true" ]; then - export VECTOR_DB_BENCHMARK_IMAGE=ghcr.io/qdrant/vector-db-benchmark:${{ github.ref_name }} + export VECTOR_DB_BENCHMARK_IMAGE=${{ steps.prepare-tag.outputs.tag }} + export GHCR_USERNAME=${{ github.repository_owner }} export GHCR_PASSWORD=${{ secrets.GITHUB_TOKEN }} fi bash -x tools/setup_ci.sh diff --git a/tools/run_client_script.sh b/tools/run_client_script.sh index 9bb37e973..6be909660 100644 --- a/tools/run_client_script.sh +++ b/tools/run_client_script.sh @@ -29,6 +29,7 @@ PRIVATE_IP_OF_THE_SERVER=$(bash "${SCRIPT_PATH}/${CLOUD_NAME}/get_private_ip.sh" VECTOR_DB_BENCHMARK_IMAGE=${VECTOR_DB_BENCHMARK_IMAGE:-"qdrant/vector-db-benchmark:latest"} GHCR_PASSWORD=${GHCR_PASSWORD:-""} +GHCR_USERNAME=${GHCR_USERNAME:-""} if [[ "$EXPERIMENT_MODE" == "snapshot" ]]; then scp "${SCRIPT_PATH}/run_experiment.sh" "${SERVER_USERNAME}@${IP_OF_THE_CLIENT}:~/run_experiment_snapshot.sh" @@ -41,6 +42,7 @@ if [[ "$EXPERIMENT_MODE" == "snapshot" ]]; then SNAPSHOT_URL=${SNAPSHOT_URL} \ VECTOR_DB_BENCHMARK_IMAGE=${VECTOR_DB_BENCHMARK_IMAGE} \ GHCR_PASSWORD=${GHCR_PASSWORD} \ + GHCR_USERNAME=${GHCR_USERNAME} \ bash ~/run_experiment_snapshot.sh" ssh -tt -o ServerAliveInterval=120 -o ServerAliveCountMax=10 "${SERVER_USERNAME}@${IP_OF_THE_CLIENT}" "${RUN_EXPERIMENT}" @@ -55,6 +57,7 @@ else EXPERIMENT_MODE=${EXPERIMENT_MODE} \ VECTOR_DB_BENCHMARK_IMAGE=${VECTOR_DB_BENCHMARK_IMAGE} \ GHCR_PASSWORD=${GHCR_PASSWORD} \ + GHCR_USERNAME=${GHCR_USERNAME} \ bash ~/run_experiment.sh" ssh -tt -o ServerAliveInterval=60 -o ServerAliveCountMax=3 "${SERVER_USERNAME}@${IP_OF_THE_CLIENT}" "${RUN_EXPERIMENT}" diff --git a/tools/run_experiment.sh b/tools/run_experiment.sh index c495fa999..52e08620a 100644 --- a/tools/run_experiment.sh +++ b/tools/run_experiment.sh @@ -5,13 +5,14 @@ set -euo pipefail VECTOR_DB_BENCHMARK_IMAGE=${VECTOR_DB_BENCHMARK_IMAGE:-"qdrant/vector-db-benchmark:latest"} GHCR_PASSWORD=${GHCR_PASSWORD:-""} +GHCR_USERNAME=${GHCR_USERNAME:-""} if [[ -n "${GHCR_PASSWORD}" ]] || [[ "${VECTOR_DB_BENCHMARK_IMAGE}" == ghcr.io/* ]]; then - if [[ -z "${GHCR_PASSWORD}" ]]; then - echo "GHCR_PASSWORD is required to pull images from ghcr.io" + if [[ -z "${GHCR_PASSWORD}" ]] || [[ -z "${GHCR_USERNAME}" ]]; then + echo "GHCR_PASSWORD and GHCR_USERNAME is required to pull images from ghcr.io" exit 1 fi - echo "${GHCR_PASSWORD}" | docker login ghcr.io -u qdrant --password-stdin + echo "${GHCR_PASSWORD}" | docker login ghcr.io -u "${GHCR_USERNAME}" --password-stdin fi ENGINE_NAME=${ENGINE_NAME:-"qdrant-continuous-benchmark"}