diff --git a/.forgejo/workflows/ci.yml b/.github/workflows/ci.yml similarity index 56% rename from .forgejo/workflows/ci.yml rename to .github/workflows/ci.yml index 0719489..9f48b90 100644 --- a/.forgejo/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,21 +12,17 @@ permissions: jobs: test: name: Test - runs-on: docker - container: - image: docker.io/library/golang:1.24 + runs-on: ubuntu-latest strategy: matrix: go-version: ["1.22", "1.23", "1.24"] steps: - uses: actions/checkout@v4 - - name: Pin Go version (matrix override) - if: matrix.go-version != '1.24' - run: | - curl -sSL "https://go.dev/dl/go${{ matrix.go-version }}.linux-amd64.tar.gz" \ - | tar -C /usr/local --strip-components=1 -xz - go version + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: ${{ matrix.go-version }} - name: Run tests run: go test -v -race -count=1 ./... @@ -37,35 +33,45 @@ jobs: go test -race -coverprofile=coverage.out -covermode=atomic ./... COVERAGE=$(go tool cover -func=coverage.out | grep total | awk '{print $3}' | sed 's/%//') echo "Total coverage: ${COVERAGE}%" - apt-get update && apt-get install -y --no-install-recommends bc if [ "$(echo "$COVERAGE < 90" | bc)" -eq 1 ]; then echo "::error::Coverage ${COVERAGE}% is below 90% threshold" exit 1 fi + - name: Upload coverage + if: matrix.go-version == '1.24' + uses: codecov/codecov-action@v4 + with: + files: coverage.out + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + lint: name: Lint - runs-on: docker - container: - image: docker.io/library/golang:1.24 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Install golangci-lint - run: | - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh \ - | sh -s -- -b /usr/local/bin latest + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: "1.24" - name: Run golangci-lint - run: golangci-lint run ./... + uses: golangci/golangci-lint-action@v6 + with: + version: latest vet: name: Vet - runs-on: docker - container: - image: docker.io/library/golang:1.24 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: "1.24" + - name: Run go vet run: go vet ./...