diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index ee74e67..d4038eb 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -17,10 +17,11 @@ jobs: - name: Resolve environment run: | set -euo pipefail + # Тег образа зависит только от коммита (одинаков для stage и prod) + echo "IMAGE_TAG=$(git rev-parse --short HEAD)" >> "$GITHUB_ENV" if [[ "${{ gitea.ref_name }}" == "stage" ]]; then { echo "ENV_NAME=stage" - echo "IMAGE_TAG=stage" echo "CONTAINER_SUFFIX=-stage" echo "APP_PORT=8004" echo "POSTGRES_PORT=5433" @@ -31,7 +32,6 @@ jobs: else { echo "ENV_NAME=prod" - echo "IMAGE_TAG=0.1.0" echo "CONTAINER_SUFFIX=" echo "APP_PORT=8003" echo "POSTGRES_PORT=5432" @@ -46,15 +46,19 @@ jobs: docker login gitea.p4r4dls.ru \ -u ${{ secrets.REGISTRY_USER }} \ -p ${{ secrets.REGISTRY_TOKEN }} - docker buildx rm multibuilder 2>/dev/null || true - docker buildx create --use --name multibuilder --driver-opt network=host IMG=gitea.p4r4dls.ru/yusupal1ev/g2s-aggregator:${IMAGE_TAG} - docker buildx build \ - --platform linux/amd64 \ - --load \ - -t "$IMG" \ - . - docker push "$IMG" + if docker manifest inspect "$IMG" >/dev/null 2>&1; then + echo "Образ $IMG уже есть в реестре — сборка пропущена" + else + docker buildx rm multibuilder 2>/dev/null || true + docker buildx create --use --name multibuilder --driver-opt network=host + docker buildx build \ + --platform linux/amd64 \ + --load \ + -t "$IMG" \ + . + docker push "$IMG" + fi - name: Setup SSH run: |