DEV Community

Discussion on: How do you deploy your apps?

Collapse
 
intricatecloud profile image
Danny Perez

At my first job, we used Jenkins to build Android apks, someone downloaded the signed build, and uploaded it to the Play Store. Once tools like Testflight and HockeyApp came out, we had a Jenkins pipeline to manage distribution.

My next job was in a web services context. We had an infrastructure on AWS with hosts managed by Chef. "Deploying" meant that an ops team would need to build out a cookbook for your service which had a lead time of 3-5 months. Then once the infrastructure was set up, the ops team would need to update a manifest.yml file which had the master list of which build/version would be released on which hosts. The file would deploy about 15 minutes after that.

This could only be done in prod after 10pm since it incurred downtime, could only be done by the ops team since it was a fragile process. no one had enough data to figure out whether we had any users around at that time. Some pieces of it were managed by Jenkins, but it was what I would call a manual automated process - a bunch of manual steps that were just as bad as having to deploy manually. ... But the repo for this process was named "devops" so it must have been a devops process, amirite?

My job after that was to build an in house tool to make push button deploys for legacy services and new apps. It is basically a REST API with a front-end around a few deploy.sh scripts - one for backend services that deployed chef cookbooks, another for deploying to S3, and most recently, one for deploying containers to AWS Fargate.

That tool took care of authentication/authorization and integrated with JIRA to manage approval processes.

It also provided a few dashboards for reviewing all deployments for a particular service, what the current version of that service is in each environment - available to read for everyone in the company. Even POs could deploy... from a bar ...with proper approvals.

Nowadays, we use Jenkins to build and test artifacts, upload them to artifactory, deploy through the deployment tool (Jenkins does it for test environments, a human does it in prod). The tool just does an S3 sync to a bucket behind Cloudfront.

Collapse
 
jsardev profile image
Jakub Sarnowski

Wow, this is an extensive description, thanks! 😄