Release workflow
See original GitHub issueMy point of view on release process:
- We should have 3 main branches:
- master - “production” branch. Automatically released as
@latest
to npm - next - “pre-master” branch to batch changes before getting into release. Automatically released as
@next
to npm - canary - “experimental” branch to battle test experiments. Automatically released as
@canary
to npm
- master - “production” branch. Automatically released as
- all npm releases under
@latest
tag should be represented as github-release with appropriate changelog - PRs by default should point to next branch
- next branch accepts only ready features / fixes. no WIP or experimental
- next and canary branches allowed to be rebased
- Ideally no one package.json should contain current package version, like it was with semantic-release setup
- Once next branch is ready it should be rebased into master which triggers CI workflow:
- run prepublish scripts
- run tests & coverage
- determine which packages were changed and should be released (gh-releases, tags)
- determine which version should be used for each changed package by analyzing commit messages related to them (for example, using changed files path)
- add appropriate tags to current commit: changed-package@new-version and push tags to repo
- create and publish release notes for each released package by analyzing commit messages related to them
- temporary set calculated versions into
package.json
of packages to be released - release changed packages to
npm
- publish website+demos
I realize that it is pretty complicated setup and requires a lot of work that can’t be done in one step. So we should brake it down into smaller steps. For instance, we can manually set up package versions in next branch before rebasing it into master and prepare release notes by hands as well.
Also such setup most likely have some cons and flaws which I would be glad to hear and discuss. So I invite you guys to discuss it or maybe put forward your great and valuable suggestions.
Issue Analytics
- State:
- Created 6 years ago
- Comments:12 (12 by maintainers)
Top Results From Across the Web
5 Steps to a Successful Release Management Process
Another option is to create a release workflow. Lucidchart is a visual productivity platform that helps developers map their processes clearly.
Read more >Level Up Your Release Management Workflow - Mattermost
Learn about the best practices, processes, and tools needed to develop more robust, effective release management workflows.
Read more >Gitflow: The Easy Release Management Workflow - GitKraken
To adopt Git in everyday development, a model called Gitflow was created to help simplify release management. Learn how to get started with...
Read more >Release Workflow | Yarn - Package Manager
An in-depth guide to Yarn's release workflow which helps with managing versions across a monorepo.
Read more >Gitflow Workflow | Atlassian Git Tutorial
Gitflow can be used for projects that have a scheduled release cycle and for the DevOps best practice of continuous delivery. This workflow...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
And discipline for “feat” and “BREAKING CHANGE”: these two can only affect one package (+docs+demos) at a time. We could event have pre-commit test for this.
follow-up #989