You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
3.8 KiB
YAML
89 lines
3.8 KiB
YAML
# vim:ts=2:sts=2:sw=2:et
|
|
#
|
|
# Author: Hari Sekhon
|
|
# Date: 2020-11-24 15:40:47 +0000 (Tue, 24 Nov 2020)
|
|
#
|
|
# https://github.com/harisekhon/bash-tools
|
|
#
|
|
# License: see accompanying Hari Sekhon LICENSE file
|
|
#
|
|
# If you're using my code you're welcome to connect with me on LinkedIn and optionally send me feedback to help improve or steer this or other code I publish
|
|
#
|
|
# https://www.linkedin.com/in/harisekhon
|
|
#
|
|
|
|
# XXX: you must set an external RDBMS for production deployments (I use Cloud SQL)
|
|
|
|
version: '3'
|
|
|
|
services:
|
|
teamcity-server:
|
|
hostname: teamcity-server
|
|
# 2GB docker image
|
|
image: jetbrains/teamcity-server:${VERSION:-2020.2}
|
|
ports:
|
|
- 8111:8111
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
#test: ["CMD", "curl", "-f", "http://localhost:8111"]
|
|
# export DOCKER_HEALTHCHECK=/bin/true in development to bypass healthcheck
|
|
test: "${DOCKER_HEALTHCHECK:-curl http://localhost:8111}"
|
|
interval: 30s
|
|
start_period: 30s
|
|
timeout: 10s
|
|
retries: 5
|
|
environment:
|
|
#TEAMCITY_SERVER_MEM_OPTS: "-Xmx2g -XX:MaxPermSize=270m -XX:ReservedCodeCacheSize=350m"
|
|
TEAMCITY_SERVER_MEM_OPTS: "-Xmx512m"
|
|
volumes:
|
|
# for server.xml override:
|
|
#- teamcity/conf:/opt/teamcity/conf
|
|
- ./teamcity-database.properties:/data/teamcity_server/datadir/config/database.properties
|
|
# XXX: consider switching out of /tmp for better persistance to another Docker shared directory
|
|
#- /tmp/teamcity/server/datadir:/data/teamcity_server/datadir
|
|
#- /tmp/teamcity/server/logs:/opt/teamcity/logs
|
|
teamcity-agent:
|
|
hostname: teamcity-agent
|
|
# 1.3GB docker image
|
|
image: jetbrains/teamcity-agent:${VERSION:-2020.2}
|
|
# need the linux-sudo image for Docker-in-Docker - but this doesn't work due to iptables initialization error
|
|
#image: jetbrains/teamcity-agent:${VERSION:-2020.2}-linux-sudo
|
|
ports:
|
|
- 9090:9090
|
|
# needs root to be able to install OS package dependencies - 'sudo' not installed unless using the linux-sudo suffix, which is a lot bigger and similar result
|
|
# Since version 2020.1, TeamCity agent Docker images run under a non-root user by default
|
|
user: root:root
|
|
environment:
|
|
SERVER_URL: http://teamcity-server:8111
|
|
# AGENT_NAME is used to set the reported agent name and by teamcity.sh to automatically authorize the agent(s)
|
|
AGENT_NAME: agent1
|
|
# currently authorized via API in teamcity.sh
|
|
#AGENT_TOKEN:
|
|
# need the linux-sudo image for Docker-in-Docker
|
|
DOCKER_IN_DOCKER: start
|
|
healthcheck:
|
|
#test: ["CMD", "curl", "-f", "http://localhost:9090"]
|
|
# export DOCKER_HEALTHCHECK=/bin/true in development to bypass healthcheck
|
|
test: "${DOCKER_HEALTHCHECK:-curl http://localhost:9090}"
|
|
interval: 30s
|
|
start_period: 30s
|
|
timeout: 10s
|
|
retries: 5
|
|
restart: unless-stopped
|
|
links:
|
|
- teamcity-server
|
|
#volumes:
|
|
# XXX: consider switching out of /tmp for better persistance to another Docker shared directory
|
|
#- /tmp/teamcity/agent1/conf:/opt/buildagent/conf
|
|
# checked out sources - this needs 3GB to run builds so needs to be mounted - the docker image has 60GB and the mounts appear to only get 1GB not properly mapped to host but must be stuck in Docker VM overlay so omitting it
|
|
#- /tmp/teamcity-agent1-work:/opt/buildagent/work
|
|
#
|
|
# internal build agent caches
|
|
# XXX: causes: WARN - ig.BuildAgentConfigurablePaths - Failed to create directory: /opt/buildagent/system/.artifacts_cache
|
|
# XXX: causes agent to get stuck looping on bootstrap/upgrade process dying
|
|
#- /tmp/teamcity/agent1/system:/opt/buildagent/system
|
|
#
|
|
# plugins
|
|
# XXX: causes agent to get stuck looping on bootstrap/upgrade process dying
|
|
#- /tmp/teamcity/agent1/plugins:/opt/buildagent/plugins
|