Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Keeping master always green & Emergency deployments #1116

Open
eldad87 opened this issue Oct 31, 2020 · 1 comment
Open

Keeping master always green & Emergency deployments #1116

eldad87 opened this issue Oct 31, 2020 · 1 comment

Comments

@eldad87
Copy link

eldad87 commented Oct 31, 2020

Description

I'm evaluating shipit for my organization and there are several points that we would like to better understand and probably customize for everyone to use.

Master always green

Problem: Once a PR is enqueued & passed its checks, breaking changes can be added to the stack's branch.
Suggestion:

  • Merge all pending PRs into a release branch.
  • Trigger a CI process on the newly created release branch.
  • If CI fails, reject all PRs.
  • Otherwise, Merge the release branch into the stack`s branch.

Such approach will guarantee that our stack branch is always green and the process will minimize bottlenecks caused by long CI processes (Unit test, E2E test, Static code analysis/Linter, etc) by running it on all PRs at once.

Single/Emergency deployments

In extreme cases, developers required to deploy an individual PR due to its complexity or in an attempt to fix a critical bug on production.

Suggestion:
Developers can specify such meta-data on their PR as a comment, for example

deploy:single // Merge & deploy the given PR individually
deploy:emergency // Similar to deploy:single + Cancel all ongoing Stack processes & start immediately

I would like to get some pointers on how to get the job done or alternatives to achieve our goals
Please advise,
Thanks!

@eldad87 eldad87 changed the title Keeping master always green Keeping master always green & Emergency deployments Oct 31, 2020
@JackTLi
Copy link
Contributor

JackTLi commented May 5, 2021

https://shopify.engineering/successfully-merging-work-1000-developers is the way this problem was solved at shopify, but requires a lot of development effort (this isn't available open-source afaik).

It seems like you're after something smaller scale. What you described should be buildable on top of shipit-engine, or https://bors.tech/ can maybe be an option that works well enough for you for less dev effort.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants