-
Notifications
You must be signed in to change notification settings - Fork 10
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
Release workflow #201
Release workflow #201
Conversation
Can we please test the release workflows in a fork of this repository? |
Note: The test failure is caused by a change in go-ethereum, I'm on it. |
Ok, I've forked the repo to |
Didn't we agree to have the LLVM release separate? Meaning it is triggered manually so that it doesn't have to be rebuild for every release. |
That was the idea at first, however not doing this simplifies the release process. It also eases changing LLVM compilation settings between releases. |
This is more of a temporary solution and will change (if needed), especially with addition of the win/mac build. For now we use actions/cache with |
I see. Thanks for clarifying. |
I just checked the linux binary, it isn't the statically linked MUSL build? Also the workflow does not indicate at all that it will be building against MUSL. For Linux we want the musl build (only). Easiest way is to use musl-cross, see the Note: The gnu LLVM is fine to release though. LLVM builds we want to release both: MUSL for reproducibility and GNU so that contributors with slow laptops don't have to wait for an hour. |
Will the rest I asked for also be removed? |
Ok, lets summarize everything we have
So we need to release both LLVM, as mentioned here
and revive From The final goal is to have two workflows:
This is a 'step 1' - 'minimal' workflow, so we can have at least some form of release for now. The LLVM release workflow is in a separate pr, but there are problems with the win build Does everyone agree with this, or do we have a different point of view? So I propose next steps:
|
Can you scroll down a bit? Just the next post in this thread I wrote why this list of targets does not make sense. But to recap. We want those AND ONLY THOSE releases of the linux-musl
I propose you start by fixing the trivial suggestions I made here: #201 (review)
I don't know how to express this in any simpler terms. |
Please let me know when I should give it another review. Let's merge it without mac und windows for now so we have at least that. |
@AndWeHaveAPlan can you please add a few more comments and address Alex's questions? Pushing changes is great, discussing & explaining them is even better! Thank you :) |
fork example for current workflow
|
Just to sync discussions between parallel streams: LLVM artifacts will be released in separate tags (the part I'm working on), to later be reused in this release workflow, as well as in test workflow. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks this looks like what we want :)
My main grumble here was that it is unclear when the author is still working on it and when it is considered "done" from their point of view. So I can start reviewing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like we are getting close, thanks!
Can you please update the RELEASE.md
file to reflect how the release works with the new workflow?
.github/workflows/release.yml
Outdated
- name: llvm-musl-cache save | ||
if: steps.llvm-musl-cache.outputs.cache-hit != 'true' | ||
uses: actions/cache/save@v4 | ||
with: | ||
path: target-llvm/musl/target-final | ||
key: llvm-linux-musl-${{ hashFiles('crates/solidity/**') }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we cache the musl artifacts directly after building it? Otherwise it's either both musl and emscripten work and get cached or nothing gets cached.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, reordered
.github/workflows/release.yml
Outdated
- name: build musl | ||
run: | | ||
mkdir resolc-out | ||
docker run -v $PWD:/opt/revive messense/rust-musl-cross:x86_64-musl /bin/bash -c " |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unfortunately it doesn't look like they version it properly with tags. Can you please change this to use the image digest? This gives us manual control and will avoid breaking the release workflow randomly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, set @sha256:68b86bc7cb2867259e6b233415a665ff4469c28b57763e78c3bfea1c68091561
, image used in fork workflow
.github/workflows/release.yml
Outdated
- name: download solc | ||
run: | | ||
curl -o solc https://github.com/ethereum/solidity/releases/download/v0.8.28/solc-static-linux | ||
chmod +x solc | ||
echo "$PWD" >> $GITHUB_PATH |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is technically not required for builds.
However, executing a basic tests using the release build, like compiling a flipper contract, would be good. Can you please add such a test? It can be really simple, i.e. running resolc --bin crates/integration/contracts/flipper.sol
, expecting the PVM magic bytes 50564d
in the output and expecting a return value of 0. Same for the Wasm build. It's unlikely but should the release workflow for some reason produce defective artifacts, without the test, we will only find it out the annoying way.
update:
fork examples (10, 11, 12) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking good thanks! Just some nits then we can merge.
Co-authored-by: xermicus <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! Can you please trigger it again in the fork to be sure that it works with ubuntu 24.04
runners? Once this runs through I'll merge.
|
@AndWeHaveAPlan I tried the release but it failed, can you please take a look and fix it ASAP? |
problem with actions permissions, fixed by repo settings for now |
Thanks! |
Automatically create tag and relese based on 'version' in cargo.toml, triggered on main branch only. Do nothing if tag and relese already exist
Example
Release artifacts:
Current issues:
Next steps: