Conversation
🛠 PR Checks Summary🔴 Changes related to gnoweb must be reviewed by its codeowners Manual Checks (for Reviewers):
Read More🤖 This bot helps streamline PR reviews by verifying automated checks and providing guidance for contributors and reviewers. ✅ Automated Checks (for Contributors):🟢 Maintainers must be able to edit this pull request (more info) ☑️ Contributor Actions:
☑️ Reviewer Actions:
📚 Resources:Debug
|
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
…g#5275) Please review this proposal for git tags.
Consolidates **37 → 29** workflow files by eliminating unnecessary abstraction layers, duplication, and establishing clear naming conventions with consistent prefixes. Prompted by @thehowl's [comment](gnolang#5420 (comment)): "There seems to be half a dozen release workflows already 😵" Every workflow file is prefixed by category: | Prefix | Purpose | Examples | |--------|---------|---------| | `_ci-` | Reusable workflow templates | `_ci-go.yml`, `_ci-gno.yml` | | `ci-dir-` | Per-directory test suites | `ci-dir-gnovm.yml`, `ci-dir-tm2.yml`, `ci-dir-examples.yml` | | `ci-` | Other CI checks | `ci-e2e.yml`, `ci-codegen-verify.yml`, `ci-bench-gnovm.yml` | | `deploy-` | Deployment workflows | `deploy-pages.yml`, `deploy-docs.yml` | | `meta-` | Repo automation, security scanning | `meta-bot.yml`, `meta-codeql.yml`, `meta-fossa.yml` | | `meta-gh-` | GitHub-native PR tools | `meta-gh-title.yml`, `meta-gh-labeler.yml`, `meta-gh-stale.yml` | | `release-` | Release/publish workflows | `release-goreleaser.yml`, `release-docker.yml`, `release-staging.yml` | Workflow `name:` fields use spaced paths (`ci / gnovm`, `meta / bot`, `release / docker`) so GitHub checks display as clean breadcrumbs with no duplication. **Template flattening (9 files → 2)** - `template_main.yml` → `template_lint.yml` → `template_build.yml` → `template_test.yml` (4-level chain) replaced by single **`_ci-go.yml`** - `template_gnofmt.yml` + `template_gnolint.yml` + `template_gnotest.yml` replaced by single **`_ci-gno.yml`** with toggle inputs **Release consolidation (3 files → 2)** - `releaser-master.yml` + `releaser-nightly.yml` (90% identical) merged into **`release-goreleaser.yml`** with conditional args - `chain_docker_build.yml` → **`release-docker.yml`** **Verification consolidation (3 files → 1)** - `mod-tidy.yml` + `genproto.yml` + `docs-generate.yml` merged into **`ci-codegen-verify.yml`** **Bug fix: examples.yml** - Old workflow called `_ci-go.yml` (lint+build+test) but `examples/` has no `go.mod` - Now inlines the generate check directly **Simplifications** - Removed single-value matrices (added complexity for no reason) - Removed `strategy: fail-fast: false` from jobs without matrices - Switched from hardcoded `"1.24.x"` to `go-version-file: go.mod` where possible - Cleaned up `meta-codeql.yml` boilerplate (94 → 30 lines) - Fixed checkout ordering (checkout before setup-go when using `go-version-file`) | Before | After | |--------|-------| | `template_main.yml` | _deleted, flattened into `_ci-go.yml`_ | | `template_lint.yml` | _deleted_ | | `template_build.yml` | _deleted_ | | `template_test.yml` | _deleted_ | | `template_gnofmt.yml` | _deleted, flattened into `_ci-gno.yml`_ | | `template_gnolint.yml` | _deleted_ | | `template_gnotest.yml` | _deleted_ | | `releaser-master.yml` | _deleted, merged into `release-goreleaser.yml`_ | | `releaser-nightly.yml` | _deleted_ | | `mod-tidy.yml` | _deleted, merged into `ci-codegen-verify.yml`_ | | `genproto.yml` | _deleted, merged into `ci-codegen-verify.yml`_ | | `docs-generate.yml` | _deleted, merged into `ci-codegen-verify.yml`_ | | `gnovm.yml` | `ci-dir-gnovm.yml` | | `tm2.yml` | `ci-dir-tm2.yml` | | `gnoland.yml` | `ci-dir-gnoland.yml` | | `misc.yml` | `ci-dir-misc.yml` | | `contribs.yml` | `ci-dir-contribs.yml` | | `examples.yml` | `ci-dir-examples.yml` | | `e2e.yml` | `ci-e2e.yml` | | `genesis-verify.yml` | `ci-genesis-verify.yml` | | `gnovm-benchops.yml` | `ci-bench-gnovm.yml` | | `benchmark-master-push.yml` | `release-bench-history.yml` | | `chain_docker_build.yml` | `release-docker.yml` | | `staging.yml` | `release-staging.yml` | | `docs-deploy.yml` | `deploy-docs.yml` | | `gh-pages.yml` | `deploy-pages.yml` | | `bot.yml` | `meta-bot.yml` | | `bot-proxy.yml` | `meta-bot-proxy.yml` | | `codeql.yml` | `meta-codeql.yml` | | `fossa.yml` | `meta-fossa.yml` | | `dependabot-tidy.yml` | `meta-dependabot-tidy.yml` | | `dependabot-validate.yml` | `meta-dependabot-validate.yml` | | `examples-bot.yml` | `meta-discord-bot.yml` | | `auto-author-assign.yml` | `meta-gh-assign.yml` | | `labeler.yml` | `meta-gh-labeler.yml` | | `stale-bot.yml` | `meta-gh-stale.yml` | | `lint-pr-title.yml` | `meta-gh-title.yml` | **Internal reference updates** - `meta-bot-proxy.yml`: updated `workflows:` and `gh workflow run` to match new names - `release-staging.yml`: updated self-reference in path trigger - `ci-genesis-verify.yml`: updated self-reference in path trigger - `github-bot` config: `releaser.*\.yml` → `release.*\.yml`, `staging\.yml` → `release-staging.yml` | | Before | After | |--|--------|-------| | Workflow files | 37 | 29 | | Reusable templates | 7 files, 4-level nesting | 2 files, max 1 level | | Release workflows | 2 near-identical + confusingly named | 1 unified + 1 docker + staging | | Verification workflows | 3 separate files | 1 merged file | | Naming convention | none | 7 consistent prefixes | | Check name format | `contribs / ci/go/contribs (bot) / build` | `ci / contribs / github-bot / build` | ``` _ci-gno.yml # reusable: gno fmt + lint + test _ci-go.yml # reusable: go lint + build + test ci-bench-gnovm.yml # GnoVM micro benchmarks (artifacts) ci-codegen-verify.yml # merged: mod-tidy + genproto + docs-generate ci-dir-contribs.yml ci-dir-examples.yml ci-dir-gnoland.yml ci-dir-gnovm.yml ci-dir-misc.yml ci-dir-tm2.yml ci-e2e.yml ci-genesis-verify.yml deploy-docs.yml deploy-pages.yml meta-bot-proxy.yml meta-bot.yml meta-codeql.yml meta-dependabot-tidy.yml meta-dependabot-validate.yml meta-discord-bot.yml meta-fossa.yml meta-gh-assign.yml meta-gh-labeler.yml meta-gh-stale.yml meta-gh-title.yml release-bench-history.yml # publishes to gh-benchmarks branch release-docker.yml release-goreleaser.yml # merged: master + nightly releases release-staging.yml ``` --------- Co-authored-by: Jerónimo Albi <894299+jeronimoalbi@users.noreply.github.com>
## Summary - Reverts FOSSA to `workflow_dispatch` only, matching the original intent from Nov 2024 (accidentally undone by gnolang#3316) - Removes `fossa test` step which fails with push-only API key The `push` and `pull_request_target` triggers were accidentally re-introduced in Dec 2024. FOSSA scanning is intended to run on-demand only ("when legal requests it"). The `fossa test` step has been failing because the `FOSSA_API_KEY` is push-only and cannot read compliance results. Follow-up to gnolang#5423. ## Test plan - [x] Verify `meta-fossa.yml` no longer triggers on push/PR - [x] Manually trigger workflow_dispatch to confirm `fossa analyze` still works
|
Hello @notJoon . The CI check for gnoland/main fails with "panic: txDispatcher subscription unexpectedly closed". I ran this PR branch with |
|
This dependabot PR tries to use go1.25, and one of the workflow tools requires go >= 1.25.5. In general, shouldn't we use the latest version with recent security fixes? This is |
jefft0
left a comment
There was a problem hiding this comment.
Builds on my local macOS. CI checks pass.
…olangci-lint-version # Conflicts: # tm2/pkg/libtm/go.mod
Description
Bump Go from 1.24 to 1.25.9 and golangci-lint from v2.3 to v2.11 across the entire monorepo.
Changes
Go 1.25.9 upgrade
go.modin all 21 modules (root,contribs/*,misc/*,tm2/pkg/libtm,gno.land/pkg/gnoweb/tools)toolchaindirectives (unnecessary with Go 1.25.9).github/workflows/*.yml) from1.24.xto1.25.xgolang:1.25-alpineGnoVM adjustments for Go 1.25
gnovm/pkg/gnolang/string_methods.goviastringer— Go 1.25 changed the bounds-check pattern fromif i >= Kind(len(...))toidx := int(i) - 0; if i < 0 || idx >= len(...).gnofiles where Go 1.25's type checker changed error message wording:"invalid operation: cannot slice ... (value not addressable)"→"cannot slice unaddressable value ...""cannot call non-function X (variable of type T)"→"cannot call X (variable of type T): T is not a function""cannot make int; type must be"→"cannot make int: type must be"(semicolon → colon)//nolint:staticchecktognovm/pkg/doc/json_doc.goforast.MergePackageFiles, which was deprecated in Go 1.25 with no direct replacement availablegolangci-lint v2.11 config changes (
.github/golangci.yml)Disabled
prealloclinterv2.11 significantly increased false positives for the
prealloclinter. It now flags cases like[]string{}inside loops where preallocation is impractical or the capacity is unknowable at declaration time. Rather than adding//nolint:preallocacross dozens of files, the linter was disabled entirely — the signal-to-noise ratio no longer justifies the maintenance overhead.Added gosec excludes: G122, G602, G703, G704, G705
golangci-lint v2.11 ships with gosec's new taint-analysis rules enabled by default. These rules track data flow from "sources" (e.g.,
http.Request,os.Args) through to "sinks" (e.g.,os.Open,http.Redirect,template.HTML). In this codebase, they produce a high volume of false positives:filepath.Walk/WalkDircallbacks with no practical mitigation available.Added staticcheck exclude:
-QF1012Suppresses quick-fix suggestions to replace
WriteString(fmt.Sprintf(...))withfmt.Fprintf(...). This is a style preference, not a correctness issue. Stale//nolint:staticcheckcomments intm2/pkg/iavl/internal/bytes/bytes.gothat were previously suppressing this rule were also removed.