当前位置: 首页 > news >正文

Jenkins流水线pipeline--基于上一章的工作流程

1流水线部署

1.流水线文本名Jenkinsfile,将流水线放入gitlab远程仓库代码里面

2构建参数

2pipeline脚本

Jenkinsfile文件内容

pipeline {agent anyenvironment {key="value"}stages {stage("拉取git仓库代码") {steps {deleteDir()checkout scmGit(branches: [[name: "$tag"]], extensions: [], userRemoteConfigs: [[url: 'http://192.168.88.120:8929/root/test.git']])echo '拉取git仓库代码 --SUCCESS'}}stage("通过maven构建项目") {steps {sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTests'echo '通过maven构建项目 --SUCCESS'}}stage("通过sonarqube做代码质量检测") {steps {sh '/var/jenkins_home/sonar-scanner/bin/sonar-scanner  -Dsonar.source=./ -Dsonar.projectname=${JOB_NAME} -Dsonar.login=2f0c3fe097389f621ebe683db16dc83931cb3502  -Dsonar.projectKey=${JOB_NAME}   -Dsonar.java.binaries=./target/'echo '通过sonarqube做代码质量检测 --SUCCESS'}}stage("通过docker制作自定义镜像") {steps {sh '''mv target/*.jar  docker/cd docker/docker build -t ${JOB_NAME}:$tag ./'''echo '通过docker制作自定义镜像 --SUCCESS'}}stage("将自定义镜像推送到harbor仓库") {steps {sh '''docker login -u admin -p Harbor12345 192.168.88.121:80docker tag ${JOB_NAME}:$tag 192.168.88.121:80/repo/${JOB_NAME}:$tagdocker push 192.168.88.121:80/repo/${JOB_NAME}:$tag'''echo '将自定义镜像推送到harbor仓库 --SUCCESS'}}stage("远程仓库下载并启动容器") {steps {sshPublisher(publishers: [sshPublisherDesc(configName: 'test', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "docker.sh 192.168.88.121:80 repo ${JOB_NAME}  $tag  $container_port  $host_port", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])echo '远程仓库下载并启动容器 --SUCCESS'}}}}

3.优化后的pipeline代码

pipeline {agent anyenvironment {harborUser = "admin"harborPasswd = "Harbor12345"harborAddress = "192.168.88.121:80"harborRepo = "repo"}stages {stage("拉取git仓库代码") {steps {deleteDir()checkout scmGit(branches: [[name: "$tag"]], extensions: [], userRemoteConfigs: [[url: 'http://192.168.88.120:8929/root/test.git']])echo '拉取git仓库代码 --SUCCESS'}}stage("通过maven构建项目") {steps {sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTests'echo '通过maven构建项目 --SUCCESS'}}stage("通过sonarqube做代码质量检测") {steps {sh '/var/jenkins_home/sonar-scanner/bin/sonar-scanner  -Dsonar.source=./ -Dsonar.projectname=${JOB_NAME} -Dsonar.login=2f0c3fe097389f621ebe683db16dc83931cb3502  -Dsonar.projectKey=${JOB_NAME}   -Dsonar.java.binaries=./target/'echo '通过sonarqube做代码质量检测 --SUCCESS'}}stage("通过docker制作自定义镜像") {steps {sh '''mv target/*.jar  docker/cd docker/docker build -t ${JOB_NAME}:${tag} ./'''echo '通过docker制作自定义镜像 --SUCCESS'}}stage("将自定义镜像推送到harbor仓库") {steps {sh '''docker login -u ${harborUser} -p ${harborPasswd} ${harborAddress}docker tag ${JOB_NAME}:$tag ${harborAddress}/${harborRepo}/${JOB_NAME}:$tagdocker push ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag}'''echo '将自定义镜像推送到harbor仓库 --SUCCESS'}}stage("远程仓库下载并启动容器") {steps {sshPublisher(publishers: [sshPublisherDesc(configName: 'test', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "docker.sh ${harborAddress} ${harborRepo} ${JOB_NAME}  ${tag}  ${container_port}  ${host_port}", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])echo '远程仓库下载并启动容器 --SUCCESS'}}}}

相关文章:

  • 人工智能安全风险分析及应对策略
  • 燃烧截稿倒计时,NDSS‘25大会即将召开,你的论文准备好了吗?
  • elementui Menu 二级菜单 min-width修改无效
  • NFS服务器
  • 水电表自动抄表系统
  • 【UE5教程】使用蓝图显示鼠标
  • ARCGIS 几种SHP融合、拼接等方法
  • 03-3.2.3 队列的链式存储的实现
  • 【人工智能】流行且重要的智能算法整理
  • TP8 定时任务yzh52521/http-crontab 教程
  • 前端 CSS 经典:水波进度样式
  • Windows取证分析 | 如何最大程度提升分析效率
  • 【MySQL】表的约束
  • 腾讯开源人像照片生成视频模型V-Express
  • 240520Scala笔记
  • Iterator 和 for...of 循环
  • Java编程基础24——递归练习
  • JDK 6和JDK 7中的substring()方法
  • k8s如何管理Pod
  • Laravel 中的一个后期静态绑定
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Rancher如何对接Ceph-RBD块存储
  • Vue UI框架库开发介绍
  • 前端面试总结(at, md)
  • 如何优雅地使用 Sublime Text
  • 思维导图—你不知道的JavaScript中卷
  • 线上 python http server profile 实践
  • 终端用户监控:真实用户监控还是模拟监控?
  • 走向全栈之MongoDB的使用
  • ​渐进式Web应用PWA的未来
  • # SpringBoot 如何让指定的Bean先加载
  • (7)摄像机和云台
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (Python第六天)文件处理
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (笔试题)分解质因式
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (接口自动化)Python3操作MySQL数据库
  • (转)winform之ListView
  • 、写入Shellcode到注册表上线
  • .gitignore文件使用
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .Net6使用WebSocket与前端进行通信
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .net专家(张羿专栏)
  • @synthesize和@dynamic分别有什么作用?
  • @vue/cli 3.x+引入jQuery
  • [51nod1610]路径计数
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...
  • [AIGC codze] Kafka 的 rebalance 机制
  • [ASP.NET MVC]Ajax与CustomErrors的尴尬
  • [C#]DataTable常用操作总结【转】
  • [EULAR文摘] 利用蛋白组学技术开发一项蛋白评分用于预测TNFi疗效
  • [HackMyVM]靶场 Quick3