정보처리기사/소프트웨어 개발

빌드 자동화

glorypang 2025. 10. 25. 22:51
728x90
반응형
SMALL

1) 빌드 자동화란?

  • 소스에서 컴파일→테스트→패키징→배포 산출물 생성을 스크립트/도구로 일관되게 수행하는 것.
  • 목표: 재현성, 속도, 사람 의존 최소화, CI/CD 연계.

2) 공통 기능(무엇을 자동화하나)

  • 의존성 관리(다운로드/잠금)
  • 컴파일/트랜스파일/번들링/압축
  • 단위/통합 테스트 실행 & 리포트
  • 코드 품질(정적 분석, 커버리지)
  • 아티팩트 생성/서명/배포(리포지토리 업로드)
  • 버전·태깅·체인지로그 생성

3) 언어/플랫폼별 대표 도구

Java/JVM

  • Maven: 선언적 pom.xml, 의존성/라이프사이클 표준화 (mvn clean package)
  • Gradle: 스크립터블(최신은 Kotlin DSL), 속도 빠름, 대규모에 강함 (gradle build)
  • Ant: 스크립트 기반 레거시(요즘은 Maven/Gradle 선호)
  • (Scala) SBT, (Clojure) Leiningen

JavaScript/TypeScript

  • npm / Yarn / pnpm: 패키지&스크립트 러너 (npm run build)
  • Vite / Rollup / webpack / Parcel / esbuild: 번들러/빌드 툴
    • 앱은 Vite/webpack, 라이브러리는 Rollup 선호 경향

.NET

  • MSBuild / dotnet CLI: 공식 빌드 (dotnet build, dotnet test)
  • Cake / FAKE: C#(F#)로 빌드 스크립트

Python

  • setuptools / wheel / build: 패키징 (python -m build)
  • Poetry: 의존+빌드 일원화 (poetry build)
  • tox / nox: 멀티 환경 테스트/툴 체인 자동화

C/C++

  • Make: 전통적 빌드 자동화 (make)
  • CMake: 크로스 플랫폼 생성기(→ Ninja/Make)
  • Ninja / Meson: 빠른 빌드 시스템

Go / Rust / Kotlin

  • Go: go build, go test (툴체인 내장)
  • Rust: Cargo (cargo build, cargo test)
  • Kotlin/JVM: Gradle(공식); Kotlin Multiplatform도 Gradle

4) 컨테이너/클라우드 빌드

  • Docker / BuildKit: 이미지 빌드(docker build), 멀티스테이지로 슬림화
  • Buildpacks (pack/Cloud Native Buildpacks): 소스→이미지 자동화(도커파일 없이)
  • Kaniko / Buildx: CI에서 권한/플랫폼 확장 빌드
  • K8s 배포 자동화: Helm, Kustomize

5) 모바일

  • Android: Gradle(Android Plugin) (./gradlew assembleRelease)
  • iOS: xcodebuild, fastlane(서명/배포 자동화)

 

728x90
반응형
LIST