Best pratice for updating apps through CI?


#1

So I’m trying to create an app that is auto updated as soon as it is through Jenkins. What is the best practice for this? Right it has follows
Jenkins polls Github, builds then pushes a docker image to a private registry.
Jenkins then also creates a new version of a helm chart that references the docker image
Rancher then uses that helm app.

The only problem is that its a pain to get this all set up. And frankly its a bit slow… Is there any other ways or a better way to do this?

Thanks!


#2

We do something similar that might be able to help you out. (Although we use drone instead of Jenkins but should still have the same steps)

  • I’m assuming Jenkins polls Github because it’s not public? (otherwise I tend to prefer webhooks to polls but I get the limitation)

We store the helm config in with the code (ie. we don’t publish it, it’s really just our deployment config and we don’t expect others to use it) and then just use that as the deployment step. There’s no real reason to track or change the helm chart if only the container version is changing anyways :wink:

so our CI/CD steps look like

  1. Build product
  2. Run tests
  3. Build the container and publish to registry
  4. Deploy using local helm files in the repo

It ends up being pretty quick since you’re skipping publishing the helm pieces or even needing to have the private helm registry in the first place :slight_smile:

Otherwise you can also use alternatives to helm like mortar that might make things a bit simpler.