Skip to content

ci: add GitHub Actions workflow (build gate + advisory vet/gofmt/race) - #38

Open
Dirtybird99 wants to merge 1 commit into
DEROFDN:community-devfrom
Dirtybird99:ci/add-github-actions
Open

ci: add GitHub Actions workflow (build gate + advisory vet/gofmt/race)#38
Dirtybird99 wants to merge 1 commit into
DEROFDN:community-devfrom
Dirtybird99:ci/add-github-actions

Conversation

@Dirtybird99

Copy link
Copy Markdown

What

Adds the repository's first CI workflow (.github/workflows/ci.yml). It runs on pushes to community-dev / community-mainnet / community-testnet / main and on all pull requests.

Two jobs:

  • build (blocking)go build ./.... This is green on the current tree, so it's safe to make a required status check and will catch compile breakage in future PRs.
  • quality (advisory)go vet ./..., a gofmt check over non-vendor sources, and go test -race ./walletapi/.... Every step is continue-on-error, so the check stays green while the pre-existing findings are burned down; the output still shows in the logs. Drop continue-on-error from a step once its debt reaches zero to promote it to a gate.

Why

The repo currently has no .github/workflows at all. A build gate alone would have caught the concurrent-map crash class discussed in #26, and the race step surfaces the walletapi data races filed as #33#37.

Verification done before opening this PR

Against community-dev @ 6f9bd2c:

Check Result
go build ./... (Windows, go 1.26) ✅ exit 0
GOOS=linux GOARCH=amd64 go build ./... (cross-compile; project has no cgo) ✅ exit 0
go vet ./... ❌ exit 1 (unreachable-code / unkeyed-struct warnings) — advisory
gofmt -l (non-vendor tracked .go) 260 files — advisory
go test -race ./walletapi/... ❌ real data race in sync_loop (daemon_communication.go:217) + xswd rate-limit test — advisory, tracked in #33/#34

So the blocking job is verified green on the Linux target; the three currently-red checks are intentionally advisory and each links to tracked debt.

Suggested adoption path

  1. Merge, then mark build as a required status check in branch protection for community-dev.
  2. Burn down the advisory findings (start with the races in walletapi: SyncHistory mutates EntriesNative without w.Lock() — reader RLocks do not exclude the writer #33walletapi: concurrent Reset on shared watchdog time.Timer #37), then flip each step to blocking by removing its continue-on-error.

Note

Because this is a first-time contribution, a maintainer may need to approve the workflow run before it executes on this PR. The workflow file itself is minimal and uses only actions/checkout and actions/setup-go.

The repository had no CI. This adds a minimal workflow that runs on pushes to
the community-* / main branches and on all pull requests.

- build (blocking): `go build ./...` — currently green, so it can serve as a
  required status check to catch compile breakage.
- quality (advisory): `go vet ./...`, a gofmt check over non-vendor sources, and
  `go test -race ./walletapi/...`. Each step is continue-on-error because the
  tree has pre-existing findings (data races tracked in the walletapi issues,
  plus vet/gofmt debt). They surface the signal in logs without blocking merges;
  drop continue-on-error on a step once its debt reaches zero.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Dirtybird99
Dirtybird99 force-pushed the ci/add-github-actions branch from 108edc5 to 7749589 Compare July 11, 2026 19:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant