Kotlin과 TeamCity 연속 통합(CI)
Kotlin과 TeamCity 연속 통합(CI)
Kotlin 프로젝트를 빌드하도록 TeamCity를 설정하는 방법을 배워볼게요. TeamCity에 대한 더 자세한 내용과 기초는 Documentation 페이지에서 확인할 수 있어요. 설치 방법이나 기본 설정 같은 정보들이 담겨 있답니다.
본문
Kotlin은 여러 가지 빌드 도구와 함께 동작해요. 그래서 Maven이나 Gradle 같은 표준 도구를 사용 중이라면, Kotlin 프로젝트를 설정하는 과정은 이 도구들과 통합되는 다른 언어나 라이브러리와 다를 게 없어요. 조금 다른 요구 사항과 차이가 있는 경우는 IntelliJ IDEA의 내부 빌드 시스템을 사용할 때인데, 이 시스템도 TeamCity에서 지원된답니다.
Gradle과 Maven
Maven이나 Gradle을 사용한다면 설정 과정은 간단해요. 필요한 것은 빌드 스텝(Build Step)을 정의하는 것뿐이에요. 예를 들어 Gradle을 쓴다면 Runner Type에 대해 스텝 이름(Step Name)이나 실행할 Gradle 태스크 같은 필요한 파라미터를 정의하기만 하면 돼요.
Kotlin에 필요한 모든 의존성은 Gradle 파일에 정의되어 있으니까, Kotlin이 올바르게 실행되도록 따로 설정해줄 것은 없어요.
Maven을 쓴다면 동일한 설정이 적용돼요. 유일한 차이는 Runner Type이 Maven이 된다는 점이에요.
IntelliJ IDEA 빌드 시스템
TeamCity와 함께 IntelliJ IDEA 빌드 시스템을 사용한다면, IntelliJ IDEA가 사용하는 Kotlin 버전과 TeamCity가 실행하는 Kotlin 버전이 서로 같은지 확인해야 해요. 필요한 경우 특정 버전의 Kotlin 플러그인을 다운로드해서 TeamCity에 설치해야 할 수도 있어요.
다행히도 대부분의 수작업을 처리해주는 메타 러너(meta-runner)가 이미 준비되어 있어요. TeamCity 메타 러너 개념이 익숙하지 않다면 문서를 확인해보세요. 메타 러너는 플러그인을 작성할 필요 없이 커스텀 러너를 도입할 수 있는, 매우 쉽고 강력한 방법이에요.
메타 러너 다운로드 및 설치
Kotlin용 메타 러너는 GitHub에서 받을 수 있어요. 그 메타 러너를 다운로드하고 TeamCity 사용자 인터페이스에서 가져오면 돼요.
Kotlin 컴파일러 가져오기 스텝 설정
기본적으로 이 스텝은 스텝 이름(Step Name)과 필요한 Kotlin 버전을 정의하는 것으로 충분해요. 태그를 사용할 수도 있어요.
러너는 IntelliJ IDEA 프로젝트의 경로 설정에 따라 system.path.macro.KOTLIN.BUNDLED 속성의 값을 올바른 값으로 설정해줘요. 그런데 이 값은 TeamCity에서 정의해야 하고(어떤 값이든 설정할 수 있어요), 그래서 시스템 변수로 정의해줘야 해요.
Kotlin 컴파일 스텝 설정
마지막 스텝은 표준 IntelliJ IDEA Runner Type을 사용하는, 프로젝트의 실제 컴파일을 정의하는 것이에요.
이렇게 하면 프로젝트가 빌드되고 해당 아티팩트가 만들어져요.
기타 CI 서버
TeamCity가 아닌 다른 연속 통합 도구를 사용하는 경우에도, 그 도구가 빌드 도구 중 하나를 지원하거나 명령줄 도구를 호출할 수 있다면, CI 프로세스의 일부로 Kotlin을 컴파일하고 자동화하는 것이 가능해요.