Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

My team is looking to automate installation/deployment of all of our development tools.

The main driver for this is to ensure that everyone in the team has a consistent development environment setup and to also allow a new recruit to get up and running easily. By development environment I mean tools like SCM, toolchains, IDEs etc. and by consistent I mean everyone using the same version of compiler to build code (this is very important!).

Here are a few of our requirements –

  • Allow unattended (silent) install of our entire dev setup by running a single script
  • Ability to be versioned
  • Ability to deploy selective updates (new versions) for specific tools
  • Ability to report which tools are installed and their specific version numbers
  • Must work on Windows (Linux would be a bonus)
  • Must be easy to maintain

What are some of the tools that you've used to automate such a task?

share|improve this question

closed as not constructive by mattnz, Walter, Dynamic, ChrisF Oct 7 '12 at 11:29

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

2  
Platform really matters here -- any recommendation will be based on that. Please share as much about stack as you can. –  Wyatt Barnett Oct 5 '12 at 1:06
    
Good point, I've updated the question. –  thegreendroid Oct 5 '12 at 1:43
    
Perhaps better asked over at serverfault.com –  mattnz Oct 5 '12 at 5:37
    
How does your IT department deploy application software in general? Don't they use a solution for automatic deployment (for example, Windows group policies?) Development tools are just applications, use the same mechanics. –  Doc Brown Oct 5 '12 at 6:03
    
@Doc Brown, unfortunately our IT department doesn't have a mechanism in place for deploying applications and/or updates. It's a really sorry situation to be in. –  thegreendroid Oct 5 '12 at 22:29
add comment

2 Answers

Short Answer: Virtual machine (VM) is an answer for your needs.

What you would need is just to install all required software and tools on on VM, configure it, and you are ready to share that with other team members.

Our choice of virtual machine is VirtualBox (Windows/Mac/Linux, Free). VirtualBox has a loyal following thanks to a combination of a free-as-in-beer price tag, cross-platform support, and a huge number of features that make running and maintaining virtual machines a breeze.

Virtual machine descriptions and parameters are stored entirely in plain-text XML files for easy portability and easy folder sharing. Its "Guest Additions" feature, available for Windows, Linux, and Solaris virtual machines, makes VirtualBox user friendly, allowing you to install software on the virtual machine that grants extra privileges to the host machine for tasks like sharing files, sharing drives and peripherals, and more.

share|improve this answer
1  
Unfortunately this is not really viable in our work environment. Excellent suggestion though! –  thegreendroid Oct 5 '12 at 2:18
    
Why not? is there some environment limitations? –  Yusubov Oct 5 '12 at 2:26
    
Yup, our IT department does not allow running of virtual machines, go figure! –  thegreendroid Oct 5 '12 at 2:56
    
Ahhhhh, i guess we (developres) are lucky once in our company. –  Yusubov Oct 5 '12 at 2:58
    
Vagrant looks really nice if it weren't for the restriction in my company! –  thegreendroid Oct 5 '12 at 4:18
add comment

You refer to your IT department in another response - it's their job, not your job, to put together the deployment of the development environment. Give them a list of requirements (Tools, versions etc), and walk away from the problem - they are far better qualified to deal with this than software developers.

Do truck drivers built the trucks they drive? Do Mechanics build the tools they use to fix cars and refine the oil they use? Do House Builders grow the trees and mill the timber for the houses they build?

Why the to software developers feel the need to put together and maintain the tools chains they use to develop the software.

I know the analogies a ludicrous.... Or are they?

As an Aside - I really applaud the effort to have a standard development environment. Too many software houses give developers a cleanly install OS on a machine and say "Go to it - you will need to install your preferred development environment before you start - see you in a week."

share|improve this answer
1  
In answer to your question about why software devs need/want to manage their own toolchains - its because those things change quickly over time and also because the tooling affects capability and development choices. Within certain bounds a truck is interchangeable one for another and its a very stable product (at least from a driver's perspective). OTOH much of the tooling I use iterates monthly or even faster. –  Murph Oct 5 '12 at 7:43
    
Whilst I agree with your viewpoint @mattnz, it also depends on your IT department and how responsive they are to your requests. Our IT department is downright woeful (maybe because they are under-resourced). We are still using a number of outdated (more than a few years old!) tools that are yet to be upgraded after repeated requests. As Murph mentioned, toolchains and other developer tools iterate quickly so we don't want to be gated on the IT department every time we want to upgrade! –  thegreendroid Oct 5 '12 at 22:21
1  
I suggest to adding a "tools" team. It will have the skills needed to do what is needed - you might be able to talk one of the over worked but really good IT guys to join your team. To start with your tools team might be small - maybe one of the devs allocated 2 days a week for tools - but you will quickly find it growing as application devs realize how much time they are consuming with the DIY tool approach. You may need to keep records of time spend on "tools" before you can put together the business case for the tools team. –  mattnz Oct 6 '12 at 7:27
    
That sounds like a good long-term approach, I will mention that as an option to my team. –  thegreendroid Oct 6 '12 at 23:46
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.