Skip to content

Commit 68a894f

Browse files
authored
chore: update to base reth 0.3.0 (#932)
1 parent 863c9bd commit 68a894f

File tree

5 files changed

+186
-10
lines changed

5 files changed

+186
-10
lines changed

dependency_updater/dependency_updater.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,9 +185,10 @@ func getVersionAndCommit(ctx context.Context, client *github.Client, dependencie
185185
currentTag := dependencies[dependencyType].Tag
186186
tagPrefix := dependencies[dependencyType].TagPrefix
187187

188-
if dependencies[dependencyType].Tracking == "tag" {
188+
if dependencies[dependencyType].Tracking == "tag" || dependencies[dependencyType].Tracking == "release" {
189189
// Collect all valid tags across all pages, then find the max version
190190
var validTags []*github.RepositoryTag
191+
trackingMode := dependencies[dependencyType].Tracking
191192

192193
for {
193194
tags, resp, err := client.Repositories.ListTags(
@@ -206,6 +207,19 @@ func getVersionAndCommit(ctx context.Context, client *github.Client, dependencie
206207
continue
207208
}
208209

210+
// Filter based on tracking mode:
211+
// - "release": only stable releases (no prerelease suffix)
212+
// - "tag": releases and RC versions only (exclude -synctest, -alpha, etc.)
213+
if trackingMode == "release" {
214+
if !IsReleaseVersion(*tag.Name, tagPrefix) {
215+
continue
216+
}
217+
} else if trackingMode == "tag" {
218+
if !IsReleaseOrRCVersion(*tag.Name, tagPrefix) {
219+
continue
220+
}
221+
}
222+
209223
// Check if this is a valid upgrade (not a downgrade)
210224
if err := ValidateVersionUpgrade(currentTag, *tag.Name, tagPrefix); err != nil {
211225
continue

dependency_updater/version.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ import (
1111
// rcPattern matches various RC formats: -rc1, -rc.1, -rc-1, -RC1, etc.
1212
var rcPattern = regexp.MustCompile(`(?i)-rc[.-]?(\d+)`)
1313

14+
// rcOnlyPattern is used to check if a version contains ONLY an RC prerelease (not -synctest, -alpha, etc.)
15+
var rcOnlyPattern = regexp.MustCompile(`(?i)^-rc[.-]?\d+$`)
16+
1417
// ParseVersion extracts and normalizes a semantic version from a tag string.
1518
// It handles tagPrefix stripping, v-prefix normalization, and RC format normalization.
1619
func ParseVersion(tag string, tagPrefix string) (*semver.Version, error) {
@@ -90,3 +93,44 @@ func CompareVersions(v1Tag, v2Tag, tagPrefix string) (int, error) {
9093
}
9194
return v1.Compare(v2), nil
9295
}
96+
97+
// IsReleaseVersion returns true if the tag is a stable release (no prerelease suffix).
98+
// Examples:
99+
// - "v1.0.0" -> true
100+
// - "v1.0.0-rc1" -> false
101+
// - "v1.0.0-synctest.0" -> false
102+
func IsReleaseVersion(tag string, tagPrefix string) bool {
103+
v, err := ParseVersion(tag, tagPrefix)
104+
if err != nil {
105+
return false
106+
}
107+
return v.Prerelease() == ""
108+
}
109+
110+
// IsRCVersion returns true if the tag is a release candidate version.
111+
// This matches versions with -rc, -rc.N, -rc-N, -rcN suffixes.
112+
// Examples:
113+
// - "v1.0.0-rc1" -> true
114+
// - "v1.0.0-rc.2" -> true
115+
// - "v1.0.0" -> false (stable release, not RC)
116+
// - "v1.0.0-synctest.0" -> false (not an RC)
117+
// - "v1.0.0-alpha" -> false (not an RC)
118+
func IsRCVersion(tag string, tagPrefix string) bool {
119+
v, err := ParseVersion(tag, tagPrefix)
120+
if err != nil {
121+
return false
122+
}
123+
prerelease := v.Prerelease()
124+
if prerelease == "" {
125+
return false
126+
}
127+
// Check if the prerelease is ONLY an RC format (e.g., "rc.1", "rc1", "rc-1")
128+
// We need to check the original format before normalization
129+
return rcOnlyPattern.MatchString("-" + prerelease)
130+
}
131+
132+
// IsReleaseOrRCVersion returns true if the tag is either a stable release or an RC version.
133+
// This excludes other prereleases like -alpha, -beta, -synctest, etc.
134+
func IsReleaseOrRCVersion(tag string, tagPrefix string) bool {
135+
return IsReleaseVersion(tag, tagPrefix) || IsRCVersion(tag, tagPrefix)
136+
}

dependency_updater/version_test.go

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,124 @@ func TestCompareVersions(t *testing.T) {
152152
}
153153
}
154154

155+
func TestIsReleaseVersion(t *testing.T) {
156+
tests := []struct {
157+
tag string
158+
tagPrefix string
159+
want bool
160+
}{
161+
// Stable releases
162+
{"v1.0.0", "", true},
163+
{"v0.2.2", "", true},
164+
{"1.35.3", "", true}, // nethermind style
165+
{"v1.101603.5", "", true}, // op-geth style
166+
167+
// With prefix
168+
{"op-node/v1.16.2", "op-node", true},
169+
170+
// Pre-release versions (should return false)
171+
{"v1.0.0-rc1", "", false},
172+
{"v1.0.0-rc.1", "", false},
173+
{"v1.0.0-rc-1", "", false},
174+
{"v1.0.0-synctest.0", "", false},
175+
{"v1.0.0-alpha", "", false},
176+
{"v1.0.0-beta.1", "", false},
177+
{"op-node/v1.16.6-synctest.0", "op-node", false},
178+
{"op-node/v1.16.3-rc1", "op-node", false},
179+
180+
// Invalid versions (should return false)
181+
{"not-a-version", "", false},
182+
{"", "", false},
183+
}
184+
185+
for _, tt := range tests {
186+
t.Run(tt.tag, func(t *testing.T) {
187+
got := IsReleaseVersion(tt.tag, tt.tagPrefix)
188+
if got != tt.want {
189+
t.Errorf("IsReleaseVersion(%q, %q) = %v, want %v", tt.tag, tt.tagPrefix, got, tt.want)
190+
}
191+
})
192+
}
193+
}
194+
195+
func TestIsRCVersion(t *testing.T) {
196+
tests := []struct {
197+
tag string
198+
tagPrefix string
199+
want bool
200+
}{
201+
// RC versions
202+
{"v1.0.0-rc1", "", true},
203+
{"v1.0.0-rc.1", "", true},
204+
{"v1.0.0-rc-1", "", true},
205+
{"v1.0.0-RC1", "", true},
206+
{"v1.0.0-rc12", "", true},
207+
{"op-node/v1.16.3-rc1", "op-node", true},
208+
{"op-node/v1.16.3-rc.2", "op-node", true},
209+
210+
// Stable releases (not RC)
211+
{"v1.0.0", "", false},
212+
{"v0.2.2", "", false},
213+
{"op-node/v1.16.2", "op-node", false},
214+
215+
// Other pre-release versions (not RC)
216+
{"v1.0.0-synctest.0", "", false},
217+
{"op-node/v1.16.6-synctest.0", "op-node", false},
218+
{"v1.0.0-alpha", "", false},
219+
{"v1.0.0-beta.1", "", false},
220+
{"v1.0.0-alpha.rc1", "", false}, // rc is part of another prerelease
221+
222+
// Invalid versions
223+
{"not-a-version", "", false},
224+
{"", "", false},
225+
}
226+
227+
for _, tt := range tests {
228+
t.Run(tt.tag, func(t *testing.T) {
229+
got := IsRCVersion(tt.tag, tt.tagPrefix)
230+
if got != tt.want {
231+
t.Errorf("IsRCVersion(%q, %q) = %v, want %v", tt.tag, tt.tagPrefix, got, tt.want)
232+
}
233+
})
234+
}
235+
}
236+
237+
func TestIsReleaseOrRCVersion(t *testing.T) {
238+
tests := []struct {
239+
tag string
240+
tagPrefix string
241+
want bool
242+
}{
243+
// Stable releases - should pass
244+
{"v1.0.0", "", true},
245+
{"v0.2.2", "", true},
246+
{"op-node/v1.16.2", "op-node", true},
247+
248+
// RC versions - should pass
249+
{"v1.0.0-rc1", "", true},
250+
{"v1.0.0-rc.1", "", true},
251+
{"op-node/v1.16.3-rc1", "op-node", true},
252+
253+
// Other pre-release versions - should NOT pass
254+
{"v1.0.0-synctest.0", "", false},
255+
{"op-node/v1.16.6-synctest.0", "op-node", false},
256+
{"v1.0.0-alpha", "", false},
257+
{"v1.0.0-beta.1", "", false},
258+
259+
// Invalid versions
260+
{"not-a-version", "", false},
261+
}
262+
263+
for _, tt := range tests {
264+
t.Run(tt.tag, func(t *testing.T) {
265+
got := IsReleaseOrRCVersion(tt.tag, tt.tagPrefix)
266+
if got != tt.want {
267+
t.Errorf("IsReleaseOrRCVersion(%q, %q) = %v, want %v", tt.tag, tt.tagPrefix, got, tt.want)
268+
}
269+
})
270+
}
271+
}
272+
155273
func TestRCVersionOrdering(t *testing.T) {
156274
// Verify that RC versions are ordered correctly
157275
versions := []string{

versions.env

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
export BASE_RETH_NODE_COMMIT=4a580faec0b560eb65d6ee2f620efb7b044a649d
1+
export BASE_RETH_NODE_COMMIT=bb1b4571bebb8a9cd8ff1ec8758001fdc32758e8
22
export BASE_RETH_NODE_REPO=https://github.com/base/base.git
3-
export BASE_RETH_NODE_TAG=v0.2.2
3+
export BASE_RETH_NODE_TAG=v0.3.0
44
export NETHERMIND_COMMIT=d9febbce240491e8f918d41a4ffd06385a746b6c
55
export NETHERMIND_REPO=https://github.com/NethermindEth/nethermind.git
66
export NETHERMIND_TAG=1.35.3

versions.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,38 @@
11
{
22
"base_reth_node": {
3-
"tag": "v0.2.2",
4-
"commit": "4a580faec0b560eb65d6ee2f620efb7b044a649d",
3+
"tag": "v0.3.0",
4+
"commit": "bb1b4571bebb8a9cd8ff1ec8758001fdc32758e8",
55
"owner": "base",
66
"repo": "base",
7-
"tracking": "tag"
7+
"tracking": "release"
88
},
99
"nethermind": {
1010
"tag": "1.35.3",
1111
"commit": "d9febbce240491e8f918d41a4ffd06385a746b6c",
1212
"owner": "NethermindEth",
1313
"repo": "nethermind",
14-
"tracking": "tag"
14+
"tracking": "release"
1515
},
1616
"op_geth": {
1717
"tag": "v1.101603.5",
1818
"commit": "904a088c5cc1eeec21a1ffa47327dc20a809e642",
1919
"owner": "ethereum-optimism",
2020
"repo": "op-geth",
21-
"tracking": "tag"
21+
"tracking": "release"
2222
},
2323
"op_node": {
2424
"tag": "op-node/v1.16.2",
2525
"commit": "1b8c541060f0d323a7023fbc68fbbc8daf674340",
2626
"tagPrefix": "op-node",
2727
"owner": "ethereum-optimism",
2828
"repo": "optimism",
29-
"tracking": "tag"
29+
"tracking": "release"
3030
},
3131
"op_reth": {
3232
"tag": "v1.9.3",
3333
"commit": "27a8c0f5a6dfb27dea84c5751776ecabdd069646",
3434
"owner": "paradigmxyz",
3535
"repo": "reth",
36-
"tracking": "tag"
36+
"tracking": "release"
3737
}
3838
}

0 commit comments

Comments
 (0)