diff --git a/.github/workflows/deploy-on-v2-commit.yml b/.github/workflows/deploy-on-v2-commit.yml index ca66308ed..38e7da1e9 100644 --- a/.github/workflows/deploy-on-v2-commit.yml +++ b/.github/workflows/deploy-on-v2-commit.yml @@ -12,6 +12,9 @@ permissions: jobs: deploy-v2-on-push: runs-on: ubuntu-latest + concurrency: + group: deploy-v2-push-V2 + cancel-in-progress: true steps: - name: Harden Runner @@ -33,6 +36,28 @@ jobs: echo "frontend_short=${FRONTEND_HASH:0:8}" >> $GITHUB_OUTPUT echo "backend_short=${BACKEND_HASH:0:8}" >> $GITHUB_OUTPUT + - name: Check if frontend image exists + id: check-frontend + run: | + if docker manifest inspect ${{ secrets.DOCKER_HUB_USERNAME }}/test:v2-frontend-${{ steps.commit-hashes.outputs.frontend_short }} >/dev/null 2>&1; then + echo "exists=true" >> $GITHUB_OUTPUT + echo "Frontend image already exists, skipping build" + else + echo "exists=false" >> $GITHUB_OUTPUT + echo "Frontend image needs to be built" + fi + + - name: Check if backend image exists + id: check-backend + run: | + if docker manifest inspect ${{ secrets.DOCKER_HUB_USERNAME }}/test:v2-backend-${{ steps.commit-hashes.outputs.backend_short }} >/dev/null 2>&1; then + echo "exists=true" >> $GITHUB_OUTPUT + echo "Backend image already exists, skipping build" + else + echo "exists=false" >> $GITHUB_OUTPUT + echo "Backend image needs to be built" + fi + - name: Login to Docker Hub uses: docker/login-action@v3 with: @@ -40,6 +65,7 @@ jobs: password: ${{ secrets.DOCKER_HUB_API }} - name: Build and push frontend image + if: steps.check-frontend.outputs.exists == 'false' uses: docker/build-push-action@v6 with: context: . @@ -48,8 +74,9 @@ jobs: tags: ${{ secrets.DOCKER_HUB_USERNAME }}/test:v2-frontend-${{ steps.commit-hashes.outputs.frontend_short }} build-args: VERSION_TAG=v2-alpha platforms: linux/amd64 - + - name: Build and push backend image + if: steps.check-backend.outputs.exists == 'false' uses: docker/build-push-action@v6 with: context: . @@ -59,6 +86,7 @@ jobs: build-args: VERSION_TAG=v2-alpha platforms: linux/amd64 + - name: Set up SSH run: | mkdir -p ~/.ssh/