빌드 자동화

반응형

출처 : http://www.hybrid.pe.kr/tt/384#footnote_link_384_1

조엘 온 소프트웨어(영어 링크, 한국어 링크) 에 일별 빌드에 대한 좋은 글이 있다. 글의 제목은 '일별 빌드(Daily Builds)가 당신 곁에 있습니다(한국어판).' 으로, 여기서는 매일 빌드 하는 강조하지만, 나는 그것보다 작은 단위로, 그냥 일괄적으로 빌드 하는 것에 대해서 정리해보려고 한다. 더 많은 방법이 있고, 더 효율적인 방법도 많을 것이다. 일단 시작은 Batch 파일부터 시작하기로 했다.

Bach 파일 작성에 관한 참고 문헌
  1. mwultong Blog - 배치파일(.BAT) IF 조건문 사용법 기초 강좌; DOS Batch File IF
자동화 빌드에 대한 참고 문헌 :
  1. Games from Within - The Quest for the Perfect Build System
  2. Joel on Software - Daily Builds Are Your Friend
앞으로 예정된 글(순서나 내용이 수정/추가 될 수 있다)
  1. 빌드 자동화 하는법 - 1. 배치(batch) 파일
  2. 빌드 자동화 하는법 - 2. xcopy
  3. 빌드 자동화 하는법 - 3. Visual Studio 관리
  4. 빌드 자동화 하는법 - 4. SVN 사용하기
  5. 빌드 자동화 하는법 - 5. 프로젝트 자동 생성하기(premake)
  6. 빌드 자동화 하는법 - 7. 일일 빌드(CRONw)
  7. 빌드 자동화 하는법 - 6. 통합하기(요약), 그리고 팁

1. 배치(batch) 파일을 이용한 일괄 작업
확장자가 bat 파일로써, 콘솔 화면에서 순차적으로 이루어지는 작업을 할때 사용된다. 일괄처리를 가장 간단하게 만들 수 있다고 봐도 된다. 위에 말한 xcopy 라던가 외부 프로그램이나 외부 배치파일 실행 등을 텍스트 형식으로 넣으면 된다.

사실 기본적으로 bat 파일은 그냥 명령어의 나열로 사용되기 쉬운데, 사실상 제법 많은 기능들이 있다[1].

몇가지 사용하는 명령어만 정리해본다.
(1) echo
echo on(디폴트) : 배치 파일에서 실행하는 실행 명령어를 보여준다.
echo off : 배치 파일에서 실행하는 실행 명령어를 보여 주지 않고 해당 명령어의 결과만 나오게 된다.

사용예
-- test.bat --
echo on
dir
-- 화면 --
e:\...\Hybrid>test.bat
e:\...\Hybrid>echo on
e:\...\Hybrid>dir
....... dir 내용 ........

사용예
-- test.bat --
echo off
dir
-- 화면 --
e:\...\Hybrid>test.bat
e:\...\Hybrid>echo off
....... dir 내용 ........

echo off 를 @echo off 로 바꾸면 echo off 라는 명령어 자체도 안보이게 된다.

또한 echo 는 메세지 출력 기능도 있다.
e:\...\Hybrid>echo Echo Test!
Echo Test!

(2) pause
pause 는 사용자가 아무 키를 입력할 때까지 대기한다.

(3) argument
%1, %2, ... 로 사용할 수 있다. 역시 예를 들면

-- test.bat --
@echo off
echo %1
dir %2
-- 화면 --
e:\...\Hybrid>test.bat TestMessage *.exe
TestMessage
(dir *.exe 내용 ...)

(4) if 문
if 문은 콘솔 창에서 if /? 로 자세히 살펴볼 수 있다.
그냥 예제만 봐도 대충은 알 수 있을 것이다(아무 의미 없는 프로그램이다. 뭐하는 프로그램인가 고민하지 마시길... -_-ㅋ).

-- test.bat --
@echo off
if "%1" =="dir" (
  dir /w
) else (
  if exist "%1" (
    call %1
    goto exit
  ) else (
    echo error
  )
)
:exit

call 명령어는 외부 프로그램(배치파일 포함)을 실행할때 사용하는 명령어다.

(5) ERRORLEVEL
마지막으로 if 문에서 사용 되는 옵션 중에 ERRORLEVEL 이 있는데, 이건 외부 프로그램과 연동할 때 매우 중요하다.
c 프로그램에서, int main() 에서 마지막은 항상 retrun 0; 으로 끝난다고 배워왔었는데, 이 마지막 값은 사실은 errorlevel 로써 0 이면 오류가 없는 것을 뜻하고, 0이 아닌 값은 오류를 뜻한다.

프로그램마다 규칙이 다르니 알맞게 적용하면 된다.
-- test.bat --
@echo off
call %1
if ERRORLEVEL 0 (
  echo Success
) else
  echo Fail
)

(6) 기타
DOS/WIndows 의 batch 파일의 기능은 타 스크립트에 비해 현저하게 떨어지는 것은 사실이지만, 잘만 쓰면 꽤 괜찮은 기능들을 잘 활용할 수 있다.
SET 으로 지정되어 있는 시스템 변수도 활용할 수 있고, for 문도 존재한다(for /? 로 자세히 알아볼 수 있다). 더 복잡한 기능들을 원한다면 어서 빨리 다른 스크립트로 가는게 나을지 모르지만, 이 기본적인 bach 파일은 다른 것들을 추가로 설치할 필요도 없고 간단하게 작업할 때 매우 유용할 수 있다.

추가 읽을만한 글 : http://www.gpgstudy.com/forum/viewtopic.php?t=7692
TAGS.

Comments