项目代码
流水线设计

#!groovy //下载源码 String srcUrl = "${env.srcUrl}" String branchName = "${env.branchName}" //打包 String buildType = "${env.buildType}" String buildShell = "${env.buildShell}" pipeline { agent { node { label 'master' } } stages { stage('GetCode') { steps { script { checkout([$class: 'GitSCM', branches: [[name: '${branchName}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'gitlab', url: '${srcUrl}']]]) } } } stage('Build') { steps { script { mvnhome = tool "M2" sh "${mvnhome}/bin/mvn ${buildShell}" jarName = sh returnStdout: true, script: "cd target && ls *.jar" jarName = jarName - "\n" sh "cp target/${jarName} /root" } } } stage('Test') { steps { script { println("dan'yuan单元ce'shi") } } } stage('Deploy') { steps { script { println("ansible bu shu......") sh "java -jar /root/${jarName}" } } } } }
部署结果
Jenkins设置自己的全局环境变量
maven打包问题处理
jenkins控制日志内容的输出
有些执行命令的内容不方便在日志中打印出来
sh "/home/jenkins/a.sh 2>&1 >/dev/null" 显示结果如下
把需要执行的命令提取到一个单独的脚本进行调用即可

[jenkins]$ vi a.sh #!/bin/bash +x /usr/local/sbin/kubectl --kubeconfig /home/jenkins/kubectl/k8s-cluster/siem-cluster/kube_config_rancher-cluster.yml replace -f /home/jenkins/kubectl/k8s-cluster/siem-cluster/config-center.yml --force echo "a.sh 执行完毕"
详细的命令信息不再进行显示输出
jenkins使用内置变量
jenkins流水线执行命令的默认路径就是当前项目的工作目录空间 所以不需要cd到项目工作目录下执行指令
应用版本迭代的管理

# 设置变量 project="demo" version=`date +%Y%m%d%H%M%S` port=9001 # 编译镜像 docker build -t 192.168.0.153/demo/$project:$version . # 登录远程Harbor仓库 echoGreen "开始登录远程Harbor仓库" docker login -u $harbor_user -p $harbor_pwd $harbor_host [ $? != 0 ] && echoRed "请注意,登录Harbor时出错!" && exit 1 echoGreen "开始push新镜像" docker push $harbor_host/demo/$project:$version [ $? != 0 ] && echoRed "请注意,在执行push上传时出错!" && exit 1 docker rmi $harbor_host/demo/$project:$version #更新镜像 echoGreen "开始将新镜像部署到远端" rancher kubectl set image deployment/$project $project=192.168.0.153/demo/$project:$version -n demo [ $? != 0 ] && echoRed "在执行镜像更新时出错" && exit 1 echoGreen "部署完成!"