TeamCity 설치하기

Sei Kim·2024년 2월 25일

Infra In Action

목록 보기
1/2
post-thumbnail

들어가며

JetBrain사에서 제공하고 있는 CI/CD 도구인 TeamCity를 다뤄보겠습니다.
먼저 사용하게 된 계기는 Jenkins에서 설정에 대한 번거로움을 느끼게 되었고 무엇보다 UI가 더 이쁩니다!

실습 환경

Local


  • macOS
  • docker

Remote


  • ubuntu 22.03
  • docker

1. Docker-Compose


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는 원하시는대로 설정하면 됩니다.

2. 설치하기


https://github.com/KIMSEI1124/infra_in_action
바로 실행할 수 있도록 코드를 제공하고 있습니다.

깃 저장소를 클론한 뒤 아래의 명령어를 실행하여 설치합니다.

sh up.sh

그 이후 홈페이지에 들어가게 되면 다음과 같은 화면을 볼 수 있습니다.

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

Database 를 선택할 수 있는데 저는 MySQL을 선택하였습니다.

따로 준비하지 않았다면 기본값을 사용하시면 됩니다.

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

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

정상적으로 접속한 것을 확인할 수 있습니다!.

3. 🔫 Troubleshooting


3.1. 볼륨 권한


teamcity 특정 볼륨에 권한이 없어 실행이 안됬습니다. 그래서 해당 컨테이너의 유저 권한을 root를 부여하였습니다.

teamcity:
  image: jetbrains/teamcity-server:2023.11.3
  container_name: teamcity
  # ...
  user: root # 추가한 내용
  depends_on:
    - db

참고 자료

Permission Denied

3.2. Backup Database


기존에는 postgresql을 사용하려고 하였지만 접속이 안되는 문제가 발생을 하였습니다.
그래서 mysql로 변경한 후 생성하니 정상적으로 생성이 되었습니다.

정리


JetBrain에서 제공하는 도구인 Teamcity를 도커를 활용하여 설치를 하였습니다.
다음 글에서는 해당 도구를 사용하여 백엔드 서버인 Spring Boot를 배포 자동화하는 기능에 대해서 작성해보도록 하겠습니다.

0개의 댓글