In our company, we develop a web application that runs on Kubernetes, and we're looking to improve how we deploy feature branches for testing. The goal is to make this process incredibly simple, ideally with just one click. We currently use TeamCity for continuous integration and ArgoCD for deployment, but there's a challenge: ArgoCD relies on GitOps, which means that deployments triggered in TeamCity aren't automatically registered in version control. I want to avoid having testers learn Git or YAML files; they should be able to deploy branches with minimal friction. I'm not looking to change our stable customer environments, just the ephemeral feature branches. I've not found any tools that fit my requirements, although I've considered creating custom scripts. I'm curious if other companies face similar challenges and how you've addressed this problem in your setups. Are there any tools or strategies that could help make this process easier for non-technical users?
8 Answers
If you're using ArgoCD, check out the Pull Request ApplicationSet generator; it might be the solution you need for managing preview environments. It can automate the deployment lifecycle quite well, even if deploying feature branches can hit bumps along the way if the right checks aren't in place.
We attempted various workflows, each designed for our specific needs. We used to dynamically generate deployment manifests without storing them, allowing us to deploy each branch without the hassles of maintaining YAML files.
You might want to explore something like Kro. It's designed to be an operator that abstracts away a lot of complexity. It has a web form that can help users create deploy manifests more simply—potentially saving you a lot of setup time compared to other tools. It looks promising!
That sounds interesting! I couldn't find much info about the UI though. Does it include a frontend? And can it handle Helm charts properly?
Have you ever looked into Octopus Deploy? It's a bit on the pricier side, but it's quite robust. It might not be the most cost-effective choice, but it could streamline your deployments a lot.
I've seen Octopus before. It's definitely a good tool but pricey! Do you use it in your work? Is it worth the investment?
You might want to check out an open-source alternative called CtrlPlane—it seems similar to Octopus but without the cost!
Right now, we're using Git actions for our deployments, and it's running smoothly. We simply ask for a version bump type, and the system handles the rest. For production, we add a few release notes before it goes out. It’s worked well for smaller projects, but I can't speak to larger or more complex setups.
That sounds exactly like what I need! Simple but effective for smaller teams, thanks for sharing!
Absolutely! For smaller projects, straightforward CI tools work perfectly.
For our deployments, we had Jenkins watch for branch creations and automate the environment accordingly. It allows testers to just hit a button to deploy, and we clean up automatically each week. It may be a bit of work upfront, but once set up, it's pretty smooth.
I faced this exact issue and ended up building a solution ourselves. We developed an operator with a frontend for non-technical users that integrates with GitLab for login. It makes committing to Git seamless. Plus, ArgoCD just monitors the repo. This might be a good route if you have the capacity to do some custom development.
In my experience, we tend to keep non-technical folks away from direct deployments. Generally, there's always a technical person who must approve anything before it's done. I guess we're a bit conservative about that kind of access.
I understand where you're coming from, but I was mainly referring to feature branches, which are less critical than production environments. Those should be easier for testers to manage!
I tried that approach, but it still left some gaps, especially when builds aren't ready after PRs. I've cobbled together a workaround but looking for a cleaner method.