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

How to continuously deploy Bob itself? #65

Open
lispyclouds opened this issue Dec 18, 2019 · 1 comment
Open

How to continuously deploy Bob itself? #65

lispyclouds opened this issue Dec 18, 2019 · 1 comment

Comments

@lispyclouds
Copy link
Member

lispyclouds commented Dec 18, 2019

Currently Bob executes the build on one of the many nodes in a build cluster. During a deployment this node will be taken down along with its potentially running build(s).

We need to come up with a way to continuously deploy new versions of Bob while not affecting the running builds.

@lispyclouds
Copy link
Member Author

lispyclouds commented Dec 18, 2019

One approach:
Given one or more nodes of Bob wherein one or more of them are executing build(s) this approach requires external orchestration to maintain zero disruptions. Here node is the common term used for a container or a full instance.

Method:

  • Build an endpoint in Bob which tells that the node is executing a build currently. This is to be called by the external orchestration tool.
  • Build another endpoint which tells a node not to accept any new builds. Also to be called via the tool.
  • the update tool will iterate in parallel over the nodes and for each of the non busy node:
    • it will bring up a new node with the new code
    • when the liveness check passes for the new node, it will ask the old node to not take builds
    • add the new node to the load balancer
    • kill the old node
  • this continues till no old nodes are left

Caveats:

  • For a single node setup this will block till the build completes in the old node if its running something.
  • Some discovery mechanism is needed for listing the node, if using something like Kubernetes, this is trivial

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: not prioritized
Development

No branches or pull requests

1 participant