In this article we will have a look at how we can automate the Octopus deployment using TFS build server. Every time a member of the team performs a check-in I want to execute a continuous build with the following workflow:
The first step is to change the default build workflow in TFS. Usually I clone the default build workflow and work with a new one, cause if something goes wrong I can easily rollback to the default build status.
First of all we need to create a new version of our build workflow, so I clone my CI build and its own workflow:
#01 Clone the CI build
#02 Clone the Workflow
In order to clone the workflow you just have to press the NEW button and locate the original workflow, or DOWNLOAD an existing one into your workspace:
Now, you need to locate a specific section of the workflow. We want to create a new release of our app only if everything went fine in the build but before the Gated Check-In is issued, because if we cant publish to Octopus, the build still has to fail.
In my case I want to obtain the following output on my build in case of success or failure, plus I dont want to publish a release if something went wrong in the build:
#01 Build log
#02 Build summary
I also want to output a basic log so that I can debug my build just by reading the log.
Now the fun part, I need to execute the Octo.exe command from TFS in order to be able to publish my projects. I need to know few info that I will provide to my build workflow as output parameters:
Finally, I have to create a new task in my workflow that will execute the command. How?
The trick is inside the InvokeProcess activity. In this activity I simply call Octo.exe and use the Octopus API to publish my project into the Staging environment. This is the environment where I will run my Automated Tests.
I configured the activity in the following way: