Showing posts with label Agile. Show all posts
Showing posts with label Agile. Show all posts

Thursday, May 18, 2017

How To Create an On-Prem Windows Build Agent for Visual Studio Team Services

Motivation


I've been working on migrating our code repositories from CVS into git hosted on Visual Studio Team Services (VSTS)... formerly Visual Studio Online.  While I've reduced the CVS migrations to running a single script, I also wanted to start exploring some of the other CI functionality VSTS offers.  Many of our projects are Maven projects, and while Maven builds are supported, I ran into a snag trying to connect to our on-prem Nexus repository.  Using the VSTS "hosted" build agents would involve one of a couple of bad work arounds:

  • expose an endpoint in IIS to talk to the Nexus repo outside our firewall.  While a one-off point to point fix might solve this issue... the scenario is likely to recur, especially when I start looking at deployments
  • open a vpn connection from the hosted build agent to the network.  Eww.  This would feel like a clunky solution, assuming I could get it working at all.  I could see authentication being a real obstacle for this route

The obvious solution was a private (i.e. on-prem) build agent running within our network.  I shied away from this approach at first because I didn't want to deal with the server configuration (rightly so, yuck!), but it rapidly became clear that this actually was the simpler solution. The final straw was after I tried to create a Hudson job and ended up fighting with git the whole time (couldn't find the installed binary, installed it again, long file names choked, couldn't get authentication working... quelle nightmare!)



Monday, November 14, 2016

Teaching Agile and Scrum with Legos!

I had the opportunity to act as a "guest instructor" at Array, the brand new code school that just started up this October in Cheyenne.  What an amazing experience! I've been following the development of the school since early on in its inception, but to actually get to interact with the students and with Eric (the dynamic headmaster) in an actual classroom setting was a real treat.


Thursday, October 6, 2016

Agile Development - Bertrand Meyer (edX)

Agile - The Good, The Hype, and the Ugly


This six week edX course covers the concepts, principles, practices, myths and misconceptions of Agile project development.  Lectures are done by Bertrand Meyer, and while not required, the recommended text is Meyer's book Agile - The Good, The Hype, and the Ugly.  According to Meyer, the intent of the class is to look at the Agile approach to software development in an objective way, identifying shortcomings and myths of Agile, as well as its strengths and merits.  The graded portion of the class consists of multiple choice quizzes, so all in all it's a very lightweight course.

Monday, June 29, 2015

Building C# project with MSBuild and Jenkins, including quality metrics with SonarQube

In two previous posts I outlined how I set up Jenkins to run a build based on which branch was built in source control and deploy it to a version on AppEngine based on the branch, and also how I set up SonarQube to perform static analysis on the code.  It got plenty of owwws and aaahs from my colleagues but there was a gorilla in the room: This was all based on Java... and most of our projects are in .NET.  It's all well and good for the AppEngine pipeline, but how are the other developers going to leverage this kind of build-test-deploy automation if everything they work on is C# and VB?  Thus was the gauntlet laid down: get this working for Microsoft.

Friday, June 26, 2015

Automating code coverage and static analysis with Jenkins, JaCoCo, and SonarQube

So now that I had a Maven build running in Jenkins (as outlined in a previous post), I wanted to get some static analysis and code coverage data as part of the build.  So I started looking into SonarQube, and it looked like a good product.  Fired up another VM, found some instructions (and more instructions) and native packages for Ubuntu, and the set up part was relatively painless (relatively being the operative word...).  The hard part was getting it to work with Jenkins.

Monday, June 22, 2015

Multiversion Push To Deploy with Jenkins, BitBucket, and GAE

Round Two in my ongoing battle to get CI to work (Round 1 was a bit of a wash).  I had a pretty straight forward goal in mind this time: Push a branch to BitBucket, initiate a Jenkins build job, and push to a specific version of the app on AppEngine based on which branch was pushed (development, staging, master).

Monday, June 8, 2015

Berkeley CS169 - Software Engineering (Lecture Notes)

Recently finished up all the lectures for the Berkeley Webcast of CS 169 - Software Engineering.  This course focuses on building Software as a Service (SaaS) applications in Ruby on Rails.  Although I don't anticipate the need to know a lot of RoR for work, the concepts discussed in the course were extremely valuable and I would definitely recommend them to anyone looking to learn about professional software development.  Some key topics of interest:
  • Agile project development
  • Testing and refactoring
  • Design patterns
  • CI and deployment
These are my notes on the lectures, which are really more like a detailed table of contents so that I could easily reference the lectures if I wanted to revisit a topic.  I figure the course website has all the slides and reference to the book, so recreating that content seemed a bit silly...

Wednesday, May 20, 2015

Experimenting with Jenkins, ReviewBoard, and Redmine on Azure

As the developers at work finished up the last loose ends on the Programming Standards we were tasked with creating at work, one of the last things we talked about was how to enforce the standards.  This led to a discussion of code reviews, and I went down the rabbit hole, going so far as to read SmartBear's free 150 page ebook on the subject.  I thought it was a great approach but it seemed that in order to really get the most out of it, you needed a tool.  I wanted to play around with something, so I began looking into what was available for free, and ended up going down a bit of a different rabbit hole: continuous integration.  I wanted to see how Jenkins, ReviewBoard, and Redmine could work together to act as a suite of tools for agile development.  So I spun up some Ubuntu 14.04 instances on my Azure account, and away I went...