Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- spring
- jenkins jdk
- IntelliJ
- jenkins github 연동
- jenkins install
- nginx
- gradle
- grafana
- Jenkins Pipeline
- CI/CD
- JavaScript
- MongoDB
- vue.js
- Docker
- Spring Boot
- jenkins maven
- REACT
- jenkins github
- error
- MySQL
- jpa
- docker network
- grpc
- java
- Linux
- 리액트
- 리눅스
- jenkins 설치
- subnetmask
- Jenkins
Archives
- Today
- Total
뭐든 즐기면서 ;)
Jenkins 자동배포 설정 3 - pipleline 작성3(Tomcat 실행) 본문
728x90
Jenkins 자동배포
1. GitHub연결
2. Maven 설정
3. pipleline 작성
- Pipeline에 Tomcat을 실행할 shell script를 작성합니다. stage('Server Start') 부분을 보시면 되고, Tomcat은 서버내에 설치되어 있다고 가정하고 진행하겠습니다. (아래, pipeline의 간단한 문법을 설명드리겠습니다.)
- dir('shell이 실행될 경로') { sh 'shell 작성' }
- sh 명령어를 쓰는 방법은 2가지가 있습니다. 아래 pipeline script를 참고하면 이해에 도움이 될 것 같습니다.
- sh '''한 번에 여러 줄의 shell을 작성할 수 있습니다.''' (작은 따옴표 3개)
- sh "한 줄에 하나의 shell 명령어만 실행할 수 있습니다." (큰 따옴표 1개)
pipeline {
agent any
environment {
jenkins_wksp = "${JENKINS_HOME}/workspace/${JOB_NAME}"
module = "front"
build_modue = "gather-${module}"
}
tools {
maven "M3"
jdk "JAVA8"
}
stages {
stage('git checkout') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/canary_new']], extensions: [], userRemoteConfigs: [[credentialsId: 'github', url: 'https://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@github.com/mindslab-ai/data-edit-tool.git']]])
}
}
stage('Build') {
steps {
echo "====================== START packaging ========================="
sh "cd ${jenkins_wksp}"
sh "mvn -pl ./gather-common clean install"
sh "mvn -pl ./${build_modue} clean package"
}
}
stage('Server Start') {
steps {
echo "====================== ${build_modue} Server Start ========================="
dir('../../tomcat/operator-tomcat-8.5.81'){
sh '''
./bin/shutdown.sh
rm -rf ./webapps/ROOT
mv ./webapps/ROOT.war ./webapps/ROOT.$(date +%Y%m%d)$(date +%H)$(date +%M)$(date +%S).bak
sleep 1
mv ${jenkins_wksp}/${build_modue}/target/*.war ./webapps/ROOT.war
sleep 2
JENKINS_NODE_COOKIE=dontKillMe
./bin/startup.sh
'''
}
}
}
}
}
* pipeline 내용 중 'JENKINS_NODE_COOKIE=dontKillMe'에 대해 설명드리겠습니다.
jenkins의 pipeline script는 모든 프로세스를 진행하고, 연관된 프로세스들과 함께 죽게 되어 있습니다. 한마디로, 위 문구 없이 pipeline을 작성하면 Tomcat은 실행된 후 바로 종료될 것입니다. 이를 해결하기 위한 문구이며, 해당 문구 다음에 작성된 명령어는 백그라운드로 실행되어질 것입니다.
728x90
'서버 > JENKINS' 카테고리의 다른 글
Jenkins NodeJS를 이용한 CI/CD (0) | 2023.10.06 |
---|---|
Jenkins Error : Exec exit status not zero. Status 126 (0) | 2023.03.30 |
Jenkins 자동배포 설정 3 - pipleline 작성2(Maven Build) (0) | 2022.10.05 |
Jenkins Pipeline item별 JDK 설정 방법 (0) | 2022.10.05 |
Jenkins 자동배포 설정 3 - pipleline 작성1(Git Checkout) (0) | 2022.09.30 |
Comments