jenkins(二)
Pipeline语法速成
背景描述:
为了交付文档,先写个速成的版本,目的是供其他同事基于此模板快速配置使用,后续要继续深入研究。
查资料的时候看到了这个文章:
深知自己在这方面还是个弟弟,还是要继续深入学习。
1.语法模板
配置:
pipeline {
agent any
stages {
stage('pullcode'){
steps{
checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: ''
, excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: ''
, locations: [[cancelProcessOnExternalsFail: true, credentialsId: 'd4dc650e-a10e-487a-bad9-d6dbf7ee4f45', depthOption: 'infinity'
, ignoreExternalsOption: true, local: '.', remote: 'http://39.98.82.231:86/svn/gkg/ws/ws/trunk']], quietOperation: true
, workspaceUpdater: [$class: 'UpdateUpdater']])
}
}
stage('Build') {
steps {
sh '''
echo "开始编译打包过程"
mvn clean && mvn package -DskipTests=true
echo "编译打包过程结束"
'''
}
}
stage('Test'){
steps {
sh 'echo "Test stage"'
}
}
stage('Deploy') {
steps {
withEnv(['JENKINS_NODE_COOKIE=dontkillme']) {
sh '''
echo "关闭服务"
ssh root@192.168.124.9 "cmd /c net stop jenkins_test"
echo "删除原始文件"
ssh root@192.168.124.9 "cmd /c rd/s/q D:/root/apache-tomcat-8.5.24/webapps"
echo "开始使用scp传输文件"
scp "${WORKSPACE}/target/ws.war" root@192.168.124.9:/
echo "开始调用远程tomcat进行重启"
ssh root@192.168.124.9 "cmd /c net start jenkins_test"
'''
}
}
}
}
}
1.1概述
这段脚本定义了四个步骤:pullcode
、Build
、Test
、Deploy
即获取代码、编译、测试、发布。
1.2pullcode
获取代码
参考
《jenkins使用文档》2.5生成获取代码语句
将生成的代码直接复制到:
stage('pullcode'){
steps{
//复制到此处
}
}
1.3Build
编译代码
sh 声明使用shell命令 使用shell执行后面的命令
Pipeline使用groovy的语法,三个```包裹的内容是一个字符串,并可以在其中引用变量
echo shell输出命令
mvn clean && mvn package -DskipTests=true mvn命令,打包并跳过测试,可根据自己的需求指定参数
1.4Test
目前没有测试环节,暂时跳过
1.5Devlop
withEnv(['JENKINS_NODE_COOKIE=dontkillme']) {}
用于声明该模块下的语句进程终止后,不关闭子进程
之前已经配置好了jenkins与部署服务器之间的通信,可以直接使用ssh操作远程服务器:
ssh root@192.168.124.9 "cmd /c net stop jenkins_test"
在192.168.124.9服务器上执行“net stop jenkins_test”命令,关闭jenkins_test服务(注册的tomcat服务)
ssh root@192.168.124.9 "cmd /c rd/s/q D:/root/apache-tomcat-8.5.24/webapps"
在192.168.124.9服务器上执行“rd/s/q D:/root/apache-tomcat-8.5.24/webapps”命令,删除rd/s/q D:/root/apache-tomcat-8.5.24/webapps路径下所有文件及文件夹
scp "${WORKSPACE}/target/ws.war" root@192.168.124.9:/
使用scp传输文件
WORKSPACE为环境变量,是该项目的路径
scp后面跟的是需要传输的文件,需要根据各位编译打包生成的文件名修改该参数,也可以使用合适的环境变量使用动态的语句。
scp后面第二个参数跟传输目标:root是登录远程服务的身份;@号跟ip地址;:后跟路径。该路径根据目标服务器而定,如果根据《jenkins使用文档》1.1windows 配置ssh服务,则/对应的是freeSSHd配置的SFTP home path。其他路径依此路径改写。
ssh root@192.168.124.9 "cmd /c net start jenkins_test"
在192.168.124.9服务器上执行“net start jenkins_test”命令,开启jenkins_test服务(注册的tomcat服务)