release-management

By northscaler-public

Release-management Alternatives

Similar projects and alternatives to release-management

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a better release-management alternative or higher similarity.

release-management reviews and mentions

Posts with mentions or reviews of release-management. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-10-12.
  • Ask HN: Solo-preneurs, how do you DevOps to save time?
    20 projects | news.ycombinator.com | 12 Oct 2021
    When it comes to managing your git repo's support for releases, you might like our alternative to git-flow, which we jokingly call "git-ebb":

    https://gitlab.com/northscaler-public/release-management

    It's a fairly low-tech set of shell scripts that implement a release management strategy that is based on one release branch per minor version. All it does is manage version strings, release commits, release branches & release tags. You can hook your CI/CD into it whenever you're ready for that.

    We've used it to great effect on many client projects.

    The workflow is pretty simple for a new release (assume a Node.js project in this example):

    0. Your main ("main", "master", "trunk", "dev") branch is where all new features go. Assume our next version is going to be "2.3.0", so the version in the main branch starts out at "2.3.0-pre.0". If you need dev prereleases, issue them any time you'd like with `./release nodejs pre`. This will bump the version to "2.3.0-pre.1", "2.3.0-pre.2", etc each time.

    1. Ceremony: decide that you're feature complete for your next release.

    2. Use the release script to cut a release candidate ("rc"), say, with `./release nodejs rc`. You'll end up with a new branch of the form vmajor.minor, so v2.3 in this example, and the version in that branch will be 2.3.0-rc.0. Appropriate git tags will also be created. The version in the main branch is bumped to 2.4.0-pre.0, for the next minor release.

    3. Test your release candidate, releasing more release candidates to your heart's content with `./release nodejs rc`. Meanwhile, developers can start working on new features off of the main branch.

    4. Ceremony: decide you're bug-free enough to perform a "generally available" (GA) release.

    5. Perform a GA release with `./release nodejs ga`. This will tag a release commit as "2.3.0", push the tag, then bump the version in the release branch (v2.3) to "2.3.1-rc.0".

    6. If you find a bug in production, fix it in the release branch, issue as many RCs as you need until it's fixed, then finally release your patch with `./release nodejs patch`. You'll get a release commit & tag "2.3.1", and the version will be bumped to "2.3.2-rc.0". Lastly, cherry pick, (often, literally "git cherry-pick -x ") the change(s) back to the main branch if the bug still applies there; 99% of the time, it will.

    7. Repeat ad nauseum.

    This allows you at least manage your versions, branches & git tags in a sane & portable way that's low-tech enough for anyone to work on and understand. It's also got plenty of idiot-proofing in it so that it's hard to shoot yourself in the foot.

    Further, it's very customizable. After years of use across lots & lots of projects, we recommend using "dev" as your main branch name and as your main branch's prerelease suffix, and using "qa" as your release branch's prerelease suffix. The defaults are "pre" & "rc", and too many folks are using these scripts nowadays for us to change the defaults.