Setting up a cross platform DevOps environment for ASP.net Core applications, we will learn how to configure a headless ubuntu server to act as TeamCity BuildAgent to use Cake to build ASP.net Core applications.
This guide assumes you have configured a ubuntu 16.X headless server with .net core CLI.
Check out Install .net core on ubuntu 16.x headless server
Install the prequisites
You will also need install
Mono is a platform for running and developing applications based on the ecma/iso standards. mono is an open source effort led by xamarin. mono provides a complete clr (common language runtime) including compiler and runtime, which can produce and execute cil (common intermediate language) bytecode (aka assemblies), and a class library.
Install Mono on Ubuntu 16.x
Although not strictly necessary to build .net core applications we will also install Mono on the server to facilitate the building of other .net framework applications.
mono-complete via the terminal
Test Cake Build on the server
In order to test that we have the server configured correctly We can now try out
Cake following instructions from CakeBuild.net – Getting Started example.
Install the Bootstrapper
Create a Cake script
We will use
nano to create the file
Copy & Paste the sample code
If you want more information about how to write a cake build script.
Check out How to write a Cake Build script for ASP.net core project
Change permission on
Execute the Build
We should see the following result indicating that we were able to successfully build a project using Cake on the server.
Configure as Build Agent
We are going to be using this server as an external build agent for use with TeamCity. In my scenario I have TeamCity installed on a seperate ubuntu server.
We need to install a few more pre-requisites to enable this.
Install Java JDK & JRE
TeamCity is a Java based application therefore all build agents etc have been developed using Java.
Add a reference to the Oracle PPA then update your package repository
Install Oracle JDK 8
Check your Java Version
The version information returned should be similar too
Configure JAVA_HOME environment variable
To find out where Java was installed
Copy the path from your preferred installation and then
sudo nano /etc/environment
At the end of the file on a new line paste the following or whatever your java installation path is
Refresh your terminal windows source
We can now test the environment variable has been set
Configure using Agent Push from TeamCity
We can now configure this server as BuildAgent from within TeamCity utilizing the
Agent Push functionality.
Set Agent to Auto Start
Paste the following code, change the name of the USER variable to whatever username required to run the the script. In my case I have created an
agentuser account. You may need to change this value to suit your environment.
Provide the sufficient permissions for the file to execute
Add it to the start up process