From 3849b8a679fe7db8f2b98b15b1c9a623b05c3b6b Mon Sep 17 00:00:00 2001 From: Igor Sirotin Date: Tue, 9 Jun 2026 20:37:47 +0300 Subject: [PATCH] ci: add PR-gate workflow and golangci-lint config The repo had no `on: pull_request` CI (only workflow_dispatch + nightly schedule), so nothing validated PRs. Add `.github/workflows/pr.yml` that builds libwaku and runs `go build`, `go vet`, golangci-lint, and a test-compile pass on every PR. Add a baseline `.golangci.yml` (standard linters + gofmt). Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/pr.yml | 57 ++++++++++++++++++++++++++++++++++++++++ .golangci.yml | 11 ++++++++ 2 files changed, 68 insertions(+) create mode 100644 .github/workflows/pr.yml create mode 100644 .golangci.yml diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 0000000..c98226b --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,57 @@ +name: PR + +on: + pull_request: + branches: + - master + +# Cancel superseded runs on the same PR. +concurrency: + group: pr-${{ github.ref }} + cancel-in-progress: true + +jobs: + gate: + runs-on: ubuntu-latest + env: + LMN_DIR: ${{ github.workspace }}/vendor/logos-delivery + # libwaku (kernel) is required at compile time for the cgo packages. + # Updated to also include liblogosdelivery once the messaging package lands. + CGO_CFLAGS: -I${{ github.workspace }}/vendor/logos-delivery/library/ + CGO_LDFLAGS: -L${{ github.workspace }}/vendor/logos-delivery/build/ -lwaku -Wl,-rpath,${{ github.workspace }}/vendor/logos-delivery/build/ + + steps: + - name: Check out repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: "1.24" + + - name: Clone logos-delivery + run: | + mkdir -p vendor + git clone --depth 1 https://github.com/logos-messaging/logos-delivery.git vendor/logos-delivery + + - name: Build libwaku + run: make -C vendor/logos-delivery libwaku -j + + - name: go build + run: go build ./... + + - name: go vet + run: go vet ./... + + - name: golangci-lint + uses: golangci/golangci-lint-action@v6 + with: + version: v2.4.0 + + - name: go test (compile) + # Compile every package's test binary without running the (heavy, + # integration) suite — that runs nightly in CI.yml. This keeps the PR + # gate fast and deterministic while still catching test-code breakage. + run: go test -run '^$' ./... diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..2f16761 --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,11 @@ +# golangci-lint v2 configuration. +# Baseline, low-noise gate for PRs. Tighten over time as the codebase is cleaned up. +version: "2" + +linters: + # `standard` = errcheck, govet, ineffassign, staticcheck, unused. + default: standard + +formatters: + enable: + - gofmt