name: CI on: push: branches: [main, master] pull_request: branches: [main, master] jobs: test: runs-on: ubuntu-latest timeout-minutes: 15 env: GOTOOLCHAIN: local GOFLAGS: -mod=vendor steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: '1.24.0' cache: false - name: Vet run: go vet ./... - name: Test run: go test -v -race -coverprofile=coverage.out ./... - name: Coverage report run: go tool cover -func=coverage.out - name: Check internal package coverage run: | COVERAGE=$(go tool cover -func=coverage.out | grep "^github.com/hits/ExploreDNS/internal" | awk '{print $3}' | sed 's/%//' | awk '{sum+=$1; count++} END {if(count>0) print sum/count; else print 0}') echo "Average internal package coverage: ${COVERAGE}%" - name: Build run: go build -v ./... docker: runs-on: ubuntu-latest needs: test if: github.event_name == 'push' steps: - uses: actions/checkout@v4 - name: Log in to registry uses: docker/login-action@v3 with: registry: gitea.hansenits.com.au username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and push CLI image uses: docker/build-push-action@v6 with: context: . file: Dockerfile.cli push: true tags: | gitea.hansenits.com.au/hits/exploredns-cli:latest gitea.hansenits.com.au/hits/exploredns-cli:${{ github.sha }} - name: Build and push web image uses: docker/build-push-action@v6 with: context: . file: Dockerfile.web push: true tags: | gitea.hansenits.com.au/hits/exploredns-web:latest gitea.hansenits.com.au/hits/exploredns-web:${{ github.sha }}