liunx关于pipeline的概念以及语法都可以去https://www.w3cschool.cn/jenkins/jenkins-e7bo28ol.html浏览!
一、Liunx环境部署
二、jenkins环境搭建
三、jenkins环境准备:
1.JDK、Git、Maven配置(环境变量)
进入"系统管理",选择“Global Tool Configuration”,
以JDK举例:别名:插件标识,给自己看的,方便识别;
JAVA_HOME:JDK的安装路径
2.全局属性设置(系统环境变量)
“系统管理”->"系统设置",“全局变量”:键值对列表,键:PATH(标识id);值:git、jdk等的执行路径
3.邮箱设置
进入“系统管理”,选择“系统设置”,
(1)、找到"jenkins Location“;
jenkins URL是默认的,可以不用修改,
系统管理员邮件地址:写发件人的邮箱
(2)、找到“邮件通知”
SMTP服务器:遵循SMTP 协议的发送邮件服务器;SMTP是邮件传输协议;
用户默认邮件后缀:接受邮件的用户的邮件后缀
用户名:发件人的邮箱地址
密码:发件人的邮箱密码
通过发送测试邮件测试配置:点击测试按钮“Test configuration”,如果邮件配置正确的情况下,接受人就能够接受到一封测试邮件
4.全局凭证创建
(1)jenkins服务器登录节点服务器的凭证创建,Credentials->System->Global credentials(unrestricted),选择"Add credentials"新增凭证
(2)创建jenkins服务器访问GitHub的凭证
5.linux节点创建
选择“系统管理”里的“节点管理“,然后新建节点
四、构建pipeline项目
创建pipeline风格的项目,自动部署后端的测试环境,从部署代码、移动代码到目标目录、kill掉tomcat服务,重启tomcat服务,最后发送构建邮件等整个流程
pipeline{ //参数 parameters{ string(name:'Agent_47',defaultValue:'TEST_2',description:'目标节点服务器') string(name:'Node_GitUrl',defaultValue:'/home/Node_Git',description:'目标节点服务器的工作空间路径') string(name:'Pro_URL',defaultValue:'/home/pro',description:'目标节点服务器的项目部署环境路径') string(name:'Cred_ID',defaultValue:'3619798a-5cf2-4f0b-b9b1-4320faf7c4f7',description:'节点服务器和git服务器之间的凭证') string(name:'GitHub_Addr',defaultValue:'ssh://XXXX@git.wowocai.com:29418/SQA/Automation/XXX/CRM',description:'git仓库地址') string(name:'MAS',defaultValue:'master',description:'git仓库分支标识') string(name:'Pro_Name',defaultValue:'XXX_crm',description:'项目ID') string(name:'Tomcat_Start',defaultValue:'/usr/data/XXX_crm/bin/startup.sh',description:'项目的tomcat启动文件') string(name:'Build_Result',defaultValue:'构建失败,\n构建成功',description:'构建结果') string(name:'Email_Reception',defaultValue:'XXXXX@qq.com',description:'邮件接收人') } //执行者||工作区间,执行路径:Node_GitUrl agent{ node{ label params.Agent_47 customWorkspace params.Node_GitUrl } } //options{ //整个项目的执行时间是0.1小时 // timeout(time:0.1,unit:'HOURS') //项目执行失败,重试3次,3次后再失败则宣告失败 // retry(3) // } //为每个阶段(stage)建设自己的执行者或者工作区间|节点 stages{ stage('参数初始化'){ steps{ script{ def BUILD=params.Build_Result.split(",") build_faild = BUILD[0] build_success = BUILD[1] } } } stage('清除工作空间'){ //steps最小执行单元,cleanWs():清除工作空间 steps{ cleanWs() } } stage('代码获取'){ steps{ git credentialsId:params.Cred_ID, url:params.GitHub_Addr, branch:params.MAS } } stage('清楚FSDK项目的CRM所有文件'){ steps{ sh "rm -rf ${params.Pro_URL}/${params.Pro_Name}*" } } stage('推送最近拉取的FSDK项目的CRM所有文件'){ steps{ sh "mv ${params.Pro_Name} ${params.Pro_URL}" } } stage("环境部署"){ steps{ //判断fsdk_crm的进程是否存在,如果不存在则重新启动,如果存在则kill掉该进程,然后重新启动 sh '''count=`ps -ef |grep fsdk_crm|grep -v "grep" |cut -c 9-15` if [ $? -eq 0 ] then /usr/data/fsdk_crm/bin/startup.sh sleep 30 else `kill -9 $count` /usr/data/fsdk_crm/bin/startup.sh sleep 30 fi''' // sh "ps -ef|grep fsdk_crm|grep -v grep|cut -c 9-15|xargs kill -9" } } } post{ failure{ echo "构建失败" emailext body: '''**************************************<br> XXX测试环境 ${build_faild} <br> **************************************<br>''', subject: 'Test', to:params.Email_Reception } success{ echo "构建成功" emailext body: '''**************************************<br> ${build_success} XXX测试环境已提测部署<br> **************************************<br>''', subject: 'Test', to:params.Email_Reception } } }
构建结果: