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

11-DevOps-Jenkins Pipeline流水线作业

前面已经完成了,通过在Jenkins中创建自由风格的工程,在界面上的配置,完成了发布、构建的过程。

这种方式的缺点就是如果要在另一台机器上进行同样的配置,需要一项一项去填写,不方便迁移,操作比较麻烦。

解决这个问题,就要用到纯脚本方式的操作,即pipline流水线。

新建pipline工程

如果没有找到这个选项,则需要在Jenkins中安装pipline的插件。

配置pipline作业

配置参数化构建过程

勾选上添加参数,为了动态获取到GitLab中的tag版本。

生成模板脚本

在pipline脚本的地方,选择hello world,生成一个简单的脚本模板。

每一个stage代码块,就是一个操作步骤。

下面就是配置不同的操作步骤,当前,Jenkins提供了脚本生成工具,可以通过先在页面填写好配置参数(与自由风格相同的操作方式),然后点击生成脚本,就可以获取到当前步骤执行的脚本。

利用工具生成每个步骤脚本

具体操作方式如下:

在配置界面,找到流水线语法。

1.从GitLab中拉取代码

点击生成流水线脚本,下面就是生成的脚本。 

拷贝脚本放到pipline脚本文本框中。

下面的每一步都是这样操作,获取到每一步要执行的脚本。

2.程序打包

3.上传文件到Harbor所在服务器并完成镜像构建

4.目标服务器完成容器生成

通过上面一步步操作,最终生成的完整脚本如下:

pipeline {agent anystages {stage('Pull SourceCode') {steps {checkout scmGit(branches: [[name: '$tag']], extensions: [], userRemoteConfigs: [[url: 'http://192.168.1.10:83/root/myproject-ci']])}}stage('Maven Build') {steps {sh 'sh /usr/local/maven/bin/mvn package'}}stage('Publish Harbor Image') {steps {sshPublisher(publishers: [sshPublisherDesc(configName: 'Harbor-192.168.1.12', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: 'target', sourceFiles: 'target/*.jar'), sshTransfer(cleanRemote: false, excludes: '', execCommand: '''docker build -t 192.168.1.12:85/public/myproject:$tag /usr/local/
docker login -u admin -p Harbor12345 192.168.1.12:85
docker push 192.168.1.12:85/public/myproject:$tag''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: 'docker', sourceFiles: 'docker/*')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}stage('Run Container') {steps {sshPublisher(publishers: [sshPublisherDesc(configName: 'Target-192.168.1.11', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''docker rm -f myproject
docker run -d -p 81:81 --name=myproject 192.168.1.12:85/public/myproject:$tag''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}}
}

构建

选择一个需要的tag版本,点击构建。(注意:如果这里没有出现tag的版本号,也点击构建,构建成功后,第二次再构建就能看到版本号)

在状态栏,可以看到每个执行阶段的耗时情况。(需要安装插件:pipeline Stage View)

鼠标放上去,可以直接看日志。 

访问应用程序

http://192.168.1.11:81/

 到此,完成了使用pipline流水线作业的方式完成Jenkins的构建。

相关文章:

  • 剑指offer经典题目(五)
  • ORION:通过视觉-语言指令动作生成的一个整体端到端自动驾驶框架
  • WPF的发展历程
  • 人类行为的原动力是自我保存-来自ChatGPT
  • 分布式数据库TiDB:架构、核心特性与生产实践(分库分表)
  • 纷析云开源财务软件:助力企业实现数字化自主权
  • 宝塔面板引发的血案:onlyoffice协作空间无法正常安装的案例分享
  • 树莓派5+L298N控制电机
  • RabbitMQ常见面试题回答重点
  • C++ 2025 展望:现代编程需求与新兴技术驱动下的变革
  • 后端如何生成验证码
  • 机器人进阶---视觉算法(五)仿射变换和投影变换有什么区别
  • Apache RocketMQ 荣获 2024 开源创新榜单“年度开源项目
  • 【图片转PDF工具】如何批量将文件夹里的图片以文件夹为单位批量合并PDF文档,基于WPF实现步骤及总结
  • 数据仓库 vs 数据湖:架构、应用场景与技术差异全解析
  • 【区块链技术解析】从原理到实践的全链路指南
  • C++——STL——容器deque(简单介绍),适配器——stack,queue,priority_queue
  • Spring Boot集成Keycloak
  • 【NLP 67、知识图谱】
  • fpga系列 HDL:tips 初始化错误排查 仿真和实际不符的可能原因
  • 专家学者视角下的乡村教育:目标与出路并非“走出大山”
  • 第一集|《蛮好的人生》蛮好,《悬镜》挺玄
  • 专访|《触碰你》导演长井龙雪:“秩父铁三角”不只是朋友
  • 复旦大学空间互联网研究院成立,将聚焦卫星互联网等领域
  • 圆桌|并购重组迎政策红利期,并购基金如何把握发展机遇?
  • “75后”长春副市长朱光明已任长春市委常委、市委秘书长