Jenkins의 pipeline을 사용해서 빌드 시퀀스 만들어보자.
작성자: ospace114@empal.com, http://ospace.tistory.com/
Plugins
- Parameterized Trigger Plugin: 변수기반(버전 정보, 빌드/패키지 세부 정보를)으로 다운스트림으로 전달)
- Promoted Build Plugin: 특정 빌드를 향후 테스트나 릴리즈용으로 만드는 방법
- Post build task plugin: 피드백 루프(상태 자동 알림)를 구현할 때 스크립트를 실행하거나 다운 스트림 작업 상태에 따라 전자메일 보냄.
- Delivery pipeline pluing: 파이프라인에 대한 고수준의 실시간 개요 상태 제공
기본 시퀀스
기본적인 빌드 시퀀스를 생성해보았다.
node {
def GIT_URL = "http://git.trgtech.myds.me/360Station/admin.git"
def REMOTE_DIR = "/usr/local/www/360station_admin"
stage('Ready') {
git branch:'develop', credentialsId:'ac28d946-afbc-4cf5-9085-adb55803ff0e', url:"${GIT_URL}"
}
stage("Build") {
sh "mvn -Dmaven.test.skip=true clean compile"
}
stage("Package") {
sh "mvn package"
}
stage("Deploy") {
VERSION = readMavenPom().getVersion()
ARTIFACT = readMavenPom().getArtifactId();
DEPLOY_FILE = "${ARTIFACT}-${VERSION}.war"
sh "echo 'Depoly ${DEPLOY_FILE}...'"
sshagent (credentials:['af0a483c-162b-468d-a755-36ff16b05012']) {
sh """
ssh -v -o StrictHostKeyChecking=no -l root 192.168.0.10 uname -a
scp target/${DEPLOY_FILE} root@192.168.0.10:${REMOTE_DIR}
ssh -o StrictHostKeyChecking=no -l root 192.168.0.10 "
ln -sf ${DEPLOY_FILE} ${REMOTE_DIR}/${ARTIFACT}.war
${REMOTE_DIR}/360admin.sh restart
"
"""
}
}
}
readMavenPom을 사용하고 싶다면 pipeline utility steps 플러그인 설치
sshagent 사용상 주의사항으로 username/password 방식은 사용이 불가. ssh 자체에서 미지원하기 때문에 키기반으로 처리해야함.
만약 username/password 방식을 사용할 경우 sshpass을 사용해야하고 젠킨스의 credentials을 사용할 수 없고 직접 password을 입력해야함.
sshpass -p 'psssword' ssh …
Publish Over SSH 플러그인 설치
SSH 서버 설정은 Manage Jenknins > Configure System에서 Publish over SSH 항목
상단에 jenkins에서 사용할 공통 키를 입력할 수 있고, SSH Server 추가시 키가 다른 경우 별도로 입력할 수 있음.
젠킨스의 특정 Job의 빌드 히스토리 작업 모두 제거
item = Jenkins.instance.getItemByFullName("Foo")
item.builds.each() { build ->
build.delete()
}
item.updateNextBuildNumber(1)
참고
[1] https://shortstories.gitbooks.io/studybook/content/jenkins\_pipeline\_c0bd\_c9c8\_ae30.html
[2] https://www.jenkins.io/doc/pipeline/examples/
반응형
'4.개발 및 운영 환경' 카테고리의 다른 글
구글 FCM 사용하기 (2) | 2023.10.23 |
---|---|
[Linux] Debian 데비안에서 Bluetooth 구성 (0) | 2022.12.17 |
[jenkins] JNLP 사용하기 (0) | 2021.11.12 |
[jenkins] LDAP 설정 (0) | 2021.11.12 |
[docker] docker image 다이어트하기 (0) | 2021.05.05 |