From 4d2d9dad7e3d27a895cd683e844b958ed0592ea6 Mon Sep 17 00:00:00 2001 From: Kevin Wang Date: Tue, 21 Apr 2026 17:54:52 -0700 Subject: [PATCH] ci: use fork clone_url for DSTACK_SRC_URL on PRs from forks When a PR comes from a fork, the head SHA doesn't exist in the base repo yet, so `git clone && git checkout ` inside the Docker builder fails with "unable to read tree". Pick the head repo's clone_url when it's available, and fall back to the base repo URL for push events. --- .github/workflows/docker-build-check.yml | 32 +++++++++++++----------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/.github/workflows/docker-build-check.yml b/.github/workflows/docker-build-check.yml index 0bd5cc18..189a2ae5 100644 --- a/.github/workflows/docker-build-check.yml +++ b/.github/workflows/docker-build-check.yml @@ -10,6 +10,10 @@ on: pull_request: branches: [ master, next, dev-* ] +env: + DSTACK_REV: ${{ github.event.pull_request.head.sha || github.sha }} + DSTACK_SRC_URL: ${{ github.event.pull_request.head.repo.clone_url || format('{0}/{1}', github.server_url, github.repository) }} + jobs: gateway: runs-on: ubuntu-latest @@ -30,8 +34,8 @@ jobs: build-contexts: | build-shared=build/shared build-args: | - DSTACK_REV=${{ github.event.pull_request.head.sha || github.sha }} - DSTACK_SRC_URL=${{ github.server_url }}/${{ github.repository }} + DSTACK_REV=${{ env.DSTACK_REV }} + DSTACK_SRC_URL=${{ env.DSTACK_SRC_URL }} - name: Verify pinned packages run: | @@ -46,8 +50,8 @@ jobs: --tag gateway-builder-check:latest \ --provenance=false \ --build-context build-shared=build/shared \ - --build-arg "DSTACK_REV=${{ github.event.pull_request.head.sha || github.sha }}" \ - --build-arg "DSTACK_SRC_URL=${{ github.server_url }}/${{ github.repository }}" \ + --build-arg "DSTACK_REV=${DSTACK_REV}" \ + --build-arg "DSTACK_SRC_URL=${DSTACK_SRC_URL}" \ gateway/dstack-app/builder - name: Verify builder pinned packages @@ -74,8 +78,8 @@ jobs: build-contexts: | build-shared=build/shared build-args: | - DSTACK_REV=${{ github.event.pull_request.head.sha || github.sha }} - DSTACK_SRC_URL=${{ github.server_url }}/${{ github.repository }} + DSTACK_REV=${{ env.DSTACK_REV }} + DSTACK_SRC_URL=${{ env.DSTACK_SRC_URL }} - name: Verify pinned packages (qemu stage) run: | @@ -90,8 +94,8 @@ jobs: --tag kms-builder-check:latest \ --provenance=false \ --build-context build-shared=build/shared \ - --build-arg "DSTACK_REV=${{ github.event.pull_request.head.sha || github.sha }}" \ - --build-arg "DSTACK_SRC_URL=${{ github.server_url }}/${{ github.repository }}" \ + --build-arg "DSTACK_REV=${DSTACK_REV}" \ + --build-arg "DSTACK_SRC_URL=${DSTACK_SRC_URL}" \ kms/dstack-app/builder - name: Verify builder pinned packages @@ -125,8 +129,8 @@ jobs: build-contexts: | build-shared=build/shared build-args: | - DSTACK_REV=${{ github.event.pull_request.head.sha || github.sha }} - DSTACK_SRC_URL=${{ github.server_url }}/${{ github.repository }} + DSTACK_REV=${{ env.DSTACK_REV }} + DSTACK_SRC_URL=${{ env.DSTACK_SRC_URL }} - name: Verify pinned packages (runtime) run: | @@ -142,8 +146,8 @@ jobs: --provenance=false \ --file verifier/builder/Dockerfile \ --build-context build-shared=build/shared \ - --build-arg "DSTACK_REV=${{ github.event.pull_request.head.sha || github.sha }}" \ - --build-arg "DSTACK_SRC_URL=${{ github.server_url }}/${{ github.repository }}" \ + --build-arg "DSTACK_REV=${DSTACK_REV}" \ + --build-arg "DSTACK_SRC_URL=${DSTACK_SRC_URL}" \ verifier - name: Verify builder pinned packages @@ -160,8 +164,8 @@ jobs: --provenance=false \ --file verifier/builder/Dockerfile \ --build-context build-shared=build/shared \ - --build-arg "DSTACK_REV=${{ github.event.pull_request.head.sha || github.sha }}" \ - --build-arg "DSTACK_SRC_URL=${{ github.server_url }}/${{ github.repository }}" \ + --build-arg "DSTACK_REV=${DSTACK_REV}" \ + --build-arg "DSTACK_SRC_URL=${DSTACK_SRC_URL}" \ verifier - name: Verify qemu pinned packages