Skip to content

feat: release-branch automation #137

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
merged 21 commits into from
Feb 14, 2025
Merged

feat: release-branch automation #137

merged 21 commits into from
Feb 14, 2025

Conversation

ARR4N
Copy link
Collaborator

@ARR4N ARR4N commented Feb 13, 2025

Why this should be merged

Closes #25

How this works

See #126.

The code is in a new module to (a) avoid polluting the root go.mod file and (b) because go-git requires a newer version of Go. Unfortunately go-git doesn't support cherry-picking yet so a Bash script had to be used for that bit #!/sad.

How this was tested

Inspection of output when running cherrypick.sh (with set -x added) from the current branch.

...
...
+ CHERRY_PICKS='2bd6bd01d2e8561dd7fc21b631f4a34ac16627a1
99bbbc0277e34fc3a31512a345ba20874ae98e18
1e9bf2a09ed3d82ac1aa69750a556f3ce127721d
69f815f6f5791e0e48160bdad284773d0ffb1ba9
e4b8058d5a5832cdebdac7da385cf6d829c0d433
34b46a2f756da71595ac84eb7f25441f2a5b6ebb
159fb1a1db551c544978dc16a5568a4730b4abf3
da71839a270a353bac92e3108e4b74fb0eefec29'
...
Skipping 2bd6bd01d2e8561dd7fc21b631f4a34ac16627a1 already in history
...
Cherry-picking 99bbbc0277e34fc3a31512a345ba20874ae98e18
...
Cherry-picking 1e9bf2a09ed3d82ac1aa69750a556f3ce127721d
...
Cherry-picking 69f815f6f5791e0e48160bdad284773d0ffb1ba9
...
Cherry-picking e4b8058d5a5832cdebdac7da385cf6d829c0d433
...
Cherry-picking 34b46a2f756da71595ac84eb7f25441f2a5b6ebb
...
Cherry-picking 159fb1a1db551c544978dc16a5568a4730b4abf3
...
Cherry-picking da71839a270a353bac92e3108e4b74fb0eefec29
...
+ git cherry-pick 99bbbc0277e34fc3a31512a345ba20874ae98e18 1e9bf2a09ed3d82ac1aa69750a556f3ce127721d 69f815f6f5791e0e48160bdad284773d0ffb1ba9 e4b8058d5a5832cdebdac7da385cf6d829c0d433 34b46a2f756da71595ac84eb7f25441f2a5b6ebb 159fb1a1db551c544978dc16a5568a4730b4abf3 da71839a270a353bac92e3108e4b74fb0eefec29

@ARR4N ARR4N marked this pull request as ready for review February 13, 2025 21:18
@ARR4N ARR4N requested review from a team, darioush, qdm12 and michaelkaplan13 and removed request for a team February 13, 2025 21:18
@ARR4N ARR4N merged commit 00c10cf into main Feb 14, 2025
10 checks passed
@ARR4N ARR4N deleted the arr4n/release-automation branch February 14, 2025 16:09
github-merge-queue bot pushed a commit that referenced this pull request Mar 17, 2025
## Why this should be merged

Safer release process by enforcing invariants of `release/*` branches as
automated in #137 to fulfil #25.

## How this works

New test for `go_tooling` CI job.

If the PR target branch is `main` then only the `params.ReleaseType` is
checked. If the target is neither `main` nor a release branch then the
test is skipped. The checks performed on `release/*` branches are
described in the test.

## How this was tested

Locally against a dummy release branch with deliberate problems created
by (a) including this PR's changes in the final commit and (b) not
updating the libevm version.

```
$ go test -v ./... --target_branch="release/v1.13.14-0.1.0.rc.3"
=== RUN   TestCherryPicksFormat
--- PASS: TestCherryPicksFormat (0.39s)
=== RUN   TestBranchProperties
=== RUN   TestBranchProperties/branch_name
    release_test.go:172: 
                Error Trace:    .../ava-labs/libevm/libevm/tooling/release/release_test.go:172
                Error:          Not equal: 
                                expected: "release/v1.13.14-0.1.0.beta"
                                actual  : "release/v1.13.14-0.1.0.rc.3"
                            
                                Diff:
                                --- Expected
                                +++ Actual
                                @@ -1 +1 @@
                                -release/v1.13.14-0.1.0.beta
                                +release/v1.13.14-0.1.0.rc.3
                Test:           TestBranchProperties/branch_name
    release_test.go:175: On release branch; params.LibEVMReleaseType = "beta", which is unsuitable for release branches
=== RUN   TestBranchProperties/commit_history
    release_test.go:192: Forked from "main" at commit 4c6e50e (chore: module-renaming workflow inverts between `libevm` and `geth` (#152))
    release_test.go:314: ### History since fork from default branch (8 commits):
    release_test.go:316: internal/build, rpc: add missing HTTP response body Close() calls (ethereum#29223) by Shiming Zhang <wzshiming@hotmail.com>
    release_test.go:316: core/state: fix bug in statedb.Copy and remove unnecessary preallocation (ethereum#29563) by Aaron Chen <aaronchen.lisp@gmail.com>
    release_test.go:316: params: print time value instead of pointer in ConfigCompatError (ethereum#29514) by Nathan <Nathan.l@nodereal.io>
    release_test.go:316: eth/gasprice: add query limit for FeeHistory to defend DDOS attack (ethereum#29644) by Nathan <Nathan.l@nodereal.io>
    release_test.go:316: core/state/snapshot: add a missing lock (ethereum#30001) by maskpp <maskpp266@gmail.com>
    release_test.go:316: crypto: add IsOnCurve check (ethereum#31100) by Felix Lange <fjl@twurst.com>
    release_test.go:316: internal/ethapi: fix panic in debug methods (ethereum#31157) by Sina M <1591639+s1na@users.noreply.github.com>
    release_test.go:316: x by Arran Schlosberg <me@arranschlosberg.com>
=== RUN   TestBranchProperties/commit_history/cherry_picked_commits
    release_test.go:314: ### Expected cherry-picks (7 commits):
    release_test.go:316: internal/build, rpc: add missing HTTP response body Close() calls (ethereum#29223) by Shiming Zhang <wzshiming@hotmail.com>
    release_test.go:316: core/state: fix bug in statedb.Copy and remove unnecessary preallocation (ethereum#29563) by Aaron Chen <aaronchen.lisp@gmail.com>
    release_test.go:316: params: print time value instead of pointer in ConfigCompatError (ethereum#29514) by Nathan <Nathan.l@nodereal.io>
    release_test.go:316: eth/gasprice: add query limit for FeeHistory to defend DDOS attack (ethereum#29644) by Nathan <Nathan.l@nodereal.io>
    release_test.go:316: core/state/snapshot: add a missing lock (ethereum#30001) by maskpp <maskpp266@gmail.com>
    release_test.go:316: crypto: add IsOnCurve check (ethereum#31100) by Felix Lange <fjl@twurst.com>
    release_test.go:316: internal/ethapi: fix panic in debug methods (ethereum#31157) by Sina M <1591639+s1na@users.noreply.github.com>
=== RUN   TestBranchProperties/commit_history/final_commit
    release_test.go:365: Modified disallowed file "go.yml"
    release_test.go:365: Modified disallowed file "go.mod"
    release_test.go:365: Modified disallowed file "go.sum"
    release_test.go:365: Modified disallowed file "release_test.go"
--- FAIL: TestBranchProperties (2.07s)
    --- FAIL: TestBranchProperties/branch_name (0.00s)
    --- FAIL: TestBranchProperties/commit_history (2.07s)
        --- PASS: TestBranchProperties/commit_history/cherry_picked_commits (1.81s)
        --- FAIL: TestBranchProperties/commit_history/final_commit (0.01s)
FAIL
FAIL    github.com/ava-labs/libevm/libevm/tooling/release       2.712s
FAIL
```
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Define a way to apply "carry patches" on top of the current base version of libevm
2 participants