name: CI on: push: branches: [master, main] pull_request: # Один runner (DESKTOP-SIR8B3R): параллельные workflow ломают кэш act/actions. concurrency: group: eventhub-back-${{ github.ref }} cancel-in-progress: false env: BUILDKIT_PROGRESS: quiet DOCKER_BUILDKIT: 1 REGISTRY: git.sabilin.com/eventhub jobs: test: runs-on: ubuntu-latest timeout-minutes: 60 steps: - uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to registry if: github.event_name == 'push' env: REGISTRY_USER: ${{ secrets.REGISTRY_USER }} REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} run: | bash scripts/retry-docker-build.sh 5 30 -- \ bash -c 'echo "${REGISTRY_PASSWORD}" | docker login git.sabilin.com -u "${REGISTRY_USER}" --password-stdin' - name: Ensure Erlang base images (registry :latest) run: | set -euo pipefail FORCE="" if CHANGED="$(git diff --name-only HEAD~1..HEAD 2>/dev/null || true)" \ && echo "${CHANGED}" | grep -q '^docker/erlang/'; then FORCE="--force-build" fi bash scripts/build-erlang-base-images.sh ${FORCE} - name: Push Erlang base images if: github.event_name == 'push' run: bash scripts/build-erlang-base-images.sh --push - name: Build eventhub image run: | set -euo pipefail bash scripts/retry-docker-build.sh 5 60 -- \ docker buildx build \ --network=host \ --pull \ --file docker/Dockerfile \ --tag eventhub:latest \ --load \ --provenance=false \ --sbom=false \ . - name: Build API test image run: | set -euo pipefail bash scripts/retry-docker-build.sh 5 60 -- \ docker buildx build \ --network=host \ --pull \ --file docker/ApiTests.Dockerfile \ --tag eventhub-api-tests:latest \ --load \ --provenance=false \ --sbom=false \ . - name: Run API tests (local CT) run: docker run --rm eventhub-api-tests:latest - name: Push tested eventhub image if: github.event_name == 'push' run: | set -euo pipefail TAG="sha-${GITHUB_SHA:0:12}" docker tag eventhub:latest "${REGISTRY}/eventhub:${TAG}" docker tag eventhub:latest "${REGISTRY}/eventhub:ift" bash scripts/retry-docker-build.sh 5 30 -- docker push "${REGISTRY}/eventhub:${TAG}" bash scripts/retry-docker-build.sh 5 30 -- docker push "${REGISTRY}/eventhub:ift"