Quick Flow
source + dependency lock + toolchain + build config
-> generate / compile / link
-> test / asset processing
-> package
-> versioned artifact + symbols + manifestCompile은 build의 한 단계입니다. Build 성공은 source가 목적 코드로 바뀌었다는 뜻을 넘어 필요한 asset과 runtime dependency가 배포 가능한 결과물로 모였는지까지 포함할 수 있습니다.
입력과 출력
Build 입력에는 source뿐 아니라 compiler version, dependency lock, environment variable, target architecture와 Debug·Release config가 들어갑니다. 같은 commit에서 결과가 달라지면 숨은 network dependency, timestamp, machine path와 toolchain 차이를 찾습니다.
Artifact는 실행 파일, library, package, source map·symbol과 asset bundle처럼 이후 단계가 소비하는 고정 결과물입니다. CI에서는 한 번 만든 artifact를 test와 deploy가 공유해야 “검사한 결과와 배포한 결과”가 달라지는 문제를 줄일 수 있습니다.
실패 위치
Syntax·type 오류는 compile, unresolved symbol은 link, 누락된 asset·manifest는 packaging, 대상 환경의 DLL·권한 문제는 startup 단계로 좁힙니다. Cache 문제를 의심할 때는 무조건 전체 삭제하기 전에 어떤 입력 key가 빠졌는지 확인합니다.
자주 틀리는 점
- Local machine에 우연히 설치된 SDK를 암묵적 dependency로 두지 않습니다.
- Debug와 Release artifact를 같은 이름으로 덮어쓰지 않습니다.
- Build number와 source commit·dependency version을 추적 가능하게 남깁니다.
- Build 성공을 runtime 동작 검증과 같은 것으로 보지 않습니다.
참고 링크
2 sources