Freestyle project 의 UI 에서 설정한 빌드/배포 등을 pipeline script 로도 작성할 수 있다.
또한 Multibranch Pipeline item 을 사용하여 Jenkinsfile 과 함께 작성할 수도 있다.
하지만 결론부터 얘기하자면... 난 script 로 작성하는 것을 실패했다 ㅜ
빌드까지는 문제 없었지만 Publish Over SSH 플러그인을 사용하여 배포하는 부분을 script 로 변환하는데 실패했다. 내공 부족 ㅜ
일단 Freestyle project UI 만으로 Product/Development 코드 분리와 모듈별 web/api/cms 부분을 빌드하는데 별 문제가 없으니 일단은 그냥 진행하는걸로...;
Build
기존에는 Product/Development 코드를 build.gradle 에 변수 값을(dev/prod)를 바꿔가며 해당 properties 를 가져와 배포했었다.
이부분의 변수를 gradle task 에서 전달하는 것으로 변경했다.
- From build.gradle
environment = 'dev' //environment = 'prod' | cs |
- To build.gradle
def deployType if (project.hasProperty("deployTypeParam")) { deployType = deployTypeParam } else { deployType = "dev" } environment = deployType | cs |
이러면 빌드 파라미터에 deployTypeParam 가 있다면 그 값을 적용할 것이고, 없다면 dev 값으로 설정 파일들을 가져올 것이다.
그래고 product 서버에 배포할 때는 [Build] - [Tasks] 에 다음과 같이 설정한다. (ex. web module)
:web:build -PdeployTypeParam='prod'
Configuration
그리고 Jenkins 기본 설정으로 포트와 타임존을 변경했다.
포트는 기본 8080 을 iptables 에서 80 으로 변경했고,
타임존은 /etc/sysconfig/jenkins 파일에 다음 줄을 추가했다.
JENKINS_JAVA_OPTIONS="-Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Seoul" | cs |
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.