Title: Faster and more automated releases · Issue #2334 · feast-dev/feast · GitHub
Open Graph Title: Faster and more automated releases · Issue #2334 · feast-dev/feast
X Title: Faster and more automated releases · Issue #2334 · feast-dev/feast
Description: TL;DR We're moving to conventional commits with release automation driven by Semantic Release Make sure to follow the conventional commit format as part of PR titles You can cut a release by clicking a button Problem statement Our releas...
Open Graph Description: TL;DR We're moving to conventional commits with release automation driven by Semantic Release Make sure to follow the conventional commit format as part of PR titles You can cut a release by clicki...
X Description: TL;DR We're moving to conventional commits with release automation driven by Semantic Release Make sure to follow the conventional commit format as part of PR titles You can cut a release by cl...
Opengraph URL: https://github.com/feast-dev/feast/issues/2334
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Faster and more automated releases","articleBody":"## TL;DR\r\n\r\n* We're moving to [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) with release automation driven by [Semantic Release](https://semantic-release.gitbook.io/semantic-release/)\r\n* Make sure to follow the conventional commit format as part of PR titles\r\n* You can cut a release by clicking a button\r\n\r\n## Problem statement\r\nOur release process today has a few pain points\r\n* A lot of manual steps (that are error prone, lead to variation in how releases are done, and take a long time to complete\r\n* High learning curve (and uncertainty) for developer that are cutting a release for the first time\r\n\r\n## Solution\r\n\r\n### Overview\r\n* Introduce [Semantic Release](https://semantic-release.gitbook.io/semantic-release/) with [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) in order to further automate release creation.\r\n* Give up on some less important processes (e.g, forward porting changelogs from release branches to master)\r\n* PR titles will be enforced by a GitHub Action\r\n* Prow will be modified to use the PR title as part of the commit title\r\n\r\n### What's the new process?\r\n(depends on https://github.com/feast-dev/feast/pull/2332)\r\n\r\nFollow the conventional commit format as part of PR titles\r\n\r\n\u003cimg width=\"798\" alt=\"image\" src=\"https://user-images.githubusercontent.com/6728866/155203384-a7ce202d-7099-4dfd-bb05-3624bea2c4d4.png\"\u003e\r\n\r\nPRs will get squashed into commits that follow the same conventional commit format\r\n\r\n\u003cimg width=\"834\" alt=\"image\" src=\"https://user-images.githubusercontent.com/6728866/155203482-d436646b-8847-4b7e-b661-7ddb567303e7.png\"\u003e\r\n\r\nOver time you will have a bunch of unreleased commits on the master branch. If you want to cut a release, simply head over to GitHub Actions and create a release\r\n\r\n\u003cimg width=\"367\" alt=\"image\" src=\"https://user-images.githubusercontent.com/6728866/155203958-d7501ecb-bc5b-4d73-94ba-3b11fd112d92.png\"\u003e\r\n\r\nThis will automatically trigger a release pipeline that determines the new release version, creates a changelog based on these conventional commits, commits the changelog, creates a tag, creates a GitHub release, and pushes the created tag to master. In turn, that tag push will trigger the building and publishing of artifacts (wheels, charts, jars, etc).\r\n\r\nRelease branches work the same, with one difference. You need to backport (cherry-pick) the relevant `fix: ****` commits to the release branch (like `v0.18-branch`) and then trigger a release using the same release form on GitHub Actions.\r\n\r\n### Limitations\r\n* You cant publish ONLY a patch (bug fix) on master. If you want to go from `0.18.0` to `0.18.1` then you should cut a release on `v0.18-branch` not `master`.\r\n* You can't publish features or breaking changes from a release branch. That means you should not try to backport feature releases or breaking changes to release branches.\r\n\r\n### Process changes\r\n- **Minimize patch releases:** Patch releases require us to commit fixes to master and backport patches to release branches. Only backport fixes to a release branch and release a patch if a patch is critical. Instead, focus on getting a new minor release out faster (0.18.0→0.19.0)\r\n- **Don’t forward port changelogs for patches:** Today, if you release a patch (0.18.0→0.18.1) then you need to copy/cherry-pick the created changelog to the master branch. This adds relatively little value since all the fixes on that branch are also contained in the minor release (0.18.0→0.19.0), and the release log will always be visible on GitHub itself.\r\n- **Pre-releases (not implemented yet):** If users really need access to small fixes on master, then we can automate the publishing of pre-releases from master.","author":{"url":"https://github.com/woop","@type":"Person","name":"woop"},"datePublished":"2022-02-22T19:37:58.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/2334/feast/issues/2334"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:5367da73-8395-280f-feee-18adbc4cc229 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 9530:20A8F8:151DA08:1DFE5F3:6978DD05 |
| html-safe-nonce | 290e4913ab4fbed830afe7846b4a5b6b36e92033eca9530d1e7473cf678ac937 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5NTMwOjIwQThGODoxNTFEQTA4OjFERkU1RjM6Njk3OEREMDUiLCJ2aXNpdG9yX2lkIjoiNDQ1MDc1NTEzMzIxNDA4ODQ1MyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 0c32cb57f4e7bd37c0cce2dcabe9dbf065d5cb838c90e34484bb080d715c6f83 |
| hovercard-subject-tag | issue:1147296066 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/feast-dev/feast/2334/issue_layout |
| twitter:image | https://opengraph.githubassets.com/4db3d7d9e61d222619006c56772f1f29bb4dbb67515410e3a585c3e0a76ec19d/feast-dev/feast/issues/2334 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/4db3d7d9e61d222619006c56772f1f29bb4dbb67515410e3a585c3e0a76ec19d/feast-dev/feast/issues/2334 |
| og:image:alt | TL;DR We're moving to conventional commits with release automation driven by Semantic Release Make sure to follow the conventional commit format as part of PR titles You can cut a release by clicki... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | woop |
| hostname | github.com |
| expected-hostname | github.com |
| None | 8a71ca1f7ab5436216e1df86f398ef7a51ed3152c90e3f7332fc70cf97fcb9d6 |
| turbo-cache-control | no-preview |
| go-import | github.com/feast-dev/feast git https://github.com/feast-dev/feast.git |
| octolytics-dimension-user_id | 57027613 |
| octolytics-dimension-user_login | feast-dev |
| octolytics-dimension-repository_id | 161133770 |
| octolytics-dimension-repository_nwo | feast-dev/feast |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 161133770 |
| octolytics-dimension-repository_network_root_nwo | feast-dev/feast |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | eaed570eead52a9920afef75dc3eb6d826fdc5ef |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width