-
Notifications
You must be signed in to change notification settings - Fork 14
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
Automatically generates release note and binaries on release #126
Conversation
The push of release tag should automatically generate release notes and release builds.
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.
- Please add changelog
- Please change the release note information to get from the
RELEASE_NOTES.md
like https://github.com/cosmos/cosmos-sdk/blob/v0.46.6/RELEASE_NOTES.md
asset_path: ./artifacts/lbm-${{ env.VERSION }}-linux-amd64 | ||
asset_name: lbm-${{ env.VERSION }}-linux-amd64 | ||
asset_content_type: application/binary | ||
# - name: "Upload linux-arm64 artifact" |
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.
Do you know why it failed in this case?
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.
So far I’ve confirmed that linux/arm64
produces the following assembler-level error, but I haven’t yet investigated the reason for it.
Building for linux/arm64
CGO_CFLAGS= CGO_LDFLAGS= CGO_ENABLED=1 go build -mod=readonly -tags "netgo ledger...
# runtime/cgo
gcc_arm64.S: Assembler messages:
gcc_arm64.S:28: Error: no such instruction: `stp x29,x30,[sp,'
gcc_arm64.S:32: Error: too many memory references for `mov'
gcc_arm64.S:34: Error: no such instruction: `stp x19,x20,[sp,'
gcc_arm64.S:37: Error: no such instruction: `stp x21,x22,[sp,'
...
Do you mean that it should generate the information to be displayed in the release from |
I hope it will look like https://github.com/cosmos/cosmos-sdk/releases/tag/v0.46.0. How can we do it? |
Instead of parsing |
Yes. How do you think about this? |
@zemyblue Understood. I think that's fine. |
|
.github/workflows/release-build.yml
Outdated
- "v[0-9]+" | ||
- "v[0-9]+.[0-9]+" |
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.
I don't think this case would exist according to our rules.
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.
So only v0.0.0
and v0.0.0-rc0
formats?
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
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.
fixed
…bm into feature/prepare_release_binaries
Description
This PR is to create a release note and release binaries and list them in the repository release automatically when a release tag is pushed.
make build
is only run targetinglinux/amd64
to create the default binary. The binaries for other platforms will be built in subsequent PRs.docker build
is performed within GitHub Actions (it may only take a few minutes).Motivation and context
According to #116, it would be nice if Github Actions could be triggered at release time to generate binaries for various platforms, rather than having to try out LBM, as is done in cosmos/gaia.
How to use
There are two steps that must be taken at release:
Rewrite the release note in
./RELEASE_NOTE.md
. The contents of this file will be used to detail the release note.# LBM v0.0.0 Release Notes Write a description of release v0.0.0 here. Note the relative paths of the links.
Create a release tag and push it.
% git tag -a v0.1.2 -m '...' % git push origin v0.1.2
This will then create a release note and release binaries, which will be listed in the repository release as Draft. Check the contents of the release and if there are no problems, publish it.
The available formal tag name formats are as follows:
It's also possible to build release binaries locally by executing the following
make
command:This will create the release binaries in the
./artifacts
directory.Internal Architecture
When the release tag is pushed and
release-build.yml
is invoked, (1) build docker image first, (2) runmake build-reproducible
to, and (3) upload the generatedbuild_report
and release binaries.Makefile
. Also, if you have to do a special compilation for that target, add a conditional branch in.release-build.sh
. In some cases, you may need to addapt get
, etc. tobuilders/rbuilder/Dockerfile
../contrib/generate_release_note/main.go
to create it.How has this been tested?
I've confirmed that release notes and binaries are generated in my personal repository for working with GitHub Actions, and should be tested after it is merged into LBM's
main
branch.Screenshots (if appropriate):
When this PR is merged, a tag like
v0.0.0
will automatically create a release note like the following when pushed:Checklist: