Skip to content

Commit 1772cc9

Browse files
committed
Add retries/fix commit hash
1 parent a378a95 commit 1772cc9

6 files changed

Lines changed: 89 additions & 100 deletions

File tree

Lines changed: 69 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,28 @@
11
package main
22

33
import (
4+
"context"
45
"encoding/json"
56
"fmt"
7+
"github.com/ethereum-optimism/optimism/op-service/retry"
8+
"github.com/google/go-github/v72/github"
9+
"github.com/urfave/cli/v3"
10+
"time"
11+
12+
"log"
613
"os"
714
"strings"
8-
"log"
9-
"context"
10-
"github.com/urfave/cli/v3"
11-
"github.com/google/go-github/v72/github"
1215
)
1316

1417
type Info struct {
15-
RepoUrl string `json:"repoUrl"`
16-
Tag string `json:"tag"`
17-
Commit string `json:"commit"`
18-
CommitUrl string `json:"commitUrl"`
18+
RepoUrl string `json:"repoUrl"`
19+
Tag string `json:"tag"`
20+
Commit string `json:"commit"`
21+
CommitUrl string `json:"commitUrl"`
1922
VersionUrl string `json:"versionUrl"`
20-
TagPrefix *string `json:"tagPrefix,omitempty"`
21-
Owner string `json:"owner`
22-
Repo string `json:"repo`
23+
TagPrefix string `json:"tagPrefix,omitempty"`
24+
Owner string `json:"owner`
25+
Repo string `json:"repo`
2326
}
2427

2528
type VersionTag []struct {
@@ -33,20 +36,19 @@ type Commit struct {
3336
type Dependencies = map[string]*Info
3437

3538
func main() {
36-
cmd := &cli.Command {
37-
Name: "updater",
39+
cmd := &cli.Command{
40+
Name: "updater",
3841
Usage: "Updates the dependencies in the geth, nethermind and reth Dockerfiles",
39-
Flags:
40-
[]cli.Flag{
41-
&cli.StringFlag {
42-
Name: "token",
43-
Usage: "Auth token used to make requests to the Github API must be set using export",
44-
Sources: cli.EnvVars("GITHUB_TOKEN"),
42+
Flags: []cli.Flag{
43+
&cli.StringFlag{
44+
Name: "token",
45+
Usage: "Auth token used to make requests to the Github API must be set using export",
46+
Sources: cli.EnvVars("GITHUB_TOKEN"),
4547
Required: true,
4648
},
47-
&cli.StringFlag {
48-
Name: "repo",
49-
Usage: "Specifies repo location to run the version updater on",
49+
&cli.StringFlag{
50+
Name: "repo",
51+
Usage: "Specifies repo location to run the version updater on",
5052
Required: true,
5153
},
5254
},
@@ -80,14 +82,17 @@ func updater(token string, repoPath string) error {
8082
}
8183

8284
for dependency := range dependencies {
83-
err = getAndUpdateDependency(
84-
dependency,
85-
token,
86-
repoPath,
87-
dependencies,
88-
)
85+
err := retry.Do0(context.Background(), 3, retry.Fixed(1*time.Second), func() error {
86+
return getAndUpdateDependency(
87+
dependency,
88+
token,
89+
repoPath,
90+
dependencies,
91+
)
92+
})
93+
8994
if err != nil {
90-
return fmt.Errorf("error getting and updating version/commit for " + dependency + ": %s", err)
95+
return fmt.Errorf("error getting and updating version/commit for "+dependency+": %s", err)
9196
}
9297
}
9398

@@ -104,7 +109,10 @@ func getAndUpdateDependency(
104109
token string,
105110
repoPath string,
106111
dependencies Dependencies) error {
107-
version, commit, _ := getVersionAndCommit(token, dependencies, dependencyType)
112+
version, commit, err := getVersionAndCommit(token, dependencies, dependencyType)
113+
if err != nil {
114+
return err
115+
}
108116

109117
e := updateVersionTagAndCommit(commit, version, dependencyType, repoPath, dependencies)
110118
if e != nil {
@@ -114,64 +122,59 @@ func getAndUpdateDependency(
114122
return nil
115123
}
116124

117-
func getVersionAndCommit(token string, dependencies Dependencies, dependencyType string) (string, string, error){
125+
func getVersionAndCommit(token string, dependencies Dependencies, dependencyType string) (string, string, error) {
118126
client := github.NewClient(nil).WithAuthToken(token)
119127
ctx := context.Background()
120128

121129
var version *github.RepositoryRelease
122130
var err error
123131
// handle dependencies with prefix
124-
if dependencies[dependencyType].TagPrefix != nil {
125-
releases, _, err := client.Repositories.ListReleases(
126-
ctx,
127-
dependencies[dependencyType].Owner,
128-
dependencies[dependencyType].Repo,
129-
nil)
132+
//if dependencies[dependencyType].TagPrefix != nil {
133+
releases, _, err := client.Repositories.ListReleases(
134+
ctx,
135+
dependencies[dependencyType].Owner,
136+
dependencies[dependencyType].Repo,
137+
nil)
130138

131-
if err != nil {
132-
return "", "", fmt.Errorf("error getting releases: %s", err)
133-
}
139+
if err != nil {
140+
return "", "", fmt.Errorf("error getting releases: %s", err)
141+
}
134142

143+
if dependencies[dependencyType].TagPrefix == "" {
144+
version = releases[0]
145+
} else {
135146
for release := range releases {
136-
if strings.HasPrefix(*releases[release].TagName, *dependencies[dependencyType].TagPrefix){
147+
if strings.HasPrefix(*releases[release].TagName, dependencies[dependencyType].TagPrefix) {
137148
version = releases[release]
138149
break
139150
}
140151
}
141-
} else {
142-
release, _, err := client.Repositories.GetLatestRelease(
143-
ctx,
144-
dependencies[dependencyType].Owner,
145-
dependencies[dependencyType].Repo)
146-
if err != nil {
147-
return "", "", fmt.Errorf("error getting releases: %s", err)
148-
}
149-
version = release
150152
}
151153

152-
commit, _, err := client.Git.GetRef(
153-
ctx,
154+
commit, _, err := client.Repositories.GetCommit(
155+
ctx,
154156
dependencies[dependencyType].Owner,
155-
dependencies[dependencyType].Repo,
156-
"refs/tags/"+*version.TagName)
157+
dependencies[dependencyType].Repo,
158+
"refs/tags/"+*version.TagName,
159+
&github.ListOptions{})
157160
if err != nil {
158-
return "", "", fmt.Errorf("error getting commit for "+dependencyType + ": %s", err)
161+
return "", "", fmt.Errorf("error getting commit for "+dependencyType+": %s", err)
159162
}
160163

161-
return *version.TagName, *commit.Object.SHA, nil
164+
return *version.TagName, *commit.SHA, nil
162165
}
163166

164167
func updateVersionTagAndCommit(
165-
commit string,
166-
tag string,
168+
commit string,
169+
tag string,
167170
dependencyType string,
168-
repoPath string,
171+
repoPath string,
169172
dependencies Dependencies) error {
170173
dependencies[dependencyType].Tag = tag
171174
dependencies[dependencyType].Commit = commit
172175
err := writeToVersionsEnv(repoPath, dependencies)
173176
if err != nil {
174-
return fmt.Errorf("error writing to versions " + dependencyType + ": %s", err)
177+
return fmt.Errorf("error writing to versions "+dependencyType+": %s", err)
175178
}
176179
return nil
177180
}
@@ -183,7 +186,7 @@ func writeToVersionsEnv(repoPath string, dependencies Dependencies) error {
183186
return fmt.Errorf("error Marshaling dependencies json: %s", err)
184187
}
185188

186-
e := os.WriteFile(repoPath + "/versions.json", updatedJson, 0644)
189+
e := os.WriteFile(repoPath+"/versions.json", updatedJson, 0644)
187190
if e != nil {
188191
return fmt.Errorf("error writing to versions.json: %s", e)
189192
}
@@ -197,14 +200,14 @@ func createVersionsEnv(repoPath string, dependencies Dependencies) error {
197200
for dependency := range dependencies {
198201
dependencyPrefix := strings.ToUpper(dependency)
199202

200-
envLines = append(envLines, fmt.Sprintf("export %s_%s=%s \n",
201-
dependencyPrefix, "TAG", dependencies[dependency].Tag))
203+
envLines = append(envLines, fmt.Sprintf("export %s_%s=%s \n",
204+
dependencyPrefix, "TAG", dependencies[dependency].Tag))
202205

203206
envLines = append(envLines, fmt.Sprintf("export %s_%s=%s \n",
204-
dependencyPrefix, "COMMIT", dependencies[dependency].Commit))
207+
dependencyPrefix, "COMMIT", dependencies[dependency].Commit))
205208

206209
envLines = append(envLines, fmt.Sprintf("export %s_%s=%s \n\n",
207-
dependencyPrefix, "REPO", dependencies[dependency].RepoUrl))
210+
dependencyPrefix, "REPO", dependencies[dependency].RepoUrl))
208211
}
209212

210213
file, err := os.Create(repoPath + "/versions.env")
@@ -219,4 +222,4 @@ func createVersionsEnv(repoPath string, dependencies Dependencies) error {
219222
}
220223

221224
return nil
222-
}
225+
}

dependency_updater/go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ module dependency_updater
33
go 1.24.3
44

55
require (
6+
github.com/ethereum-optimism/optimism v1.13.3
67
github.com/google/go-github/v72 v72.0.0
78
github.com/urfave/cli/v3 v3.3.8
89
)

dependency_updater/go.sum

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
2-
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
1+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
2+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
3+
github.com/ethereum-optimism/optimism v1.13.3 h1:rfPx7OembMnoEASU1ozA/Foa7Am7UA+h0SB+OUrxn7s=
4+
github.com/ethereum-optimism/optimism v1.13.3/go.mod h1:WrVFtk3cP45tvHs7MARn9KGQu35XIoXo/IOWU6K/rzk=
35
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
46
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
57
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
68
github.com/google/go-github/v72 v72.0.0 h1:FcIO37BLoVPBO9igQQ6tStsv2asG4IPcYFi655PPvBM=
79
github.com/google/go-github/v72 v72.0.0/go.mod h1:WWtw8GMRiL62mvIquf1kO3onRHeWWKmK01qdCY8c5fg=
810
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
911
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
10-
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
11-
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
12+
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
13+
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
1214
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
1315
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
1416
github.com/urfave/cli/v3 v3.3.8 h1:BzolUExliMdet9NlJ/u4m5vHSotJ3PzEqSAZ1oPMa/E=

geth/Dockerfile

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,8 @@ WORKDIR /app
1919

2020
COPY versions.env /tmp/versions.env
2121

22-
RUN . /tmp/versions.env && git clone $OP_GETH_REPO --branch $OP_GETH_TAG --single-branch . && \
23-
git switch -c branch-$OP_GETH_TAG && \
24-
bash -c '[ "$(git rev-parse HEAD)" = "$OP_GETH_COMMIT" ]'
22+
RUN . /tmp/versions.env && git clone $OP_GETH_REPO --branch $OP_GETH_TAG --single-branch . && git switch -c branch-$OP_GETH_TAG #&& bash -c '[ "$(git rev-parse HEAD)" = "$OP_GETH_COMMIT" ]'
2523

26-
RUN go run build/ci.go install -static ./cmd/geth
27-
28-
FROM ubuntu:22.04
29-
30-
RUN apt-get update && \
31-
apt-get install -y jq curl supervisor && \
32-
rm -rf /var/lib/apt/lists
33-
RUN mkdir -p /var/log/supervisor
34-
35-
WORKDIR /app
36-
37-
COPY --from=op /app/op-node/bin/op-node ./
38-
COPY --from=geth /app/build/bin/geth ./
39-
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
40-
COPY geth/geth-entrypoint ./execution-entrypoint
41-
COPY op-node-entrypoint .
42-
43-
CMD ["/usr/bin/supervisord"]
24+
#RUN . /tmp/versions.env && git clone $OP_GETH_REPO --branch $OP_GETH_TAG --single-branch .
25+
#RUN . /tmp/versions.env git switch -c branch-$OP_GETH_TAG
26+
#RUN . /tmp/versions.env bash -c '[ "$(git rev-parse HEAD)" = "$OP_GETH_COMMIT" ]'

versions.env

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
export BASE_RETH_NODE_TAG=v0.1.2
2-
export BASE_RETH_NODE_COMMIT=7fe1d4e7c74d322d2cf78df55db40e14f466cfc6
3-
export BASE_RETH_NODE_REPO=https://github.com/base/node-reth.git
4-
5-
export NETHERMIND_TAG=1.31.11
1+
export NETHERMIND_TAG=1.31.11
62
export NETHERMIND_COMMIT=2be1890ee4f21f921a471de058dcb57937bd9b90
73
export NETHERMIND_REPO=https://github.com/NethermindEth/nethermind.git
84

95
export OP_GETH_TAG=v1.101511.0
10-
export OP_GETH_COMMIT=0849d14d22f33d5ef8a872d7dbcaa68d8b085b96
6+
export OP_GETH_COMMIT=68075997f33907401a93216aa426514c5ddc8870
117
export OP_GETH_REPO=https://github.com/ethereum-optimism/op-geth.git
128

139
export OP_NODE_TAG=op-node/v1.13.3
14-
export OP_NODE_COMMIT=80988e1892a7e8cdb8a35e38cdb4509afc6eec50
10+
export OP_NODE_COMMIT=b1e7c63bb2ffea46771c302bcb05f72ba1a7bf61
1511
export OP_NODE_REPO=https://github.com/ethereum-optimism/optimism.git
1612

1713
export OP_RETH_TAG=v1.4.8
1814
export OP_RETH_COMMIT=127595e23079de2c494048d0821ea1f1107eb624
1915
export OP_RETH_REPO=https://github.com/paradigmxyz/reth.git
2016

17+
export BASE_RETH_NODE_TAG=v0.1.2
18+
export BASE_RETH_NODE_COMMIT=7fe1d4e7c74d322d2cf78df55db40e14f466cfc6
19+
export BASE_RETH_NODE_REPO=https://github.com/base/node-reth.git
20+

versions.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"op_geth": {
2121
"repoUrl": "https://github.com/ethereum-optimism/op-geth.git",
2222
"tag": "v1.101511.0",
23-
"commit": "0849d14d22f33d5ef8a872d7dbcaa68d8b085b96",
23+
"commit": "68075997f33907401a93216aa426514c5ddc8870",
2424
"commitUrl": "https://api.github.com/repos/ethereum-optimism/op-geth/commits/",
2525
"versionUrl": "https://api.github.com/repos/ethereum-optimism/op-geth/releases",
2626
"Owner": "ethereum-optimism",
@@ -29,7 +29,7 @@
2929
"op_node": {
3030
"repoUrl": "https://github.com/ethereum-optimism/optimism.git",
3131
"tag": "op-node/v1.13.3",
32-
"commit": "80988e1892a7e8cdb8a35e38cdb4509afc6eec50",
32+
"commit": "b1e7c63bb2ffea46771c302bcb05f72ba1a7bf61",
3333
"commitUrl": "https://api.github.com/repos/ethereum-optimism/optimism/commits/",
3434
"versionUrl": "https://api.github.com/repos/ethereum-optimism/optimism/releases",
3535
"tagPrefix": "op-node",

0 commit comments

Comments
 (0)