-
Notifications
You must be signed in to change notification settings - Fork 0
Release Process
Alpha, beta, and rc branches will be used when developing erector
will be released initially as 0.1.0 and will follow semver right-shifted (0.major.minor) until the API is stabilized as 1.0.0.new major versions. (While the tooling can support arbitrary versioning, deviating will require a work-around and may have unknown adverse effects.)
An alternative would be to initially release as 1.0.0-alpha and increment through beta and rc.
If 1.3.0 has a bug that 2.0.0 lacks, and it can be solved in a backwards-compatible way, then 1.3 should be patched to 1.3.1 and users should not be forced to upgrade across breaking changes.
Either the CI should automatically create tags and bump versions based on commit messages or when it sees a new tag it should bump versions. If irreversible actions (e.g. releasing to npm) are automatic, they should be individually gated by a manual approval.
Major versions will each have their own branch, and when merged to should bump the minor version or patch version and update documentation for the corresponding major version. It should be possible to skip a release/version bump if the build output is equivalent (e.g. just comments were touched) or if a release is otherwise undesirable.
An alternative would be to only release when a new tag is expressly created.
Changelogs should be generated automatically based on commit messages, but ideally they would also support a handwritten summary of changes.
Documentation should be built and pushed to the major-version documentation directory. Until 2.x this can be ignored, as 0.x documentation merges to 1.0 documentation rather than living on.
semantic-release
is the most popular tool, but the philosophy behind it may be incongruous with the goals.
- https://www.npmtrends.com/np-vs-publish-please-vs-release-it-vs-semantic-release
- https://docs.npmjs.com/cli/dist-tag
- https://medium.com/@mbostock/prereleases-and-npm-e778fc5e2420
- https://blog.npmjs.org/post/165769683050/publishing-what-you-mean-to-publish
semantic-release
because it is the most popular solution by a wide margin, it satisfies all stated goals, and its opinionated philosophy of making versioning unromantic and unsentimental is compelling.
The package will progress through pre-alpha
, alpha
, and beta