Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
lament.cfg
Dec 28, 2006

we have such posts
to show you




Long-story warning.

I am a dev who is rapidly falling into the realm of responsibility which would be best served by CI/DevOps/whatever tools.

We are a primarily C# Windows desktop software shop with a SVN repo and a bad job at config management. I am trying to fix that.

Our current build process:

Everyone checks in to the single SVN repo trunk. We very rarely branch, unless there is a specific dichotomy of features being delivered to multiple "Buildings". Occasionally, a build is required. We do not do anything approaching "continuous". It is all driven by whatever the next official delivery is. We have a guy who owns a VM that has our "build server" on it, which is in reality an instance of Visual Studio and some scripts he wrote to update from SVN and run a build with the right flags. That build is then dropped on a fileshare, and the msi is installed on ~10 machines in our lab for testing.

Our official delivery configuration requirements look like this:

10 separate "Buildings"
~10 "Rooms" within each "Building"

So we have, give or take, 100 configuration files that get fed to the application depending on which "room" within which "building" the app is being deployed on. We do have an app that auto-generates the xml config based on the input of "Building" and "Room", so we aren't actually manually managing 100 configs, but due to some politics, we may need 100 discrete config files for CM reasons. We currently manually install our app on each "Room"'s workstation.

Things that I know we need (to fix):
Build process. We need it to not be one guy's VM, we need it to be automated, we need it to be via some kind of "industry standard" method instead of a hacked together clusterfuck.
Deployment. Our Lab and the "Buildings" are not available externally via any networking. So someone does have to bring a CD or hard drive with the build. From that point in, we *do* have the capability of introducing some kind of remote/automatic deployment system.
Version control. We should probably not just be adding poo poo into the trunk constantly and calling a specific build number as the 'released' version. This is another kludge.
`
TL;DR We are a mess and I need help.

Where do I start? Technologies, books, blogs, anything.

Adbot
ADBOT LOVES YOU

lament.cfg
Dec 28, 2006

we have such posts
to show you




syphon posted:

This is the book I've seen most people recommend as the place to get started with CI/CD. It's commonly referred to as the "Black book" - http://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912

As far as things to do first, I'd say set up a CI server like Jenkins. It'll build .Net solutions just fine (although other for-pay tools like TeamCity do it a bit better). Get it pulling from your SVN server, running msbuild with every commit, then publishing a versioned artifact to your file share somewhere.

From there you can work on automating your deploy process, then enhancing your branching strategy. It may be worth going with Github for source control (it doesn't have to be publicly available), as Github has tremendous workflows for easy branching a code-reviews and whatnot.

I literally have a copy of that book open on my desk. Good to know I'm starting in the right place!

I will get Jenkins up and running as Step 1.

RE: Github, When you say publicly available, does that mean it's hosted locally, or on their servers but private? We also have a requirement that nothing can be hosted by a third party (which is horrible but it comes with the territory). This also addresses VS Online, which I assume hits the same roadblock. I'll check them both out for suitability though, thank you both.

EDIT: Github Enterprise supports local hosting and is $250/user/year-ish.

lament.cfg fucked around with this message at 21:22 on Jun 2, 2015

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply