mirror of
https://github.com/logos-messaging/logos-messaging-go-bindings.git
synced 2026-06-11 19:29:57 +00:00
ci: add PR-gate workflow + fix module path (#109)
* chore: rename module path to logos-delivery-go-bindings
The module path still read `logos-messaging-go-bindings`, mismatching the
repository name. Rename it to `github.com/logos-messaging/logos-delivery-go-bindings`
and update all in-repo imports. gofmt re-sorts a few import blocks as a result
(plus two files that were already unformatted on master).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* ci: scope golangci-lint to new code via new-from-merge-base
Run the full `standard` linter set but only report findings introduced since
the merge-base with master, so the legacy kernel wrapper's pre-existing issues
(unchecked defer-Close, dead helpers) don't drown the gate while new code still
gets full coverage. Fetch origin/master so the base ref is available in CI.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* ci: clone logos-delivery outside vendor/ and build in module mode
`go build` failed in CI because cloning logos-delivery into `vendor/` put Go
into vendor mode against an inconsistent `vendor/modules.txt`. Clone the
checkout into `.logos-delivery` instead and set `GOFLAGS=-mod=mod` so the gate
always builds in module mode.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* ci: use golangci-lint-action@v7 for golangci-lint v2
v6 of the action rejects golangci-lint v2 versions ("v2 is not supported by
golangci-lint-action v6"). Bump to v7.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* ci: cache libwaku, gate go mod tidy, rename LMN_DIR
- Rename LMN_DIR -> LOGOS_DELIVERY_DIR across the PR-gate and nightly
workflows, the waku Makefile, and the build docs.
- Cache the built logos-delivery kernel keyed on its upstream HEAD SHA,
skipping the clone + libwaku build while that commit is unchanged.
- Add a "go mod tidy is clean" step that fails if go.mod/go.sum drift.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
ac6f8a5096
commit
0a84f0fb7b
12
.github/workflows/CI.yml
vendored
12
.github/workflows/CI.yml
vendored
@ -46,9 +46,9 @@ jobs:
|
||||
|
||||
- name: Build waku bindings
|
||||
run: |
|
||||
export LMN_DIR=$(pwd)/vendor/logos-delivery
|
||||
export CGO_CFLAGS="-I${LMN_DIR}/library/"
|
||||
export CGO_LDFLAGS="-L${LMN_DIR}/build/ -lwaku -Wl,-rpath,${LMN_DIR}/build/"
|
||||
export LOGOS_DELIVERY_DIR=$(pwd)/vendor/logos-delivery
|
||||
export CGO_CFLAGS="-I${LOGOS_DELIVERY_DIR}/library/"
|
||||
export CGO_LDFLAGS="-L${LOGOS_DELIVERY_DIR}/build/ -lwaku -Wl,-rpath,${LOGOS_DELIVERY_DIR}/build/"
|
||||
make -C waku build
|
||||
|
||||
- name: Increase ulimit
|
||||
@ -58,9 +58,9 @@ jobs:
|
||||
run: |
|
||||
set -euo pipefail
|
||||
cd waku
|
||||
export LMN_DIR=$(pwd)/vendor/logos-delivery
|
||||
export CGO_CFLAGS="-I${LMN_DIR}/library/"
|
||||
export CGO_LDFLAGS="-L${LMN_DIR}/build/ -lwaku -Wl,-rpath,${LMN_DIR}/build/"
|
||||
export LOGOS_DELIVERY_DIR=$(pwd)/vendor/logos-delivery
|
||||
export CGO_CFLAGS="-I${LOGOS_DELIVERY_DIR}/library/"
|
||||
export CGO_LDFLAGS="-L${LOGOS_DELIVERY_DIR}/build/ -lwaku -Wl,-rpath,${LOGOS_DELIVERY_DIR}/build/"
|
||||
go test -count=10 -p=1 -v -timeout=360m . | tee ../testlogs.log
|
||||
|
||||
- name: Upload daily test logs
|
||||
|
||||
90
.github/workflows/pr.yml
vendored
Normal file
90
.github/workflows/pr.yml
vendored
Normal file
@ -0,0 +1,90 @@
|
||||
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:
|
||||
# Clone the logos-delivery checkout OUTSIDE the module tree: a directory
|
||||
# named `vendor/` at the module root would put Go into vendor mode.
|
||||
LOGOS_DELIVERY_DIR: ${{ github.workspace }}/.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 }}/.logos-delivery/library/
|
||||
CGO_LDFLAGS: -L${{ github.workspace }}/.logos-delivery/build/ -lwaku -Wl,-rpath,${{ github.workspace }}/.logos-delivery/build/
|
||||
# Build in module mode; never use a vendor/ dir.
|
||||
GOFLAGS: -mod=mod
|
||||
|
||||
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: Resolve logos-delivery commit
|
||||
# Cache the built kernel keyed on the exact upstream commit, so the
|
||||
# expensive clone + build is skipped while logos-delivery's HEAD is
|
||||
# unchanged. ls-remote gives us the SHA before we clone.
|
||||
id: logos-delivery-rev
|
||||
run: |
|
||||
rev=$(git ls-remote https://github.com/logos-messaging/logos-delivery.git HEAD | cut -f1)
|
||||
echo "rev=$rev" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Cache logos-delivery build
|
||||
id: logos-delivery-cache
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ${{ env.LOGOS_DELIVERY_DIR }}
|
||||
key: logos-delivery-${{ runner.os }}-${{ steps.logos-delivery-rev.outputs.rev }}
|
||||
|
||||
- name: Clone logos-delivery
|
||||
if: steps.logos-delivery-cache.outputs.cache-hit != 'true'
|
||||
run: git clone --depth 1 https://github.com/logos-messaging/logos-delivery.git "$LOGOS_DELIVERY_DIR"
|
||||
|
||||
- name: Build libwaku
|
||||
if: steps.logos-delivery-cache.outputs.cache-hit != 'true'
|
||||
run: make -C "$LOGOS_DELIVERY_DIR" libwaku -j
|
||||
|
||||
- name: go build
|
||||
run: go build ./...
|
||||
|
||||
- name: go vet
|
||||
run: go vet ./...
|
||||
|
||||
- name: go mod tidy is clean
|
||||
# `go mod tidy` must be a no-op on a well-maintained module. If it
|
||||
# changes go.mod/go.sum the PR left them out of sync — fail and show
|
||||
# the diff so the author can commit the tidied result.
|
||||
run: |
|
||||
go mod tidy
|
||||
git diff --exit-code go.mod go.sum
|
||||
|
||||
- name: Ensure base ref is available for lint
|
||||
# golangci-lint's new-from-merge-base needs origin/master present.
|
||||
run: git fetch --no-tags origin master
|
||||
|
||||
- name: golangci-lint
|
||||
# v7 is required for golangci-lint v2.
|
||||
uses: golangci/golangci-lint-action@v7
|
||||
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 '^$' ./...
|
||||
18
.golangci.yml
Normal file
18
.golangci.yml
Normal file
@ -0,0 +1,18 @@
|
||||
# golangci-lint v2 configuration.
|
||||
version: "2"
|
||||
|
||||
linters:
|
||||
# `standard` = errcheck, govet, ineffassign, staticcheck, unused.
|
||||
default: standard
|
||||
|
||||
formatters:
|
||||
enable:
|
||||
- gofmt
|
||||
|
||||
issues:
|
||||
# Only report issues introduced since the merge-base with the target branch.
|
||||
# The legacy kernel wrapper carries pre-existing findings (unchecked
|
||||
# `defer Close()`, dead helpers) and is slated to move (#108) / be removed
|
||||
# post-logos-delivery#3851 — gating it now would drown real signal. New code
|
||||
# (e.g. the messaging package) gets the full linter set.
|
||||
new-from-merge-base: origin/master
|
||||
@ -18,9 +18,9 @@ If you have `logos-delivery` checked out, point the build to it:
|
||||
|
||||
```bash
|
||||
# path to your existing logos-delivery clone
|
||||
export LMN_DIR=/absolute/path/to/logos-delivery
|
||||
export CGO_CFLAGS="-I${LMN_DIR}/library"
|
||||
export CGO_LDFLAGS="-L${LMN_DIR}/build -lwaku -Wl,-rpath,${LMN_DIR}/build"
|
||||
export LOGOS_DELIVERY_DIR=/absolute/path/to/logos-delivery
|
||||
export CGO_CFLAGS="-I${LOGOS_DELIVERY_DIR}/library"
|
||||
export CGO_LDFLAGS="-L${LOGOS_DELIVERY_DIR}/build -lwaku -Wl,-rpath,${LOGOS_DELIVERY_DIR}/build"
|
||||
|
||||
# compile all packages
|
||||
make -C waku build
|
||||
|
||||
2
go.mod
2
go.mod
@ -1,4 +1,4 @@
|
||||
module github.com/logos-messaging/logos-messaging-go-bindings
|
||||
module github.com/logos-messaging/logos-delivery-go-bindings
|
||||
|
||||
go 1.24.0
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@ import (
|
||||
"os"
|
||||
"runtime"
|
||||
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/utils"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/utils"
|
||||
)
|
||||
|
||||
var (
|
||||
|
||||
@ -75,4 +75,3 @@ func GetRSSKB() (uint64, error) {
|
||||
pageSize := os.Getpagesize()
|
||||
return (rssPages * uint64(pageSize)) / 1024, nil
|
||||
}
|
||||
|
||||
|
||||
@ -1,17 +1,17 @@
|
||||
# Makefile for Waku Go Bindings
|
||||
|
||||
# Path to logos-delivery submodule
|
||||
export LMN_DIR ?= $(shell pwd)/../vendor/logos-delivery
|
||||
export LOGOS_DELIVERY_DIR ?= $(shell pwd)/../vendor/logos-delivery
|
||||
|
||||
# Debugging output
|
||||
print-paths:
|
||||
@echo "LMN_DIR: $(LMN_DIR)"
|
||||
@echo "LOGOS_DELIVERY_DIR: $(LOGOS_DELIVERY_DIR)"
|
||||
@echo "HEADER_PATH: $(LIBWAKU_HEADER_PATH)"
|
||||
@echo "LIB_PATH: $(LIBWAKU_LIB_PATH)"
|
||||
|
||||
# Default paths for libwaku library and headers (can be overridden)
|
||||
export LIBWAKU_HEADER_PATH ?= $(LMN_DIR)/library
|
||||
export LIBWAKU_LIB_PATH ?= $(LMN_DIR)/build
|
||||
export LIBWAKU_HEADER_PATH ?= $(LOGOS_DELIVERY_DIR)/library
|
||||
export LIBWAKU_LIB_PATH ?= $(LOGOS_DELIVERY_DIR)/build
|
||||
|
||||
export CGO_CFLAGS := -I$(LIBWAKU_HEADER_PATH)/
|
||||
export CGO_LDFLAGS := -L$(LIBWAKU_LIB_PATH)/ -lwaku -Wl,-rpath,$(LIBWAKU_LIB_PATH)/
|
||||
|
||||
@ -3,7 +3,7 @@ package common
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/waku/pb"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/waku/pb"
|
||||
)
|
||||
|
||||
// Envelope contains information about the pubsub topic of a WakuMessage
|
||||
|
||||
@ -4,7 +4,7 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/waku/common"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/waku/common"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
@ -29,7 +29,7 @@ func TestBasicWakuNodes(t *testing.T) {
|
||||
Debug("TestBasicWakuNodes completed successfully")
|
||||
}
|
||||
|
||||
/* artifact https://github.com/logos-messaging/logos-messaging-go-bindings/issues/40 */
|
||||
/* artifact https://github.com/logos-messaging/logos-delivery-go-bindings/issues/40 */
|
||||
func TestNodeRestart(t *testing.T) {
|
||||
t.Skip("Skipping test for open artifact ")
|
||||
Debug("Starting TestNodeRestart")
|
||||
|
||||
@ -352,17 +352,17 @@ import (
|
||||
"time"
|
||||
"unsafe"
|
||||
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/waku/timesource"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/waku/timesource"
|
||||
|
||||
"github.com/ethereum/go-ethereum/crypto"
|
||||
"github.com/ethereum/go-ethereum/p2p/enode"
|
||||
"github.com/libp2p/go-libp2p/core/peer"
|
||||
libp2pproto "github.com/libp2p/go-libp2p/core/protocol"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/waku/pb"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/waku/utils"
|
||||
"github.com/multiformats/go-multiaddr"
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/waku/pb"
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/waku/utils"
|
||||
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/waku/common"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/waku/common"
|
||||
)
|
||||
|
||||
const requestTimeout = 30 * time.Second
|
||||
|
||||
@ -13,11 +13,11 @@ import (
|
||||
|
||||
"github.com/cenkalti/backoff/v3"
|
||||
"github.com/libp2p/go-libp2p/core/peer"
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/waku/common"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/waku/common"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/waku/pb"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/waku/store"
|
||||
ma "github.com/multiformats/go-multiaddr"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/waku/pb"
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/waku/store"
|
||||
)
|
||||
|
||||
// In order to run this test, you must run an nwaku node
|
||||
|
||||
@ -16,9 +16,9 @@ import (
|
||||
|
||||
"github.com/cenkalti/backoff/v3"
|
||||
"github.com/libp2p/go-libp2p/core/peer"
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/utils"
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/waku/common"
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/waku/pb"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/utils"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/waku/common"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/waku/pb"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/waku/common"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/waku/common"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
|
||||
@ -7,9 +7,9 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/cenkalti/backoff/v3"
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/waku/common"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/waku/common"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/waku/pb"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/waku/pb"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
|
||||
@ -6,10 +6,10 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/cenkalti/backoff/v3"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/waku/pb"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/waku/pb"
|
||||
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/waku/common"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/waku/common"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/waku/common"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/waku/common"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
// "go.uber.org/zap/zapcore"
|
||||
|
||||
@ -4,7 +4,7 @@ import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/logos-messaging/logos-messaging-go-bindings/waku/common"
|
||||
"github.com/logos-messaging/logos-delivery-go-bindings/waku/common"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
|
||||
@ -8,15 +8,15 @@ import (
|
||||
)
|
||||
|
||||
func GetRSSKB() (uint64, error) {
|
||||
var m runtime.MemStats
|
||||
runtime.ReadMemStats(&m)
|
||||
return m.Sys / 1024, nil
|
||||
var m runtime.MemStats
|
||||
runtime.ReadMemStats(&m)
|
||||
return m.Sys / 1024, nil
|
||||
}
|
||||
|
||||
func EncapsulatePeerID(p peer.ID, addrs ...multiaddr.Multiaddr) []multiaddr.Multiaddr {
|
||||
encapsulated := make([]multiaddr.Multiaddr, 0, len(addrs))
|
||||
for _, addr := range addrs {
|
||||
encapsulated = append(encapsulated, addr.Encapsulate(multiaddr.StringCast("/p2p/" + p.String())))
|
||||
encapsulated = append(encapsulated, addr.Encapsulate(multiaddr.StringCast("/p2p/"+p.String())))
|
||||
}
|
||||
return encapsulated
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user