본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

빌드 자동화 도구(Build Automation Tool)는 소스 코드의 컴파일, 의존 라이브러리 내려받기, 테스트, 패키징, 배포처럼 빌드에 드는 일을 미리 적어 둔 규칙대로 한 번에 실행해 주는 도구이다.

빌드를 사람이 손으로 하면 순서를 빠뜨리거나 개발자마다 결과물이 달라지기 쉽다. 빌드 자동화 도구는 빌드 순서와 의존 관계를 설정 파일(빌드 스크립트)에 적어 두고, 명령 하나로 같은 결과물을 만들어 낸다. 그래서 코드가 바뀔 때마다 자동으로 빌드·테스트하는 지속적 통합(CI) 환경에서 특히 쓸모가 크다.

자바 진영에서는 Ant 가 먼저 나왔고, 의존성 관리와 표준 디렉터리 구조를 들여온 Maven, 스크립트처럼 유연하게 쓰면서 빌드 속도를 높인 Gradle 이 뒤를 이었다. C·C++ 에서는 make 와 CMake 가 같은 자리에 있다.

도구 빌드 스크립트 특징
Ant build.xml (XML) 아파치 재단이 2000년에 내놓았다. 타깃과 태스크를 XML 로 하나하나 적는다. 자유도가 높지만 정해진 규칙이 없어 스크립트가 길어지고, 의존 라이브러리 관리 기능이 없다(따로 Ivy 를 붙인다)
Maven pom.xml (XML) 아파치 재단이 2004년에 내놓았다. 프로젝트 정보와 의존 라이브러리를 선언하면 중앙 저장소에서 알아서 내려받는다. compile → test → package → install → deploy 의 정해진 생명주기와 표준 디렉터리 구조를 따른다
Gradle build.gradle (Groovy) 또는 build.gradle.kts (Kotlin) 2012년 1.0 판이 나왔다. 실행할 처리 명령들을 태스크로 묶어 태스크 단위로 실행한다. 증분 빌드와 빌드 캐시로 빠르고, Maven 저장소를 그대로 쓴다. 안드로이드 앱의 공식 빌드 도구이다
make Makefile 유닉스의 고전 빌드 도구. 파일 사이의 의존 관계와 바뀐 파일만 다시 컴파일하는 규칙을 적는다

CI 서버와의 구분

편집 원본 편집

젠킨스(Jenkins)는 흔히 빌드 자동화 도구로 함께 묶이지만, 정확히는 빌드를 언제, 어디서 돌릴지를 맡는 CI/CD 서버이다. 저장소에 코드가 올라오면 젠킨스가 이를 감지해 Maven·Gradle 같은 빌드 도구를 불러 빌드와 테스트를 실행하고 결과를 알려 준다.

  • 젠킨스는 자바로 만든 오픈 소스 서버이다. 웹 화면에서 작업을 설정하고, 수많은 플러그인으로 저장소·빌드 도구·배포 환경과 연결한다
  • 젠킨스 파이프라인을 적는 Jenkinsfile 은 Groovy 문법을 쓰지만, 이것은 파이프라인 정의 형식일 뿐이다
  • "Groovy 를 기반으로 한 오픈 소스로 안드로이드 앱 개발 환경에서 쓰인다"는 설명은 젠킨스가 아니라 Gradle 의 설명이다
  • 의존 라이브러리 내려받기와 버전 관리
  • 소스 컴파일, 리소스 처리
  • 단위 테스트 실행과 결과 보고
  • JAR·WAR·APK 같은 배포 단위로 패키징
  • 저장소 등록, 서버 배포
  • 코드 분석·문서 생성 같은 부가 작업