Allows creating a TeamCity deployment in Google Cloud by using the gcloud tool locally or in the Google Cloud console.
The template allows deploying a TeamCity server and agent in Google Cloud Platform. It creates a MySQL database, a Google Compute Engine (GCE) instance with CoreOS and starts TeamCity in a Docker container.
Please use the IAM console to ensure that the Deployment Manager service account [project_number]@cloudservices.gserviceaccount.com
has the Project Owner
role.
To do it, use the following command:
> gcloud projects add-iam-policy-binding $(gcloud config get-value project) --member serviceAccount:$(gcloud projects describe $(gcloud config get-value project) --format="value(projectNumber)")@cloudservices.gserviceaccount.com --role roles/owner
Ensure that you have enabled the following Google Cloud APIs in your project:
- Cloud Deployment Manager V2 API
- Google Cloud Resource Manager API
- Google Identity and Access Management (IAM) API
- Cloud SQL Administration API
To do it, use the following command:
> gcloud services enable deploymentmanager.googleapis.com sqladmin.googleapis.com iam.googleapis.com cloudresourcemanager.googleapis.com runtimeconfig.googleapis.com
Deploy TeamCity as a template by specifying the following properties:
> gcloud deployment-manager deployments create teamcity --template https://raw.githubusercontent.com/JetBrains/teamcity-google-template/master/teamcity.jinja --properties zone:<zone>
To list available zones execute the following command:
> gcloud compute zones list
Note: Deployment will take several minutes, on completion you will be able to navigate to the teamcityUrl
output value to see the TeamCity web UI.
It is possible to specify the following properties for your deployment:
zone
- the zone in which this deployment will run.version
- the TeamCity version to be deployed.installationSize
- the size of the installation: small/medium/large.serviceAccount
- the e-mail of the service account specified for the TeamCity GCE instance.createStorageBucket
- allows creating a storage bucket to store build artifacts.network
- the network name in the same region which will be used by the TeamCity GCE instance.subnetwork
- the subnetwork name in the same region which will be used by the TeamCity GCE instance.
The list of pre-configured installation types:
Installation Size | Typical Usage | vCPU | RAM | VM Data Disk | Database |
---|---|---|---|---|---|
small | 3 users, 100 builds/day | 1 | 3 GB | 30 GB HDD | db-n1-standard-1 |
medium | 5 users, 300 builds/day | 2 | 4 GB | 50 GB SSD | db-n1-standard-1 |
large | 20 users, 1000 builds/day | 4 | 8 GB | 100 GB SSD | db-n1-standard-2 |
Note: See pricing for Google Compute Engine and MySQL database.
Note: TeamCity server exposes an HTTP endpoint, so make sure to enable the HTTPS endpoint for the GCE instance for production usage.
To change the TeamCity version, start the deployment script with the required version number and then execute the Reset action on the TeamCity virtual machine:
> gcloud deployment-manager deployments update teamcity --template https://raw.githubusercontent.com/JetBrains/teamcity-google-template/master/teamcity.jinja --properties zone:<zone>,version:2017.2.2
Note: The zone
parameter cannot be changed during the deployment update.
During deployment, the template allocates the following resource:
- Service account with
Project Viewer
,Cloud SQL Client
,Compute Instance Admin
,Storage Object Admin
andService Account Token Creator
roles. - Network, firewall rules, and static IP address.
- MySQL database and user.
- GCE instance with a data disk powered by CoreOS and the assigned service account.
After deployment you will be able to connect to the GCE instance via SSH. In CoreOS TeamCity works as the following systemd service:
teamcity-server.service
- launches TeamCity server.teamcity-agent.service
- launches TeamCity agent.
The template installs the following Google Cloud Platform integrations in TeamCity:
- Google Cloud Agents - allows scaling the pool of TeamCity build agents by leveraging GCE.
- Google Artifacts Storage - allows storing build artifacts in Google Storage Blobs.
It happens when subnetwork was not specified or does not exist in the specified zone.
Ensure that you have configured firewall rules to access TeamCity server on HTTP/HTTPS port.