Release Process #951
Replies: 3 comments 2 replies
-
cc @rbair23 @SimiHunjan @Sean-Tedrow-LB @andrix10 @keirabee @easpaas @rickyrodmac |
Beta Was this translation helpful? Give feedback.
-
Something @Sean-Tedrow-LB suggested, but hasn't had the time to write down here is that we should keep all features on their own version until they hit an official release. E.g. if we were to do an SDK network overhaul and implement a new Hedera feature we'd have a branch for each. Then when releasing we'd branch from |
Beta Was this translation helpful? Give feedback.
-
After talking with @easpaas we came to realize this issue may be a lot easier to solve if we had separate branches for each network inside of |
Beta Was this translation helpful? Give feedback.
-
Release Process
Hey everyone, after some discussion I've along with others have come to realize the way we separate our releases is problematic because it does not differenciate between SDK beta features and Hedera Services
previewnet
features. I think this distintion is necessary because it is a separation of concerns. Currently we have the following:main
branchwere applied to
main
directly.develop
branchpreviewnet
features.The issue in particular with this is that the SDK features can and should be stabalized after a single sprint of no change to said feature. However, Hedera Services
previewnet
features might be pushed back if issues are found. As of right now we incorrectly still merge the last sprintsdevelop
intomain
meaning sometimes we releasepreviewnet
features in our official release, e.g. the recent account allowance feature. So, I think a change is warranted and this is what I have in mind right now.main
branchtestnet
andmainnet
.develop
branchmain
Math.random()
would be herebeta.N
, e.g.v2.12.0-beta.1
main
. Otherwise it stays ondevelop
.rc/<version>
should be created per release candidatemain
main
when Hedera Services supports the new requests onmainnet
. This will likely require coordination with Simi.User Stories
A new HIP is created for feature X.
hedera-protobufs
is updated with protobufs for feature X. Then, a new branch frommain
should be created with the name ofrc/<version>
where<version>
is the version feature X is expected to hitmainnet
.A feature that hit
mainnet
is discovered to have a bug, and to fix this bug protobufs need to be updated. Then,main
should be updated with the new protobufs and a fix should be implemented in a non-breaking way.A bug is discovered in a recent beta release. Then, the
develop
branch should be updated with the fix, and another beta patch release should be released either during the sprint, or at the end of the sprint depending on the severity.A bug is discovered in the latest official release. Then,
main
should be updated with the fix, and another patch release should be released either during the sprint, or at the end of the sprint depending on the severity.A recent feature that was expected to hit
mainnet
on v0.24.0 is delayed to version 25. Then,rc/v0.24.0
should remove said feature. A new branch should be created if one does not already exist for version v0.25.0, and that branch should be updated with the new feature.A older version of the SDK is found to have a bug. Then the latest
main
release should be tested for this bug, if the bug still exists it should be fixed onmain
. Otherwise, do nothing.Current Release Process
main
namedrelease/v<X>
where<X>
is a semver versionChangelog
is up to date in each PRgit
directly into arelease/X
branch instead of using GitHub; leave the PRs openvariant/jdk7
and rungit clean -ffdx
to make sure branc his cleanvariant/jdk7
./gradlew sdk:assemble
to check if the SDK builds./gradlew sdk:uploadeArchieve
variant/jdk9
and rungit clean -ffdx
to make sure branc his cleanvariant/jdk9
./gradlew sdk:assemble
to check if the SDK builds./gradlew sdk:uploadeArchieve
just publish
orjust publish beta
if it's a beta releasego build
and thengo test -tags unit -v
Beta Was this translation helpful? Give feedback.
All reactions