6 ms·
Poll: What do you use for deploying code?
I'm researching for a blog post on various deployment tools and would love your input
- danso 13y agoI just started using EC2 BeanStalk. It's been surprisingly painful...the system makes sense, but some of the config details are obscure...(using Rails 3.2 and mysql) Shouldn't Heroku be on this?
- gosuri 13y agoThank you, was thinking about checking it out. Could you explain why you went with BeanStalk?
- danso 13y agoServer ops isn't my thing...and while I've set up EC2 machines before for specific apps and services, I'm trying to build a workflow for deploying as flexibly as I could with Heroku. I looked at Rubber for a brief moment and it felt like too much...so I gave Beanstalk a try. Beanstalk has components that I can figure out on my own and the command line tools are easy enough...I'm currently stuck on figuring out when the hell it decides to set the DB user and password, despite what I've explicitly set it...so I know what's going wrong, but the whole settings part is much more annoying than it was on Heroku (even without trying to do anything too complicated). But EC2 has the full suite of services I need so I'll stick with it for now. I expect that once I'm comfortable with BeanStalk, it won't be hard to just migrate to old fashioned EC2 and capistrano. BeanStalk's support for Rails is relatively recent so the lack of questions on StackOverflow is probably why I'm struggling
- gottagetmac 13y agoI think Heroku counts as "git"
- peterbotond 13y agofossil scm
- rdtsc 13y agoTwo projects I have been following that I like are Salt and Ansible. http://saltstack.com/community.html http://saltstack.com/community.html http://www.ansibleworks.com/ http://www.ansibleworks.com/
- kyleslattery 13y agoWe're using Ansible, and so far I've really been liking it. Super simple to set up, and the syntax is extremely easy to write and follow.
- jvoorhis 13y agoI'll nominate fabric. http://fabfile.org/ http://fabfile.org/
- gavinh 13y agoi use a git post-receive hook that calls a bash script and supervisor for small projects
- TylerE 13y agoSCP, and human monitoring.
- bproctor 13y agoFabric FTW
- felipesabino 13y agoJust came across dokku this week https://github.com/progrium/dokku https://github.com/progrium/dokku Couldn't give it a try yet, but seems rather interesting
- typicalbender 13y agohttps://github.com/wr0ngway/rubber https://github.com/wr0ngway/rubber
- chrisgoman 13y agofabric
- dnm 13y agorsync
- misiti3780 13y agoreally? that's bad ass if this isnt a joke!
- gijoeyguerra 13y agoJenkins + Powershell in our Microsoft stack.
- platz 13y agohand-written powershell or using a library?
- abrudtkuhl 13y agoWould love more info on this setup.... looking to do the same in our shop
- zbruhnke 13y agoI use capistrano for deployment, I mainly like it because I can set up a VPS on any service and have it clone the repo from git, config is almost identical between applications depending on the complexities of each and it can be heavily modified for the clients needs as well. Definitely worth a look
- snambi 13y agowhat is the best tool for java web applications that are built as a war file deployed on tomcat?
- digisth 13y agoMostly Cap and Git, but Ansible (http://www.ansibleworks.com/ http://www.ansibleworks.com/) caught my eye recently for experimentation. Looks very promising.
- imjared 13y agoIf I'm just showing off work to clients and pushing things to a staging/dev server, a lot of the time I'll use grunt-rsync or grunt-sftp to push everything up at the end of my `$ grunt produce` task. For site deployments, I prefer Capistrano since it's dead simple.
- crdoconnor 13y agoSalt
- grandalf 13y agoMy preferred approach is to bundle the code into an apt package (or packages) and then use fabric.
- misiti3780 13y agocan you give more info on how you do this ?
- leetrout 13y agoTake a look at http://hynek.me/articles/python-app-deployment-with-native-packages/ http://hynek.me/articles/python-app-deployment-with-native-p...
- misiti3780 13y agothanks
- deleted 13y ago[deleted]
- davidbanham 13y agoCurrently Chef. It's great for getting a machine in order, but it's proven to be a real bear for actually managing deployment of server processes. We're working on a deployment manager based on Substack's fleet. https://github.com/substack/fleet https://github.com/substack/fleet https://github.com/PinionTech/rear-admiral https://github.com/PinionTech/rear-admiral
- gosuri 13y agoFleet looks very interesting! Thank you.
- callmeed 13y agoCan someone explain how Chef works for Rails deployment? Does it replace Capistrano entirely? Suggested tutorials for getting started?
- deleted 13y ago[deleted]
- misiti3780 13y agoFabric is pretty great - but every time I read about chef I wish I had the time and energy to sit down and learn ruby so I could use it.
- misiti3780 13y agoalso - can anyone comment on what is the closet thing to chef written in the best language every, python :)
- gecko 13y agoSaltStack (http://saltstack.com/community.html http://saltstack.com/community.html) and Ansible (http://ansible.cc http://ansible.cc) would be your two closest options. Of the two, I prefer Ansible for its simplicity and the fact that it can be extended in any language, but it's worth noting that that simplicity currently comes at a cost of power compared to Chef. (E.g., Chef has a concept of "ensure this service is present," and that works on all supported operating systems, whereas Ansible has different modules for different supervisors.)
- misiti3780 13y agothanks
- ipmb 13y agohttp://saltstack.org http://saltstack.org
- rajivtiru 13y ago1. Atlassian Bamboo for polling my git repository for changes 2. Apache ANT for the build script 3. Then back out to a production/tarball git repo 4. Every load balanced server image has a cron job to poll the production git for changes This way all I( or my team members) have to do is push to git. Everything else is automated. All servers load balancing will keep themselves up to date.
- X4 13y agoThat's quite nice, but your weakness is that a single-point of failure can delay your deployment, without you noticing it early enough. Or do you have solution for that?
- rajivtiru 13y agoWe stage all changes on a 'develop' branch and run the same exact build process(thanks to bamboo) and deploy to the staging server. If QA passes, then we just merge the changes to master, push and deploy to production servers. Bamboo has a nice variety of test suites you can run too. I really like that git(via bitbucket) and bamboo notify hipchat of any build failures/updates so we can respond immediately if something serious actually goes wrong.
- CJPoll 13y agoChef + Caterer (https://github.com/tylerflint/caterer https://github.com/tylerflint/caterer) Chef - because it's so easy to write cookbooks Caterer - because the push model is clean, and it has a similar workflow to Vagrant.
- bennyg 13y agoGithub is pretty key for getting my code in front of the largest amount of users - and their private repo's keep the code that makes it to the app store versioned and accessed between all of my different workstations. Not coming from a CS background, I love their product - so naturally I've moved my own coding habits to using git for personal projects. Unfortunately at work we're still on svn...
- beefsack 13y agoDo you mean source control or deployment? Wondering how you use GitHub and SVN for deployment.
- bennyg 13y agoI guess I meant that GitHub totally changed my creative and coding process to using git and being comfortable with its tooling. I'm fooling around with basic Heroku/RoR stuff now, so that's what I'm mainly using git for deployment purposes. If it helps, I'm an iOS developer, so git isn't realy an option for deployment. Edit: I guess if I put a different perspective on it, I deploy my open source tools through GitHub and a good commit system. GitHub is pivotal for getting those tools in front of the largest amount of programmers as possible.
- saosebastiao 13y agoHas anybody looked into using torrents with git? I've heard a few larger companies use it for fast code deployments across 100's/1000's of servers. I'd be interested in more information on how they do this.
- NathanKP 13y agoI have been using http://beanstalkapp.com/ http://beanstalkapp.com/ to do automated deployments. Basically it is Github + some nicer deployment features and a corporate repo focus. (Private by default, easy to add / remove / manage account access when adding or removing employees.) I have experimented with EC2 Beanstalk and AWS OpsWorks. Both are horrible, and I do not recommend them. The documentation is incredibly obscure, with gaping holes for even basic use cases and I found the deployments themselves to be slow to complete, and unreliable, frequently having issues that were extremely hard to diagnose because of hard to access logs and cryptic error messages. Git is by far the best deployment system in my opinion, especially if you can automate the code to get each server instance to automatically pull when needed. But for beginners Beanstalk (http://beanstalkapp.com http://beanstalkapp.com) is the absolute best. It is dead simple to set up a Git repo on the service, and then Beanstalk's servers will automatically deploy via SFTP to servers (or even directly to Amazon S3 for static content, even invalidating CloudFront caches), and you instantly have a secure deployment mechanism out of the box with no fiddling required. With Node.js code if you are running your server through Forever you can easily configure it to watch the code directory for changes and restart the server when needed. End to end setup is extremely quick, and it is incredibly reliable.
- EugeneOZ 13y agoI don't agree that git is best for deployment and that beanstalk is focused on beginners - git deployment actually for beginners and beanstalk becomes much more handy when you have more than 1 server and 1 developer. Also, not in all languages "git pull" is enough, sometimes you need to run custom commands after that to run external (to git) tools.
- pflats 13y agoI know it's 2013 and the state of the art has changed (as have trends) but I'm kinda weirded out to not see CVS or SVN on here.
- X4 13y agoThat's a version control system. OP is talking about a deployment system. Difference is that the deployment system does something with your final code (from your your git/svn/hg/cvs/mnt etc.). Please read http://en.wikipedia.org/wiki/Software_deployment http://en.wikipedia.org/wiki/Software_deployment
- jgautsch 13y agoI've actually spent the last 14 hours learning to deploy to ec2 using rubber. It's definitely powerful, and the railscast helps, but I haven't found much in the way of help for doing anything beyond deploying basic apps (for example, working on setting up resque workers right now...) Before 2 days ago I used Heroku for everything. PS. Rails.
- deleted 13y ago[deleted]
- itsuart 13y agoSVN Commit / SVN Update
- jdboyd 13y agoCall this a vote for Ansible.
- googya 13y agoCapistrano
- mkhpalm 13y ago1. Build the debian package 2. Add to private repository 3. Trigger apt-get upgrade on all the servers via any tool or method of choice.
- X4 13y agoThat's what a deployment system is for. It should do 1, 2 and optionally even 3 for you. You should probably look into "landscape" a canonical project.
- sekm 13y agoInfrastructure changes: 1. Stash pushes git change notification to bamboo 2. Bamboo checkout git and run cucumber tests on ec2 3. Green tests means puppet changes are pushed to puppet master under staging env 4. Manual build step to push to prod env 5. All affected infra will pickup puppet changes on next run
- Pewpewarrows 13y agoFabric to bootstrap new Salt minions, and Salt for the actual deployment.
- abrudtkuhl 13y agoIs anyone using Octopus for .NET stack deployment? http://octopusdeploy.com/ http://octopusdeploy.com/