目录
一.UPLOAD(更新)
CATALINA_OPTS
-server -XX:+UseContainerSupport -XX:MaxRAMPercentage=70 -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Djava.security.egd=file:/dev/./urandom -Duser.timezone=GMT+08 -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -Duser.timezone=Asia/Shangha
#部署流水线
Pipeline流水线脚本
用到的Pythonjiao
node('jenkins-slave') {
stage('SVN Clone | Maven') {
sh '''
svn co --username xxxx --password xxxxxx svn://xxx.xxx.xx.xx/svn/ywf_java/${maven_job}/${svn} ${WORKSPACE}/${jobs_name}
echo "compole starting"
cd ${WORKSPACE}/${jobs_name}
/usr/local/maven/bin/mvn clean install -P product -Dmaven.test.skip=true -Dmaven.javadoc.skip=true
echo "compile over"
mkdir -p ${WORKSPACE}/ROOT
mv ${WORKSPACE}/${jobs_name}/${jobs_name}/target/${jobs_name}.war ${WORKSPACE}/ROOT
cd ${WORKSPACE}/ROOT
unzip ${jobs_name}.war
rm -rf ${jobs_name}.war
cd ${WORKSPACE}/
'''
}
stage('IMAGE Build') {
sh '''
BASE_IMAGE="linuxwei/jdk_tomcat:7.0.104-jdk8-adoptopenjdk-openj9"
echo "From ${BASE_IMAGE}" >> ${WORKSPACE}/Dockerfile
echo "ADD ROOT /usr/local/tomcat/webapps/ROOT" >> ${WORKSPACE}/Dockerfile
echo 'CMD ["catalina.sh", "run"]' >> ${WORKSPACE}/Dockerfile
'''
echo "3.Docker Build Stage"
sh '''
docker login --username=xxxxxx ccr.ccs.tencentyun.com --password xxxxxx
docker build -t ccr.ccs.tencentyun.com/ywf-online/${jobs_name}-online:${image_version} ${WORKSPACE}
docker push ccr.ccs.tencentyun.com/ywf-online/${jobs_name}-online:${image_version}
'''
}
stage('Deploy') {
echo "4. Deploy Stage"
sh'''
/usr/bin/python3 /home/jenkins/python3/jenkins_upload.py $jobs_name /home/jenkins/python3 ccr.ccs.tencentyun.com/xxxxx/${jobs_name}-online:${image_version} CATALINA_OPTS "$CATALINA_OPTS"
kubectl apply -f /home/jenkins/python3/$jobs_name-online.yaml
rm -rf /home/jenkins/python3/$jobs_name-online.yaml
kubectl rollout status -n apm deployment $jobs_name-online
'''
}
stage('Imagetags update'){
sh '''
/usr/bin/python3 /home/jenkins/python3/get_image_tags.py ywf-online/${jobs_name}-online /home/jenkins/image_tags/${jobs_name}-online.txt
'''
}
}
二.CREATE(创建)
CATALINA_OPTS
-server -XX:+UseContainerSupport -XX:MaxRAMPercentage=70 -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Djava.security.egd=file:/dev/./urandom -Duser.timezone=GMT+08 -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -Duser.timezone=Asia/Shangha
JAVA_TOOL_OPTIONS0 #这里加0是为了不与jenkins-slave这个Pod中的环境变量冲突,坑
-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle
Pipeline流水线脚本
node('jenkins-slave') {
stage('SVN Clone | Maven') {
sh '''
svn co --username xxxx --password xx svn://xxx.xx.xx.x/svn/ywf_java/${maven_job}/${svn} ${WORKSPACE}/${jobs_name}
echo "compole starting"
cd ${WORKSPACE}/${jobs_name}
/usr/local/maven/bin/mvn clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true
echo "compile over"
mkdir -p ${WORKSPACE}/ROOT
mv ${WORKSPACE}/${jobs_name}/${jobs_name}/target/${jobs_name}.war ${WORKSPACE}/ROOT
cd ${WORKSPACE}/ROOT
unzip ${jobs_name}.war
rm -rf ${jobs_name}.war
cp -r ${WORKSPACE}/ROOT/WEB-INF/classes/idc_config/* ${WORKSPACE}/ROOT/WEB-INF/classes/config/
cd ${WORKSPACE}/
'''
}
stage('IMAGE Build') {
sh '''
BASE_IMAGE="linuxwei/jdk_tomcat:7.0.104-jdk8-adoptopenjdk-openj9"
echo "From ${BASE_IMAGE}" >> ${WORKSPACE}/Dockerfile
echo "ADD ROOT /usr/local/tomcat/webapps/ROOT" >> ${WORKSPACE}/Dockerfile
echo 'CMD ["catalina.sh", "run"]' >> ${WORKSPACE}/Dockerfile
'''
echo "3.Docker Build Stage"
sh '''
docker login --username=xxxxx ccr.ccs.tencentyun.com --password xxxxxxx
docker build -t ccr.ccs.tencentyun.com/xxxxx/${jobs_name}-online:${image_version} ${WORKSPACE}
docker push ccr.ccs.tencentyun.com/xxxxxx/${jobs_name}-online:${image_version}
'''
}
stage('Deploy') {
echo "4. Deploy Stage"
sh'''
/usr/bin/python3 /home/jenkins/python3/create_deployment_yaml.py /home/jenkins/python3 "$jobs_name" "$pod_number" ccr.ccs.tencentyun.com/ywf-online/${jobs_name}-online:${image_version} "$port" "$cpu_limits" "$mem_limits" "$cpu_requests" "$mem_requests" "$JAVA_TOOL_OPTIONS0" "$CATALINA_OPTS"
kubectl apply -f /home/jenkins/python3/$jobs_name-online.yaml
rm -rf /home/jenkins/python3/$jobs_name-online.
kubectl rollout status -n apm deployment $jobs_name-online
'''
}
stage('Imagetags update'){
sh '''
/usr/bin/python3 /home/jenkins/python3/get_image_tags.py ywf-online/${jobs_name}-online /home/jenkins/image_tags/${jobs_name}-online.txt
'''
}
}
三.ROLLBACK(回滚)
执行SHELL
NAMESPACE=apm
kubectl set image deployment/${jobs_name}-online -n ${NAMESPACE} ${jobs_name}-online=ccr.ccs.tencentyun.com/ywf-online/${jobs_name}-online:${rollback_tag}
kubectl rollout status -n apm deployment $jobs_name-online