TeamCity 로 AWS + GitHub + .NET Continuous Integration 만들어보기 (1)

서론

요즘에 한창 회사에서 업데이트 하는 날에 소모되는 시간이 너무 아깝고, 너무 불편하기 때문에 CI(Continuous Integration) & CD (Continuous Delivery) 환경을 구축하기 위해 열을 올리고 있는데, 그에 따라서 엄청 삽질한 결과물과 나는 이렇게 진행한다고 하는 결과물을 공유 하는 내용으로 쓰게 된다. 사실 나의 바램은 지속적 통합(Continuous Integration) 보다는 지속적 배달(Continuous Delivery)이 더 중요한 목적이다. 업데이트 하는 날 시간을 많이 소비하고 싶지 않은 이 마음가짐이 귀차니즘을 이겨내고, 설정을 하게 되었다는.....

사용 환경

  • GitHub (Private Repository 사용)
  • ASP.NET MVC 5 (.NET Framework 4.5)
  • TeamCity 최신 버전 (9.1.6 사용함)
  • AWS 사용 중

계획

GitHub 을 사용하는데 있어서 Git Flow 형식으로 사용 중이다.
하지만 막 엄격하게 룰을 지키며 사용하질 않아서, 그 때마다 알맞는 프로세스로 사용하려고 노력하고 있다. 가장 단순 하고 의미 있게 develop branch 와 master branch 전략으로 진행 하고 있다. master branch는 직접 push 를 못하게 막고 있다. 이유는 아래에 있는 이유 (= master branch 배포시 자동 Production 배포) 때문이다. 하지만 hotfix 때문에 가끔 하기도 한다. 보통 대부분은 Develop -> Mater 로 Pull Request 보내는 걸로 master branch 를 운영하고 있다.

  1. 모든 branch 는 자동 빌드 시킨다.
    • 빌드 되고, 테스트 까지 진행시키는 단계를 진행 한다
  2. develop / master branch 는 테스트 서버(Staging Server)에 자동 배포 된다.
    • 빌드 된 output 이 자동으로 테스트 서버로 구축 되도록 진행
  3. preview/[featureName] branch 들은 테스트 서버에 자동으로 미리 보기 서버를 구축
  4. master branch 는 Production(=Live) 서버 에 자동 배포 된다.

TeamCity 설치

그냥 일반적으로 설치 단계를 따른다. 나도 막 엄청 스크린샷 찍어서 상세하게 알려주고 싶은데, 설치 할 때는 별로 중요하지 않더라. .NET 환경이라 MSSQL 사용하는데, TeamCity에서 외부 DB 하는게 더 좋다고 한다. (왜 그런지 이유를 알아보지는 않았다) 그래서 MSSQL로 설정해서 설치 하려고 했는데, 이 부분은 좀 고생을 한 부분이라 공유한다.

참고 링크

  1. MS sqljdbc package Download 따라가서 다운로드 한다.
  2. Copy sqljdbc42.jar to <TeamCity_data_dir>\lib\jdbc\sqljdbc42.jar
  3. Copy auth\x86 혹은 64\sqljdbc_auth.dll to <TeamCity_data_dir>\lib\sqljdbc_auth.dll
  4. 제어판 - 환경변수 등록하는 곳 가서 - System 환경변수 등록 TEAMCITY_SERVER_OPTS = -Djava.library.path=<TeamCity_data_dir>\lib
  5. TeamCity 서비스 재시작

<TeamCity Data Directory>\config\database.properties

connectionUrl=jdbc:sqlserver://{HOST}주소:1433;databaseName=데이터베이스이름;integratedSecurity=true;

connectionProperties.user=아이디

connectionProperties.password=비밀번호

파일 두고 시작 하면 자동적으로 잘 받을 것이다. MSSQL User 로 로그인 했다. MSSQL로 설정해서 이것저것 설정 오류들은 구글링과 스택익스체인지 그룹 쪽 확인하면 거의 다 나오니 검색검색 신공으로 잘 마무리 하기를...
잘 설치가 마무리 되면, 관리자 아이디/암호 만들고, TeamCity 환경을 보게 된다.

TeamCity 운영

우선 팀시티는 CI 도구로 유명한 프로그램 중의 하나이다. 일단 무료이고, 설치하면 20 build configurations과 3 Build Agents를 얻을 수 있다. 내가 있는 회사는 스타트업이라 20개의 빌드 셋팅이면 뒤집어 쓰고도 남는다.

사실 Teamcity를 사용함에 있어서 개념 잡기부터 애매하긴 하다. 나 또한 그랬으니까, 하지만 메뉴얼 잘 읽어보고, 검색 신공 쓰면서 대충 아 이런 물건이구나~ 를 깨우치면 된다.

Develop => Staging => Production 환경으로 이어지는 배포 환경(Deploy And Delivery)에 더 주안점을 두고 환경을 구성했다.
실제 개발 환경은 Local 개발 (Develop) -> 테스트 서버 (Staging) -> AWS (Production) 으로 구성되어져 있는데, 먼저 Develop -> Stage로 가는 단계의 내용을 공유하고자 한다.

teamcity

Ssemi

Read more posts by this author.