Skip to content

Commit c0b3a8d

Browse files
authored
Merge pull request #1202 from CosmosContracts/jakehartnell/v30
v30
2 parents 16223a9 + 43f427d commit c0b3a8d

562 files changed

Lines changed: 71055 additions & 66335 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.codespellrc

Lines changed: 0 additions & 4 deletions
This file was deleted.

.github/codeql/codeql-config.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,23 @@ paths:
22
- "."
33
paths-ignore:
44
- "api/**"
5+
# Auto-generated protobuf code — alerts here cannot be fixed in-tree
6+
# (regenerated by `make proto-gen` from .proto sources).
7+
- "**/*.pb.go"
8+
- "**/*.pb.gw.go"
9+
- "**/*_grpc.pb.go"
10+
# Non-consensus runtime layers. The cosmos-sdk-codeql pack's
11+
# non-determinism rules (map-iteration, clock-use) are tuned for
12+
# state-machine code; the CLI builders, websocket handlers, and
13+
# in-memory subscription cache below sit outside the consensus
14+
# boundary and intentionally use wall-clock timeouts and
15+
# unordered fan-out.
16+
- "cmd/junod/cmd/stream/**"
17+
- "app/endpoints/websocket/**"
18+
- "x/stream/keeper/query_server.go"
19+
- "x/stream/types/dispatcher.go"
20+
- "x/stream/types/listener.go"
21+
- "x/stream/types/stream.go"
22+
- "x/stream/types/subscription_registry.go"
23+
- "x/stream/types/log_sanitize.go"
24+
- "x/stream/types/encoding/**"

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ concurrency:
1212
cancel-in-progress: true
1313

1414
env:
15-
GO_VERSION: 1.23.9
15+
GO_VERSION: 1.25.2
1616

1717
jobs:
1818
build:

.github/workflows/codeql.yml

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ concurrency:
1818
cancel-in-progress: true
1919

2020
env:
21-
GO_VERSION: 1.23.9
21+
GO_VERSION: 1.25.2
2222

2323
jobs:
2424
analyze:
@@ -47,5 +47,51 @@ jobs:
4747
- name: Build
4848
run: make build
4949

50+
# `paths-ignore` in codeql-config.yml suppresses alerts in the security
51+
# tab but is not honored by the GitHub Advanced Security PR-decoration
52+
# check — the PR check diffs the raw SARIF against the base ref, so
53+
# alerts in ignored files still surface as "new alerts in code changed
54+
# by this PR". Split analyze + upload so we can rewrite the SARIF in
55+
# between with the same path patterns.
5056
- name: Perform CodeQL Analysis
5157
uses: github/codeql-action/analyze@v3
58+
with:
59+
upload: false
60+
output: sarif-results
61+
category: "/language:go"
62+
63+
- name: Filter SARIF
64+
uses: advanced-security/filter-sarif@v1
65+
with:
66+
# File-level drops: auto-generated code (api/**, *.pb.go,
67+
# *_grpc.pb.go) and off-chain runtime layers (CLI builders,
68+
# websocket handlers, the x/stream subscription/dispatch/
69+
# listener machinery). Per-rule drops: the two intentional
70+
# non-consensus goroutines — App.Close()'s shutdown timeout
71+
# and newApp()'s SIGINT/SIGTERM handler — which sit in files
72+
# that otherwise contain consensus wiring and should keep
73+
# full scanning for everything else.
74+
patterns: |
75+
-api/**
76+
-**/*.pb.go
77+
-**/*.pb.gw.go
78+
-**/*_grpc.pb.go
79+
-cmd/junod/cmd/stream/**
80+
-app/endpoints/websocket/**
81+
-x/stream/keeper/query_server.go
82+
-x/stream/types/dispatcher.go
83+
-x/stream/types/listener.go
84+
-x/stream/types/stream.go
85+
-x/stream/types/subscription_registry.go
86+
-x/stream/types/log_sanitize.go
87+
-x/stream/types/encoding/**
88+
-app/app.go:crypto-com/cosmos-sdk-codeql/goroutine
89+
-cmd/junod/cmd/commands.go:crypto-com/cosmos-sdk-codeql/goroutine
90+
input: sarif-results/go.sarif
91+
output: sarif-results/go.sarif
92+
93+
- name: Upload SARIF
94+
uses: github/codeql-action/upload-sarif@v3
95+
with:
96+
sarif_file: sarif-results/go.sarif
97+
category: "/language:go"

.github/workflows/golangci-lint.yml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ concurrency:
1717
cancel-in-progress: true
1818

1919
env:
20-
GO_VERSION: 1.23.9
20+
GO_VERSION: 1.25.2
2121

2222
jobs:
2323
golangci:
@@ -28,7 +28,10 @@ jobs:
2828
- uses: actions/setup-go@v5
2929
with:
3030
go-version: ${{ env.GO_VERSION }}
31-
- name: golangci-lint-junod
32-
uses: golangci/golangci-lint-action@v8
33-
with:
34-
version: v2.1.6
31+
# Use `make lint` (which invokes `go tool golangci-lint`) so the
32+
# linter is compiled with our Go 1.25 toolchain and matches the
33+
# version pinned in go.mod (v2.5.0). The standalone
34+
# golangci-lint-action ships pre-built binaries that lag the Go
35+
# release cycle and break on go.mod files declaring 1.25+.
36+
- name: lint
37+
run: make lint

.github/workflows/interchaintest-E2E.yml

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ permissions:
1414
packages: write
1515

1616
env:
17-
GO_VERSION: 1.23.9
17+
GO_VERSION: 1.25.2
1818
TAR_PATH: /tmp/juno-docker-image.tar
1919
IMAGE_NAME: juno-docker-image
2020

@@ -42,7 +42,12 @@ jobs:
4242
uses: docker/build-push-action@v6
4343
with:
4444
context: .
45-
tags: juno:local
45+
# Tag must match the repo string in
46+
# interchaintest/suite/ci_integration.go's GetDockerImageInfo
47+
# (and the IMAGE var in the root Makefile's local-image target),
48+
# otherwise the e2e jobs will try to pull from registry and
49+
# hit "manifest unknown."
50+
tags: ghcr.io/cosmoscontracts/juno:local
4651
outputs: type=docker,dest=${{ env.TAR_PATH }}
4752

4853
- name: Upload artifact
@@ -57,23 +62,22 @@ jobs:
5762
strategy:
5863
matrix:
5964
# names of `make` commands to run tests
65+
# Must match the ictest-* targets in the root Makefile.
6066
test:
6167
- "ictest-basic"
62-
- "ictest-statesync"
63-
- "ictest-ibchooks"
64-
- "ictest-tokenfactory"
65-
- "ictest-feeshare"
68+
- "ictest-burn"
69+
- "ictest-cw"
70+
- "ictest-drip"
71+
- "ictest-feemarket"
72+
- "ictest-fees"
73+
- "ictest-fixes"
74+
- "ictest-ibc"
75+
- "ictest-ibc-hooks"
76+
- "ictest-node"
6677
- "ictest-pfm"
67-
- "ictest-globalfee"
78+
- "ictest-tokenfactory"
6879
- "ictest-upgrade"
69-
- "ictest-ibc"
70-
- "ictest-unity-deploy"
71-
- "ictest-drip"
72-
- "ictest-feepay"
73-
- "ictest-burn"
74-
- "ictest-cwhooks"
75-
- "ictest-clock"
76-
- "ictest-gov-fix"
80+
- "ictest-dao-dao"
7781
fail-fast: false
7882

7983
steps:

.github/workflows/push-docker-images.yml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,6 @@
88
# cosmoscontracts/juno:X # is updated to X.Y.Z
99
# cosmoscontracts/juno:latest # is updated to X.Y.Z
1010
#
11-
# cosmoscontracts/juno-e2e:vX.Y.Z # is pushed
12-
# cosmoscontracts/juno-e2e:X.Y.Z # is pushed
13-
# cosmoscontracts/juno-e2e:X.Y # is updated to X.Y.Z
14-
# cosmoscontracts/juno-e2e:X # is updated to X.Y.Z
15-
# cosmoscontracts/juno-e2e:latest # is updated to X.Y.Z
16-
#
1711
# All the images above have support for linux/amd64 and linux/arm64.
1812
#
1913
# Due to QEMU virtualization used to build multi-platform docker images

.github/workflows/release-dispatch.yml

Lines changed: 94 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -3,59 +3,113 @@ name: Dispatch Release to juno-std
33
on:
44
release:
55
types: [released]
6-
push:
7-
tags:
8-
- 'v[0-9]+.[0-9]+.[0-9]+'
9-
106
env:
117
JUNO_REPO: "https://github.com/CosmosContracts/juno.git"
12-
JUNO_DIR: "../dependencies/juno/"
8+
JUNO_DIR: "proto"
139
COSMOS_SDK_REPO: "https://github.com/cosmos/cosmos-sdk.git"
14-
COSMOS_SDK_REV: "v0.50.13"
15-
COSMOS_SDK_DIR: "../dependencies/cosmos-sdk/"
10+
COSMOS_SDK_REV: "v0.53.4"
11+
COSMOS_SDK_DIR: "proto"
1612
WASMD_REPO: "https://github.com/CosmWasm/wasmd.git"
17-
WASMD_REV: "v0.54.0"
18-
WASMD_DIR: "../dependencies/wasmd/"
13+
WASMD_REV: "v0.54.2"
14+
WASMD_DIR: "proto"
1915
COMETBFT_REPO: "https://github.com/cometbft/cometbft.git"
20-
COMETBFT_REV: "v0.38.17"
21-
COMETBFT_DIR: "../dependencies/cometbft/"
16+
COMETBFT_REV: "v0.38.19"
17+
COMETBFT_DIR: "proto"
2218
IBC_GO_REPO: "https://github.com/cosmos/ibc-go.git"
2319
IBC_GO_REV: "v8.7.0"
24-
IBC_GO_DIR: "../dependencies/ibc-go/"
20+
IBC_GO_DIR: "proto"
2521
ICS23_REPO: "https://github.com/cosmos/ics23.git"
2622
ICS23_REV: "go/v0.11.0"
27-
ICS23_DIR: "../dependencies/ics23/"
23+
ICS23_DIR: "proto"
2824

2925
jobs:
3026
dispatch:
3127
runs-on: ubuntu-latest
3228
steps:
33-
- name: Build repo_config JSON
34-
id: build_repo_config
35-
env:
36-
GITHUB_EVENT_RELEASE_TAG: ${{ github.event.release.tag_name }}
37-
run: |
38-
printf '[\n {"name": "juno", "repo": "%s", "rev": "%s", "dir": "%s", "exclude_mods": [], "is_main": true},\n {"name": "cosmos-sdk", "repo": "%s", "rev": "%s", "dir": "%s", "exclude_mods": ["reflection", "autocli"], "is_main": false},\n {"name": "wasmd", "repo": "%s", "rev": "%s", "dir": "%s", "exclude_mods": [], "is_main": false},\n {"name": "cometbft", "repo": "%s", "rev": "%s", "dir": "%s", "exclude_mods": [], "is_main": false},\n {"name": "ibc-go", "repo": "%s", "rev": "%s", "dir": "%s", "exclude_mods": [], "is_main": false},\n {"name": "ics23", "repo": "%s", "rev": "%s", "dir": "%s", "exclude_mods": [], "is_main": false}\n]\n' \
39-
"$JUNO_REPO" "$GITHUB_EVENT_RELEASE_TAG" "$JUNO_DIR" \
40-
"$COSMOS_SDK_REPO" "$COSMOS_SDK_REV" "$COSMOS_SDK_DIR" \
41-
"$WASMD_REPO" "$WASMD_REV" "$WASMD_DIR" \
42-
"$COMETBFT_REPO" "$COMETBFT_REV" "$COMETBFT_DIR" \
43-
"$IBC_GO_REPO" "$IBC_GO_REV" "$IBC_GO_DIR" \
44-
"$ICS23_REPO" "$ICS23_REV" "$ICS23_DIR" > repo_config.json
45-
cat repo_config.json
46-
echo "json=$(cat repo_config.json)" >> $GITHUB_OUTPUT
47-
shell: bash
48-
49-
- name: Dispatch release event with repo_config
50-
uses: peter-evans/repository-dispatch@v3
29+
- name: Dispatch release event
30+
uses: actions/github-script@v8
5131
with:
52-
token: ${{ secrets.DISPATCH_TOKEN }}
53-
repository: CosmosContracts/juno-std
54-
event-type: juno-release
55-
client-payload: |
56-
{
57-
"is_draft": "${{ github.event.release.draft }}",
58-
"is_prerelease": "${{ github.event.release.prerelease }}",
59-
"release_tag": "${{ github.event.release.tag_name }}",
60-
"repo_config": "${{ steps.build_repo_config.outputs.json }}"
32+
github-token: ${{ secrets.DISPATCH_TOKEN }}
33+
script: |
34+
const { context, core, github } = require('@actions/github-script');
35+
36+
// Resolve target repository (owner/repo) from env
37+
const repoStr = "CosmosContracts/juno-std";
38+
if (!repoStr.includes('/')) {
39+
core.setFailed(`Invalid repository: '${repoStr}'`);
40+
return;
41+
}
42+
const [targetOwner, targetRepo] = "CosmosContracts/juno-std".split('/', 2);
43+
44+
// Determine release_tag and flags based on event type or manual inputs
45+
const inputs = (context.payload && context.payload.inputs) || {};
46+
const releaseTag = inputs.release_tag || '';
47+
const isDraft = String(inputs.is_draft || '').toLowerCase() === 'true';
48+
const isPrerelease = String(inputs.is_prerelease || '').toLowerCase() === 'true';
49+
50+
if (!releaseTag) {
51+
core.setFailed('Unable to determine release_tag');
52+
return;
6153
}
54+
55+
// Build 'repos' as a structured JSON object keyed by name
56+
const repos = {
57+
juno: {
58+
name: 'juno',
59+
repo: process.env.JUNO_REPO,
60+
rev: releaseTag,
61+
dir: process.env.JUNO_DIR,
62+
exclude_mods: [],
63+
},
64+
cosmos_sdk: {
65+
name: 'cosmos',
66+
repo: process.env.COSMOS_SDK_REPO,
67+
rev: process.env.COSMOS_SDK_REV,
68+
dir: process.env.COSMOS_SDK_DIR,
69+
exclude_mods: ['cosmos/benchmark', 'cosmos/counter', 'cosmos/epochs', 'cosmos/protocolpool],
70+
},
71+
wasmd: {
72+
name: 'wasm',
73+
repo: process.env.WASMD_REPO,
74+
rev: process.env.WASMD_REV,
75+
dir: process.env.WASMD_DIR,
76+
exclude_mods: [],
77+
},
78+
cometbft: {
79+
name: 'cometbft',
80+
repo: process.env.COMETBFT_REPO,
81+
rev: process.env.COMETBFT_REV,
82+
dir: process.env.COMETBFT_DIR,
83+
exclude_mods: [],
84+
},
85+
ibc_go: {
86+
name: 'ibc-go',
87+
repo: process.env.IBC_GO_REPO,
88+
rev: process.env.IBC_GO_REV,
89+
dir: process.env.IBC_GO_DIR,
90+
exclude_mods: [],
91+
},
92+
ics23: {
93+
name: 'ics23',
94+
repo: process.env.ICS23_REPO,
95+
rev: process.env.ICS23_REV,
96+
dir: process.env.ICS23_DIR,
97+
exclude_mods: [],
98+
},
99+
};
100+
101+
const payload = {
102+
is_draft: isDraft,
103+
is_prerelease: isPrerelease,
104+
release_tag: releaseTag,
105+
repos,
106+
};
107+
108+
core.info(`Dispatching to ${targetOwner}/${targetRepo} with payload: ${JSON.stringify(payload)}`);
109+
await github.rest.repos.createDispatchEvent({
110+
owner: targetOwner,
111+
repo: targetRepo,
112+
event_type: "juno-release",
113+
client_payload: payload,
114+
});
115+
core.info('Repository dispatch event sent successfully.');

.github/workflows/spell-check-ignore.txt

Lines changed: 0 additions & 3 deletions
This file was deleted.

.github/workflows/spell-check.yml

Lines changed: 0 additions & 24 deletions
This file was deleted.

0 commit comments

Comments
 (0)