Skip to content

feat: release-branch automation #137

New issue

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

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

Already on GitHub? Sign in 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 <[email protected]>
    release_test.go:316: core/state: fix bug in statedb.Copy and remove unnecessary preallocation (ethereum#29563) by Aaron Chen <[email protected]>
    release_test.go:316: params: print time value instead of pointer in ConfigCompatError (ethereum#29514) by Nathan <[email protected]>
    release_test.go:316: eth/gasprice: add query limit for FeeHistory to defend DDOS attack (ethereum#29644) by Nathan <[email protected]>
    release_test.go:316: core/state/snapshot: add a missing lock (ethereum#30001) by maskpp <[email protected]>
    release_test.go:316: crypto: add IsOnCurve check (ethereum#31100) by Felix Lange <[email protected]>
    release_test.go:316: internal/ethapi: fix panic in debug methods (ethereum#31157) by Sina M <[email protected]>
    release_test.go:316: x by Arran Schlosberg <[email protected]>
=== 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 <[email protected]>
    release_test.go:316: core/state: fix bug in statedb.Copy and remove unnecessary preallocation (ethereum#29563) by Aaron Chen <[email protected]>
    release_test.go:316: params: print time value instead of pointer in ConfigCompatError (ethereum#29514) by Nathan <[email protected]>
    release_test.go:316: eth/gasprice: add query limit for FeeHistory to defend DDOS attack (ethereum#29644) by Nathan <[email protected]>
    release_test.go:316: core/state/snapshot: add a missing lock (ethereum#30001) by maskpp <[email protected]>
    release_test.go:316: crypto: add IsOnCurve check (ethereum#31100) by Felix Lange <[email protected]>
    release_test.go:316: internal/ethapi: fix panic in debug methods (ethereum#31157) by Sina M <[email protected]>
=== 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
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in 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