name: CI on: push: branches: [ main ] pull_request: branches: [ main ] jobs: test: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v4 with: go-version: '1.22' - name: Run tests with coverage run: | go test -coverprofile=coverage.out ./... if [ "$(go tool cover -func=coverage.out | grep total | awk '{print $3}' | tr -d '%')" -lt 60 ]; then echo "Coverage below 60%" exit 1 fi - name: Upload coverage to GitHub uses: actions/upload-artifact@v4 with: name: coverage-report path: coverage.out lint: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v4 with: go-version: '1.22' - name: Run golangci-lint uses: golangci/golangci-lint-action@v4 with: version: latest build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v4 with: go-version: '1.22' - name: Build run: go build -o perc ./cmd/perc - name: Test build run: ./perc version