diff --git a/.github/workflows/ci.yml b/.forgejo/workflows/ci.yml similarity index 56% rename from .github/workflows/ci.yml rename to .forgejo/workflows/ci.yml index 9f48b90..0719489 100644 --- a/.github/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -12,17 +12,21 @@ permissions: jobs: test: name: Test - runs-on: ubuntu-latest + runs-on: docker + container: + image: docker.io/library/golang:1.24 strategy: matrix: go-version: ["1.22", "1.23", "1.24"] steps: - uses: actions/checkout@v4 - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version: ${{ matrix.go-version }} + - 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: Run tests run: go test -v -race -count=1 ./... @@ -33,45 +37,35 @@ 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: ubuntu-latest + runs-on: docker + container: + image: docker.io/library/golang:1.24 steps: - uses: actions/checkout@v4 - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version: "1.24" + - 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: Run golangci-lint - uses: golangci/golangci-lint-action@v6 - with: - version: latest + run: golangci-lint run ./... vet: name: Vet - runs-on: ubuntu-latest + runs-on: docker + container: + image: docker.io/library/golang:1.24 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 ./...