이번에는 각종 설정값을 빌드 스크립트에 하드코딩하기 보다는 외부로 빼내어 관리하는 방법을 살펴보겠습니다.
Ant에서는 key=value 형식으로 외부 properties 파일을 이용하고, Maven에서는 사용자홈 경로의 settings.xml 또는 pom.xml 경로의 profiles.xml를 통해 설정정보를 분리합니다. Ant, Maven 모두 스크립트 실행시에 -Dkey=value 형식으로 설정을 입력하는 것도 가능합니다.
Ant와 Maven이 'key=value'라는 1차원적인 프로퍼티 형식으로 설정값을 기록하는 것을 선호한다면, rake나 Buildr은 YAML을 활용하는 2차원적인 트리 형식을 선호합니다. buildfile에서 설정값을 외부로 빼내는 방법은 크게 4가지가 있습니다.
1. 환경변수
스크립트 실행시 key=value 형식으로 입력하면 스크립트에서는 ENV['key']로 값을 받을 수 있습니다. 만약 key에 해당하는 운영체제 환경변수가 있으면 그것을 리턴합니다.
puts ENV['JAVA_HOME']
puts ENV['password']
2. settings.yaml
Buildr을 사용하게 되면 사용자홈/.buildr 디렉토리에 settings.yaml 파일이 생기는데, 여기에 (주로 개발자 개인적인) 설정을 포함할 수 있습니다.
remote :
- http://www.ibiblio.org/maven2/
- http://repository.codehaus.org/
- http://download.java.net/maven/2/
messenger:
server: jabber.company.com
usr: notifier@company-jabber.com
pwd: secret
settings.yaml에 위와 같은 설정이 있으면 스크립트에서는 Buildr.settings.user 속성(Hash)을 통해 값을 읽어옵니다.
puts Buildr.settings.user['messenger']['server']
usr, pwd = Buildr.settings.user['messenger'].values_at('usr', 'pwd')
3. build.yaml
buildfile과 같은 위치의 build.yaml 파일에 (주로 개발자 사이에 공유할) 설정데이터를 넣을 수 있습니다.
spring: org.springframework:spring:jar:2.0
log4j: log4j:log4j:jar:1.0
j2ee: geronimo-spec:geronimo-spec-j2ee:jar:1.4-rc4
jira:
uri: https://jira.corp.org
build.yaml에 위와 같은 설정이 있다면, 스크립트에서는 Buildr.settings.build 속성(Hash)으로 설정에 접근할 수 있습니다.
puts Buildr.settings.build['jira']['uri']
4. profiles.yaml
buildfile과 같은 위치의 profiles.yaml은 Maven의 profiles.xml과 동일한 역할을 합니다. 보통 빌드환경이 달라지면 다른 설정값이 요구되는데, 이는 프로파일을 통해 관리할 수 있습니다. 즉 프로파일은 빌드환경에 따라 설정값을 다르게 가져가는 것을 말합니다.
development, test, staging, production 등의 빌드환경 중에서 Buildr은 기본적으로 'development' 빌드환경에서 실행됩니다. 빌드 환경은 빌드스크립트 실행시 -e 옵션으로 바꿀 수 있습니다.
빌드 스크립트에서 현재 적용된 빌드환경 값은 Buildr.environment 메소드로 확인 가능합니다.
profiles.yaml에는 이렇게 선택된 빌드환경에 따라 어떤 설정값을 쓸지 YAML 형식으로 적어줍니다.
db: hsql
jdbc: hsqldb:mem:devdb
resource_ext: dev
wasserver:
host: 111.111.111.111
username: testuser
password: test1234
deploy_dir: /home/test/deploy/war
restart: sh restart.sh
production:
db:oracle
jdbc: oracle:thin:@bigstrong:1521:mighty
resource_ext: prod
wasserver:
host: 222.222.222.222
username: realuser
password: realpass
deploy_dir: /home/prod/deploy/war
restart: cd /bea/user_projects/domains/mydomain;./stop.sh;./start.sh
프로파일의 설정값은 빌드 스크립트에서 Buildr.settings.profile 메소드로 읽어옵니다.
puts Buildr.settings.profile['wasserver']['username'] # 현재 적용된 빌드환경의 설정값
puts Buildr.settings.profiles['production']['wasserver']['username'] # production 환경의 설정 값
'Build&Deploy > Buildr' 카테고리의 다른 글
Buildr : Hudson CI 연계하기 (0) | 2009.01.14 |
---|---|
Buildr : 원격 서버에 배포하기 (0) | 2008.12.26 |
Buildr : 코드분석 리포트 생성 (0) | 2008.12.23 |
Buildr : 빌드결과 패키징 (0) | 2008.12.18 |
Buildr : 아티팩트 다운로드 받기 (0) | 2008.12.17 |