
JetBrain사에서 제공하고 있는 CI/CD 도구인 TeamCity를 다뤄보겠습니다.
먼저 사용하게 된 계기는 Jenkins에서 설정에 대한 번거로움을 느끼게 되었고 무엇보다 UI가 더 이쁩니다!
Docker을 사용하여 서버를 구성할 것 이며 무료버젼은 3대의 Agent까지 가능합니다.
관련 자료는 JetBrains/teamcity-docker-samples 에서 확인하였습니다.
사용하는 이미지의 정보는 다음과 같습니다.
version: "3.1"
services:
db:
image: mysql:latest
container_name: teamcity_db
restart: always
ports:
- ${TEAMCITY_DB_PORT}:3306
environment:
- MYSQL_ROOT_PASSWORD=${USER_PASSWORD}
- MYSQL_USER=${USER_NAME}
- MYSQL_PASSWORD=${USER_PASSWORD}
- MYSQL_DATABASE=teamcity
volumes:
- ./data/mysql-db:/var/lib/mysql
teamcity:
image: jetbrains/teamcity-server:2023.11.3
container_name: teamcity
restart: always
ports:
- ${TEAMCITY_PORT}:8111
volumes:
- ./data/team-city/server/data:/data/teamcity_server/datadir
- ./data/team-city/server/logs:/opt/teamcity/logs
user: root
depends_on:
- db
teamcity-agent-1:
image: jetbrains/teamcity-agent:2023.11.3-linux-sudo
container_name: teamcity_agent_1
restart: always
privileged: true
volumes:
- ./data/team-city/agents/agent-1/conf:/data/teamcity_agent/conf
environment:
- DOCKER_IN_DOCKER=start
teamcity-agent-2:
image: jetbrains/teamcity-agent:2023.11.3-linux-sudo
container_name: teamcity_agent_2
restart: always
privileged: true
volumes:
- ./data/team-city/agents/agent-2/conf:/data/teamcity_agent/conf
environment:
- DOCKER_IN_DOCKER=start
다음과 같이 로그 수집하는 DB와 에이전트 2대를 따로 분리하였습니다.
USER_NAME=root
USER_PASSWORD=1234
TEAMCITY_DB_PORT=3306
TEAMCITY_PORT=8111
.env는 원하시는대로 설정하면 됩니다.
https://github.com/KIMSEI1124/infra_in_action
바로 실행할 수 있도록 코드를 제공하고 있습니다.
깃 저장소를 클론한 뒤 아래의 명령어를 실행하여 설치합니다.
sh up.sh
그 이후 홈페이지에 들어가게 되면 다음과 같은 화면을 볼 수 있습니다.

저희는 백업해둔 파일이 없기 때문에 Proceed를 눌러 다음으로 넘어가도록 하겠습니다.

Database 를 선택할 수 있는데 저는 MySQL을 선택하였습니다.
따로 준비하지 않았다면 기본값을 사용하시면 됩니다.

이후 설정이 끝나면 정책 관련된 내용을 동의한 후 계정을 만듭니다.

이렇게 되면 teamcity 설치는 끝나게 됩니다!

정상적으로 접속한 것을 확인할 수 있습니다!.
teamcity 특정 볼륨에 권한이 없어 실행이 안됬습니다. 그래서 해당 컨테이너의 유저 권한을 root를 부여하였습니다.
teamcity:
image: jetbrains/teamcity-server:2023.11.3
container_name: teamcity
# ...
user: root # 추가한 내용
depends_on:
- db
참고 자료
기존에는 postgresql을 사용하려고 하였지만 접속이 안되는 문제가 발생을 하였습니다.
그래서 mysql로 변경한 후 생성하니 정상적으로 생성이 되었습니다.
JetBrain에서 제공하는 도구인 Teamcity를 도커를 활용하여 설치를 하였습니다.
다음 글에서는 해당 도구를 사용하여 백엔드 서버인 Spring Boot를 배포 자동화하는 기능에 대해서 작성해보도록 하겠습니다.