name: CI/CD on: push: branches: - main - develop - 'release/**' pull_request: branches: - main - develop env: GO_VERSION: '1.21' IMAGE_NAME: 'nats-ui' DOCKER_REGISTRY: hub.p42.ru IMAGE_REPO: hub.p42.ru/redirsvr/nats-ui jobs: test: name: Lint & Test runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Set up Go uses: actions/setup-go@v4 with: go-version: ${{ env.GO_VERSION }} - name: Download dependencies run: go mod download - name: Run linter uses: golangci/golangci-lint-action@v3 with: version: v1.64.8 args: --timeout=5m - name: Run tests run: go test -v -race ./... build: name: Build & Push Docker image (hub.p42.ru) runs-on: ubuntu-latest needs: test if: github.event_name == 'push' steps: - name: Checkout code uses: actions/checkout@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Log in to hub.p42.ru uses: docker/login-action@v2 with: registry: ${{ env.DOCKER_REGISTRY }} username: ${{ secrets.HUB_USER }} password: ${{ secrets.HUB_SECRET }} - name: Extract metadata id: meta uses: docker/metadata-action@v4 with: images: ${{ env.IMAGE_REPO }} tags: | type=sha type=ref,event=branch type=raw,value=latest,enable={{is_default_branch}} - name: Build and push Docker image uses: docker/build-push-action@v4 with: context: . file: ./Dockerfile push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} # hub.p42.ru ограничивает размер blob-uploads (413), поэтому registry-cache отключаем. # Используем inline cache (без отдельного :buildcache тега). cache-from: type=registry,ref=${{ env.IMAGE_REPO }}:latest cache-to: type=inline