项目代码
流水线设计
#!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}"
}
}
}
}
}
View Code
部署结果
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 执行完毕"
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 "部署完成!"
版本管理