Loading... # 一、简要描述 * **Pipeline-拉取Git代码操作** * **Pipeline-Maven构建项目** * **Pipeline-Sonarqube检测代码质量** * **Pipeline-通过Docker制作自定义镜像** * **Pipeline-推送镜像到harbor** * **Pipeline-通知目标服务器部署项目** * **Pipeline-构建后钉钉通知消息** # 二、Pipeline-拉取Git代码操作 ## 1、Jenkins项目构建详情,进入配置详情  ## 2、添加参数化构建过程,增加Git参数,根据tag版本部署   ## 3、进入流水线语法  ## 4、在流水线脚本片段生成器中,选择Git流水脚本的生成  ## 5、填写项目Git相关信息   ## 6、Git信息填写完成,生成流水线脚本  ## 7、在Java Springboot项目工程中,复制生成好的流水线脚本到Jenkinsfile文件中,并提交到Gitlab仓库中 ``` // 所有的脚本命令都放在pipeline中 pipeline { // 指定任务再哪个集群节点中执行 agent any // 声明全局变量,方便后面使用 environment { key = 'value' } stages { stage ('拉取git仓库代码') { steps { checkout([$class:'GitSCM', branches: [[name:'${tag}']], extensions: [], userRemoteConfigs: [[credentialsId:'b62b7b20-3b03-46e7-8f8b-09ab5efe0f12', url:'http://192.168.95.130:8929/root/jenkins-publish-demo.git']]]) } } stage ('通过maven构建项目') { steps { echo '通过maven构建项目 - SUCCESS' } } stage ('通过Sonarqube做质量检测') { steps { echo '通过Sonarqube做质量检测 - SUCCESS' } } stage ('通过Docker制作自定义镜像') { steps { echo '通过Docker制作自定义镜像 - SUCCESS' } } stage ('通过Publish Over SSH通知目标服务器') { steps { echo '通过Publish Over SSH通知目标服务器 - SUCCESS' } } } } ```  ## 8、在Jenkins管理后台,进入项目部署详情,立即构建测试部署  ## 9、查看构建日志   # 三、Pipeline-Maven构建项目 ## 1、进入流水线语法  ## 2、在流水线脚本片段生成器中,选择shell脚本  ## 3、在Java Springboot项目工程中,复制生成好的流水线脚本到Jenkinsfile文件中,并提交到Gitlab仓库中 ``` // 所有的脚本命令都放在pipeline中 pipeline { // 指定任务再哪个集群节点中执行 agent any // 声明全局变量,方便后面使用 environment { key = 'value' } stages { stage ('拉取git仓库代码') { steps { checkout([$class:'GitSCM', branches: [[name:'${tag}']], extensions: [], userRemoteConfigs: [[credentialsId:'b62b7b20-3b03-46e7-8f8b-09ab5efe0f12', url:'http://192.168.95.130:8929/root/jenkins-publish-demo.git']]]) } } stage ('通过maven构建项目') { steps { sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTests' } } stage ('通过Sonarqube做质量检测') { steps { echo '通过Sonarqube做质量检测 - SUCCESS' } } stage ('通过Docker制作自定义镜像') { steps { echo '通过Docker制作自定义镜像 - SUCCESS' } } stage ('通过Publish Over SSH通知目标服务器') { steps { echo '通过Publish Over SSH通知目标服务器 - SUCCESS' } } } } ```  ## 4、在Jenkins管理后台,进入项目部署详情,立即构建测试部署  ## 5、查看构建日志   # 四、Pipeline-Sonarqube检测代码质量 ## 1、进入流水线语法  ## 2、在流水线脚本片段生成器中,选择shell脚本  ## 3、在Java Springboot项目工程中,复制生成好的流水线脚本到Jenkinsfile文件中,并提交到Gitlab仓库中 * **-Dsonar.sources**:被扫码的源码目录 * **-Dsonar.projectname**:项目名称 * **-Dsonar.projectKey**:项目key,一般与项目名称一致即可 * **-Dsonar.java.binaries**:项目编译后的字节码 * **-Dsonar.login**:Sonarqube用户登录授权token ``` // 所有的脚本命令都放在pipeline中 pipeline { // 指定任务再哪个集群节点中执行 agent any // 声明全局变量,方便后面使用 environment { key = 'value' } stages { stage ('拉取git仓库代码') { steps { checkout([$class:'GitSCM', branches: [[name:'${tag}']], extensions: [], userRemoteConfigs: [[credentialsId:'b62b7b20-3b03-46e7-8f8b-09ab5efe0f12', url:'http://192.168.95.130:8929/root/jenkins-publish-demo.git']]]) } } stage ('通过maven构建项目') { steps { sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTests' } } stage ('通过Sonarqube做质量检测') { steps { sh '/var/jenkins_home/sonar-scanner/bin/sonar-scanner -Dsonar.projectname=${JOB_NAME} -Dsonar.projectKey=${JOB_NAME} -Dsonar.source=./ -Dsonar.java.binaries=./target/ -Dsonar.login=c8483abbf03c0fd4212ffce2c1e93c5ae8cd65bd' } } stage ('通过Docker制作自定义镜像') { steps { echo '通过Docker制作自定义镜像 -SUCCESS' } } stage ('通过Publish Over SSH通知目标服务器') { steps { echo '通过Publish Over SSH通知目标服务器 - SUCCESS' } } } } ```  ## 4、在Jenkins管理后台,进入项目部署详情,立即构建测试部署  ## 5、查看构建日志   ## 6、在Sonarqube管理后台,查看代码质量检查报告   # 五、Pipeline-通过Docker制作自定义镜像 ## 1、进入流水线语法  ## 2、在流水线脚本片段生成器中,选择shell脚本  ## 3、在Java Springboot项目工程中,复制生成好的流水线脚本到Jenkinsfile文件中,并提交到Gitlab仓库中 ``` // 所有的脚本命令都放在pipeline中 pipeline { // 指定任务再哪个集群节点中执行 agent any // 声明全局变量,方便后面使用 environment { key = 'value' } stages { stage ('拉取git仓库代码') { steps { checkout([$class:'GitSCM', branches: [[name:'${tag}']], extensions: [], userRemoteConfigs: [[credentialsId:'b62b7b20-3b03-46e7-8f8b-09ab5efe0f12', url:'http://192.168.95.130:8929/root/jenkins-publish-demo.git']]]) } } stage ('通过maven构建项目') { steps { sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTests' } } stage ('通过Sonarqube做质量检测') { steps { sh '/var/jenkins_home/sonar-scanner/bin/sonar-scanner -Dsonar.projectname=${JOB_NAME} -Dsonar.projectKey=${JOB_NAME} -Dsonar.source=./ sonar.java.binaries=./target/ -Dsonar.login=c8483abbf03c0fd4212ffce2c1e93c5ae8cd65bd' } } stage ('通过Docker制作自定义镜像') { steps { sh '''cp -rf target/*.jar docker/ docker build -t ${JOB_NAME}:$tag docker/''' } } stage ('通过Publish Over SSH通知目标服务器') { steps { echo '通过Publish Over SSH通知目标服务器 - SUCCESS' } } } } ```  ## 4、在Jenkins管理后台,进入项目部署详情,立即构建测试部署  ## 5、查看构建日志   ## 6、在宿主机查看构建的docker镜像 ``` $ docker images | grep jenkins ```  # 六、Pipeline-推送镜像到harbor ## 1、进入流水线语法  ## 2、在流水线脚本片段生成器中,选择shell脚本 ### 2.1、在Java项目工程Jenkinsfile文件定义环境变量 ``` // 声明全局变量,方便后面使用 environment { // harbor用户名 harborUserName = 'DevOps' // harbor密码 harborPassword = 'Dev12345' // harbor地址 harborAddress = '192.168.95.131:9020' // harbor项目名 harborRepo = 'repos' } ```  ### 2.2、定义shell脚本,生成流水线脚本  ## 3、在Java Springboot项目工程中,复制生成好的流水线脚本到Jenkinsfile文件中,并提交到Gitlab仓库中 ``` // 所有的脚本命令都放在pipeline中 pipeline { // 指定任务再哪个集群节点中执行 agent any // 声明全局变量,方便后面使用 environment { // harbor用户名 harborUserName = 'DevOps' // harbor密码 harborPassword = 'Dev12345' // harbor地址 harborAddress = '192.168.95.131:9020' // harbor项目名 harborRepo = 'repos' } stages { stage ('拉取git仓库代码') { steps { checkout([$class:'GitSCM', branches: [[name:'${tag}']], extensions: [], userRemoteConfigs: [[credentialsId:'b62b7b20-3b03-46e7-8f8b-09ab5efe0f12', url:'http://192.168.95.130:8929/root/jenkins-publish-demo.git']]]) } } stage ('通过maven构建项目') { steps { sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTests' } } stage ('通过Sonarqube做质量检测') { steps { sh '/var/jenkins_home/sonar-scanner/bin/sonar-scanner -Dsonar.projectname=${JOB_NAME} -Dsonar.projectKey=${JOB_NAME} -Dsonar.source=./ -Dsonar.java.binaries=./target/ -Dsonar.login=c8483abbf03c0fd4212ffce2c1e93c5ae8cd65bd' } } stage ('通过Docker制作自定义镜像') { steps { sh '''cp -rf target/*.jar docker/ docker build -t ${JOB_NAME}:$tag docker/''' } } stage ('将自定义镜像推送到Harbor') { steps { sh '''docker login -u ${harborUserName} -p ${harborPassword} ${harborAddress} docker tag ${JOB_NAME}:${tag} ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag} docker push ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag}''' } } stage ('通过Publish Over SSH通知目标服务器') { steps { echo "通过Publish Over SSH通知目标服务器 -SUCCESS" } } } } ```  ## 4、在Jenkins管理后台,进入项目部署详情,立即构建测试部署  ## 5、查看构建日志   ## 6、登录Harbor管理后台查看推送的镜像    # 七、Pipeline-通知目标服务器部署项目 ## 1、进入流水线语法  ## 2、Jenkins项目配置详情,增加端口port字符参数   ## 3、在流水线脚本片段生成器中,选择sshPublisher脚本   ## 4、在Java Springboot项目工程中,复制生成好的流水线脚本到Jenkinsfile文件中,并提交到Gitlab仓库中 ``` // 所有的脚本命令都放在pipeline中 pipeline { // 指定任务再哪个集群节点中执行 agent any // 声明全局变量,方便后面使用 environment { // harbor用户名 harborUserName = 'DevOps' // harbor密码 harborPassword = 'Dev12345' // harbor地址 harborAddress = '192.168.95.131:9020' // harbor项目名 harborRepo = 'repos' } stages { stage ('拉取git仓库代码') { steps { checkout([$class:'GitSCM', branches: [[name:'${tag}']], extensions: [], userRemoteConfigs: [[credentialsId:'b62b7b20-3b03-46e7-8f8b-09ab5efe0f12', url:'http://192.168.95.130:8929/root/jenkins-publish-demo.git']]]) } } stage ('通过maven构建项目') { steps { sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTests' } } stage ('通过Sonarqube做质量检测') { steps { sh '/var/jenkins_home/sonar-scanner/bin/sonar-scanner -Dsonar.projectname=${JOB_NAME} -Dsonar.projectKey=${JOB_NAME} -Dsonar.source=./ -Dsonar.java.binaries=./target/ -Dsonar.login=c8483abbf03c0fd4212ffce2c1e93c5ae8cd65bd' } } stage ('通过Docker制作自定义镜像') { steps { sh '''cp -rf target/*.jar docker/ docker build -t ${JOB_NAME}:$tag docker/''' } } stage ('将自定义镜像推送到Harbor') { steps { sh '''docker login -u ${harborUserName} -p ${harborPassword} ${harborAddress} docker tag ${JOB_NAME}:${tag} ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag} docker push ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag}''' } } stage ('通过Publish Over SSH通知目标服务器') { steps { sshPublisher(publishers: [sshPublisherDesc(configName:'192.168.95.131', transfers: [sshTransfer(cleanRemote:false, excludes:'', execCommand:"sh /usr/local/deploy/docker/deploy.sh $harborAddress $harborRepo $JOB_NAME $tag $port", execTimeout:120000, flatten:false, makeEmptyDirs:false, noDefaultExcludes:false, patternSeparator:'[, ]+', remoteDirectory:'', remoteDirectorySDF:false, removePrefix:'', sourceFiles:'')], usePromotionTimestamp:false, useWorkspaceInPromotion:false, verbose:false)]) } } } } ```  ## 5、在Jenkins管理后台,进入项目部署详情,立即构建测试部署  ## 6、查看构建日志   ## 7、部署的服务器,查看Docker部署启动的Springboot应用服务 ``` $ docker ps | grep jenkins ```  ## 8、浏览器访问部署的Springboot应用服务 > **示例访问链接:****http://192.168.95.131:8082/sayHello**  # 八、Pipeline-构建后钉钉通知消息 * **钉钉官方文档** 自定义机器人接入 - 钉钉开放平台  * **钉钉DingTalk插件文档** 快速开始 | 钉钉机器人插件  ## 1、登录Jenkins管理后台,安装钉钉插件   ## 2、安装完Jenkins插件,重启Jenkins服务 > **可以访问Jenkins管理后台的一个重启链接地址重启。** > > **示例重启链接:****http://192.168.95.131:8080/jenkins/restart**  ## 3、创建钉钉消息接收群  ## 4、添加钉钉群智能群助手 **钉钉机器人-安全设置-自定义关键词:Jenkins部署** **机器人Webhook地址:****https://oapi.dingtalk.com/robot/send?access\_token=****xxxx** ### 4.1、群设置  ### 4.2、选择添加机器人  ### 4.3、选择自定义-通过Webhook接入自定义服务  ### 4.4、填写机器人信息   ### 4.5、生成钉钉机器人Webhook链接地址  ### 4.6、钉钉群组机器人创建成功  ## 5、登录Jenkins管理后台,配置钉钉机器人信息 ### 5.1、Jenkins系统管理->系统配置  ### 5.2、配置钉钉机器人信息  ## 6、在Java Springboot项目工程中,在Jenkinsfile文件中,编写钉钉流水线脚本,并提交到Gitlab仓库中 ### 6.1、在Jenkinsfile文件中,编写钉钉流水线脚本,并提交到Gitlab仓库中 ``` // 所有的脚本命令都放在pipeline中 pipeline { // 指定任务再哪个集群节点中执行 agent any // 声明全局变量,方便后面使用 environment { // harbor用户名 harborUserName = 'DevOps' // harbor密码 harborPassword = 'Dev12345' // harbor地址 harborAddress = '192.168.95.131:9020' // harbor项目名 harborRepo = 'repos' } stages { stage ('拉取git仓库代码') { steps { checkout([$class:'GitSCM', branches: [[name:'${tag}']], extensions: [], userRemoteConfigs: [[credentialsId:'b62b7b20-3b03-46e7-8f8b-09ab5efe0f12', url:'http://192.168.95.130:8929/root/jenkins-publish-demo.git']]]) } } stage ('通过maven构建项目') { steps { sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTests' } } stage ('通过Sonarqube做质量检测') { steps { sh '/var/jenkins_home/sonar-scanner/bin/sonar-scanner -Dsonar.projectname=${JOB_NAME} -Dsonar.projectKey=${JOB_NAME} -Dsonar.source=./ -Dsonar.java.binaries=./target/ -Dsonar.login=c8483abbf03c0fd4212ffce2c1e93c5ae8cd65bd' } } stage ('通过Docker制作自定义镜像') { steps { sh '''cp -rf target/*.jar docker/ docker build -t ${JOB_NAME}:$tag docker/''' } } stage ('将自定义镜像推送到Harbor') { steps { sh '''docker login -u ${harborUserName} -p ${harborPassword} ${harborAddress} docker tag ${JOB_NAME}:${tag} ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag} docker push ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag}''' } } stage ('通过Publish Over SSH通知目标服务器') { steps { sshPublisher(publishers: [sshPublisherDesc(configName:'192.168.95.131', transfers: [sshTransfer(cleanRemote:false, excludes:'', execCommand:"sh /usr/local/deploy/docker/deploy.sh $harborAddress $harborRepo $JOB_NAME $tag $port", execTimeout:120000, flatten:false, makeEmptyDirs:false, noDefaultExcludes:false, patternSeparator:'[, ]+', remoteDirectory:'', remoteDirectorySDF:false, removePrefix:'', sourceFiles:'')], usePromotionTimestamp:false, useWorkspaceInPromotion:false, verbose:false)]) } } } post { // 构建成功通知 success { dingtalk ( robot:'Dingding-robot', type:'MARKDOWN', title:"success: ${JOB_NAME}", text: ["- 构建成功: ${JOB_NAME}项目!\n- 版本: ${tag}\n" + "- 持续时间: ${currentBuild.durationString}\n- 任务:#${JOB_NAME}"] ) } // 构建失败通知 failure { dingtalk ( robot:'Dingding-robot', type:'MARKDOWN', title:"fail: ${JOB_NAME}", text: ["- 构建失败: ${JOB_NAME}项目!\n- 版本: ${tag}\n" + "- 持续时间: ${currentBuild.durationString}\n- 任务:#${JOB_NAME}"] ) } } } ```  ### 6.2、Jenkins中还有非常多的全局变量可以使用,可以Jenkins项目配置中进入查看   ## 7、在Jenkins管理后台,进入项目部署详情,立即构建测试部署  ## 8、查看构建日志,钉钉收到Jenkins发出的部署结果通知   最后修改:2025 年 06 月 19 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 3 如果觉得我的文章对你有用,请随意赞赏