Setting up a build/deploy pipeline for MySQL seed scripts using VSTS and Octopus Deploy

My team wanted the ability to populate test data into new data warehouse instances (MySQL on Linux) that are created via Infrastructure as Code (CloudFormation and Chef). They already had the SQL scripts they used for local development, so I would just need to setup a process to package and deploy them. This process would then be automatically triggered when a new instance is created.

Continue reading Setting up a build/deploy pipeline for MySQL seed scripts using VSTS and Octopus Deploy

Code Sharing (PowerShell): Create Pull Request via VSTS REST API

Visual Studio Team Services Git Love

This past week I started concentrating on optimizing our release processes. I’ve talked about how our team uses VSTS and Git in a previous post. At the end of a sprint, pull requests are created in all of our repositories to merge to the release branches. As the number of our repositories continues to grow, the number of manual steps to merge for releases grows exponentially. Having worked with the VSTS REST API in the past I knew this wouldn’t be difficult to automate. A build would be run that runs the script below for each of our repositories to create pull requests. Service hooks to Slack would then send notifications so the necessary reviewers can approve the newly created pull requests. This same script can be used post release to merge back to Master branches. I commented on every line of code in the script below so I didn’t have to go into details here ūüôā

Continue reading Code Sharing (PowerShell): Create Pull Request via VSTS REST API

Feature Flag journey with LaunchDarkly – Part 1

At DevOpsDays Minneapolis I was the facilitator for an Open Space discussion¬†(largest group of the¬†day!!) on my proposed topic of “Release Management and Deploying to Prod Multiple Times a Day”. More on what an Open Space discussion is here. I received a ton of¬†really great feedback on my employer’s current processes and what we can do to move to a faster release cadence in the future.¬†The TL;DR of the discussion was, use feature flags!
Continue reading Feature Flag journey with LaunchDarkly – Part 1

Configuration Management for Serverless Microservice Projects

Weather you’re using AWS Lambda, Azure Functions, or Google Cloud’s Firebase, you’ll want to re-think how you approach configuration management for serverless projects. The number of projects tend to grow fast because a microservice architecture is most commonly used. This introduces a new set of configuration management problems. Manual tasks to create and manage these projects grows exponentially. Without proper configuration management these projects can quickly spiral into the wild wild west. I’d like to review the principals of SCM and share some solutions for accomplishing these goals when working with serverless/microservice projects.

Continue reading Configuration Management for Serverless Microservice Projects

Getting started with MSBuild

MSBuild

The majority of developers spend most of their time in Visual Studio and don’t have to understand what happens under the hood with MSBuild. Click the play button and magic happens! However, you may need to troubleshoot a failing build or extend the build to automate things. For those scenarios I’d like to provide a quick intro to what MSBuild is made up of and some tips on troubleshooting. Note: I’ll be using some of the code snippets from the Microsoft docs.

Continue reading Getting started with MSBuild

Code Sharing (PowerShell): Update Octopus variable via Octopus API

The trace-ability features when linking between Octopus and TFS/VSTS work pretty well out of the box, especially when using the Octopus Deploy build extension. When Releases are created by a build, there is a link in the Release description that points back to the build that created it. There is also a section in the build results that points to the Octopus release that was created. This met most of my needs, but to take it a step further and reference builds/files/artifacts during deploy time, I decided to use the Octopus Deploy API. I wanted to update Octopus variables as part of the build process before a Release is created so that deploy steps could link back to builds/files/artifacts that were versioned during build.

Continue reading Code Sharing (PowerShell): Update Octopus variable via Octopus API

Visual Studio Marketplace Metrics

Earlier this year I decided to create some Visual Studio Marketplace build extensions. I was re-using the same tasks in multiple build definitions and there wasn’t anything published to the marketplace that accomplished what I needed. The first extension I created is used to upload files to AWS S3; this was the very first AWS related extension in the marketplace which was kind of cool. It took me longer than I expected because of all the ceremony in setting up the metadata and manifest json files, and packaging with¬†tfx-cli. More details on creating a build task here:¬†https://www.visualstudio.com/en-us/docs/integrate/extensions/develop/add-build-task¬†Creating my second extension went a lot faster since I could re-use and modify most of the files. Now that these extensions were published, I was interested to see metrics on them.

Continue reading Visual Studio Marketplace Metrics

Custom Build Conditions in VSTS

On March 29th, 2017 the VSTS team released a new feature that added the ability to specify conditions for running a build task. This provides more control over your build tasks, for things such as a task to clean things up (even if a build fails), or send a message when something goes wrong, under conditions such as certain branches or with certain triggers. Custom Conditions appear in the new build definition editor under Control Options. Custom conditions are not currently available for Task Groups because they still use the old build definition editor (this is on the backlog).

Continue reading Custom Build Conditions in VSTS