Comments (12)
@willingc I think we should just do staging and prod now, and not do any traffic redirection yet. +1 on having a specific 'you have deployment power, now here are your responsibilities' doc. For rolling back, we just revert the PR and merge that - I think that's sufficient for now.
from mybinder.org-deploy.
Some common tasks we should have a good documented workflow for:
- Just changing the config items in this repository & pushing it out
- Making a change in the http://github.com/jupyterhub/binderhub repository & then pushing that out without any config changes.
- Making a change in the binderhub repo + related changes in this repo & pushing them out atomically.
A PR should be our atomic unit of deployment / rollback.
from mybinder.org-deploy.
Now deployment won't mark as succeeded until:
- All pods have finished creating (5min timeout)
- An end to end test that tries to launch a known good github repo onto binder succeeds.
This should give us more confidence in our deployments!
I'm going to close this issue now, since we've separate issues for more specific things we wanna do.
\o/
from mybinder.org-deploy.
/cc @minrk @willingc @choldgraf objections to this plan?
from mybinder.org-deploy.
Agree - we'll need to document that workflow for the team but it sounds like a net positive to me for sure. If it works well for datahub then I think it's worth trying here.
from mybinder.org-deploy.
I think this is a great plan. For details, I assume that 'staging' is actually the 'master' branch, and then we push to 'prod'? This might also be a case for trying out protected branches on this repo.
from mybinder.org-deploy.
Big +1. No objections as this worked well for other Django projects that I've worked on (whether automated through travis or deployment scripts) when master -> staging -> prod.
A few items to think about:
- Do we use
master
,staging
,prod
or justmaster/staging
,prod
? I guess it depends if we wish to do some load testing onstaging
(or if staging serves a small sample of actual users) before release toprod
? -
It is the responsibility of the human who merged the PR to make sure the deployment succeeds, and if it doesn't, debug it + roll back if necessary.
- I would expand to the responsibility of 1) the human who merged and 2) the author of the PR.
- I'm assuming that we will have a bot of some sort to do rollbacks easily and consistently.
from mybinder.org-deploy.
@minrk For Berkeley (and in general) I prefer calling the branches 'staging' and 'prod', and have them correspond throughout - to cluster names, namespaces, release names, domain names, etc. I'd like to do the same here. +1 for using protected branches - we've those too!
from mybinder.org-deploy.
A very big chunk of this is done! There's some preliminary documentation at https://github.com/jupyterhub/mybinder.org-deploy#deploying-a-change. Here's an example of deploying something to staging: #15. And then deploying that to beta: #16.
I'm unsure how to get rid of the merge commits, unfortunately. 'rebase and merge' on the github UI still changes the hash, so not sure what to do here.
I've opened #11 separately for writing up deployment guidelines & responsibilities.
from mybinder.org-deploy.
I've also opened up #10 which should wait until jupyterhub/binderhub#135
from mybinder.org-deploy.
I'm unsure how to get rid of the merge commits, unfortunately.
What would be the goal of discarding the merges? It seems like preserving them would show a trail of what's been deployed to prod vs staging, which would otherwise be discarded.
from mybinder.org-deploy.
@minrk I guess it's ok. I was only slightly annoyed at them because it means beta and staging branches will never actually be the same (since there will always be a merge commit on top in beta) but I guess that's ok.
from mybinder.org-deploy.
Related Issues (20)
- GESIS BinderHub server saw number of Succeeded pods increased around 2023-06-21 16:00 CEST
- GESIS BinderHub server was accumulating Running pods that were more than 1 day old HOT 3
- https://grafana.mybinder.org is returning 503 Service Temporarily Unavailable most of the time
- GESIS Error during build: UnixHTTPConnectionPool HOT 2
- Error: No space left on device HOT 2
- RuntimeError: Could not set URL HOT 6
- Request to bump resources for PyVistaによる3Dビジュアライゼーション tutorial at PyConAPAC 2023 HOT 2
- GESIS server overwhelming with `Terminating` pods HOT 4
- Getting Too Many Users error - but pretty sure there are no users... HOT 6
- Image build request to GESIS node are failing HOT 1
- Improve error handling from repo2docker HOT 3
- GESIS node fail to launch repository HOT 4
- Request to bump resources for tutorials and notebook talks at PyHEP 2023 HOT 2
- [Documentation / Governance ] New Documenation Working Group issue under JupyterLab org for all Jupyter docs HOT 5
- COMET InSAR Workshop 2023 HOT 9
- Gesis git trigger fails: certificate expired HOT 2
- URL to share produces "Failed to connect to event stream" HOT 1
- OVH: Failed launch of large image (1.2 GB) HOT 2
- OVH2 failed Z2JH upgrade HOT 1
- "Launch attempt failed" with no further details HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mybinder.org-deploy.