天下之事常成于困约,而败于奢靡。这篇文章主要讲述用pipeline来实现一个自由风格的构建相关的知识,希望能为你提供帮助。
经过了之前的学习,我们了解了pipline的基本使用方式,那么我们来一个小的实战,之前jenkins构建的时候,我们完成了一个自由风格的构建,那么,我们可不可以用pipline的方式去实现它,当然是可以的,那么我们先回顾一下,构建的流程
我们要配置一个Git的环境变量,可以选择部署哪个分支。然后,我们需要源码管理,来下载代码。之后,我们要打包项目,最后,要把项目复制到远程目录,那么我们一步一步来实现。
首先我们要配置git的环境变量,我们需要的模块是parameters
,代码如下:
parameters
gitParameter branchFilter: origin/(.*), defaultValue: main, name: GIT_TAG, type: PT_BRANCH
下面我们将开始编写
stages
的阶段,他一共分为三个stage
。首先是CheckOut
,我们用来获取代码,然后是Build
用来打包程序,最后是Deploy
,用来发送到项目服务器。他的大体结构如下stages
//阶段1 获取代码
stage("CheckOut")
steps
script
println("获取代码")stage("Build")
steps
script
println("进行构建")stage("Deploy")
steps
script
println("进行部署")
然后我们来一步一步,将它填完整
首先是拉取代码,我们需要调用git,
steps
script
println("获取代码")
git branch: main, credentialsId: gitlab, url: https://gitlab.yuanminglei.com/mpweixin/koaserver.git
【用pipeline来实现一个自由风格的构建】然后,我们进行构建,这里需要在script里面用sh命令运行脚本
stage("Build")
steps
script
println("进行构建")
sh "/opt/shell/jenkins/koaserver/build-koaserver-pipline.sh $GIT_TAG"
最后就是,发送到远端服务器,我们要调用
sshPublisher
模块来完成stage("Deploy")
steps
script
println("进行部署")sshPublisher(
publishers: [sshPublisherDesc
(configName: aliyun, transfers:
[sshTransfer
(cleanRemote: false,
excludes: ,
execCommand: pwd,
execTimeout: 120000,
flatten: false,
makeEmptyDirs: false,
noDefaultExcludes: false,
patternSeparator: [, ]+,
remoteDirectory: /opt/test1,
remoteDirectorySDF: false,
removePrefix: target,
sourceFiles: target/jenkins-test-build01-*.tar.gz
)
],
usePromotionTimestamp: false,
useWorkspaceInPromotion: false,
verbose: false
)
]
)
这里要主要
sshPublisher
不在是,包在,script里面的命令了,而是和script平行的模块。那么有的同学可能要问,想这么复杂的配置,怎么可能记得住,这里就要使用jenkins另外一个工具,流水线语法。它就在,我们配置完pipeline最后。
文章图片
点击进入
文章图片
如果我们要用
sshPublisher
,可以在示例步骤中,选择sshPublisher: Send build artifacts over SSH
文章图片
配置完成,点击生成流水线脚本
文章图片
文章图片
这样就已经生成好了。
下面我把,今天的例子完整部分贴在下面。供你测试
String workspace = "/opt/jenkins/workspace/"pipeline
//指定运行此流水线的节点
agentnode
label "master"
customWorkspace "$workspace"parameters
gitParameter branchFilter: origin/(.*), defaultValue: main, name: GIT_TAG, type: PT_BRANCH//流水线的阶段
stages
//阶段1 获取代码
stage("CheckOut")
steps
script
println("获取代码")
git branch: main, credentialsId: gitlab, url: https://gitlab.yuanminglei.com/mpweixin/koaserver.gitstage("Build")
steps
script
sh "/opt/shell/jenkins/koaserver/build-koaserver-pipline.sh $GIT_TAG"stage("Deploy")
steps
script
println("进行部署")sshPublisher(
publishers: [sshPublisherDesc
(configName: aliyun, transfers:
[sshTransfer
(cleanRemote: false,
excludes: ,
execCommand: pwd,
execTimeout: 120000,
flatten: false,
makeEmptyDirs: false,
noDefaultExcludes: false,
patternSeparator: [, ]+,
remoteDirectory: /opt/test1,
remoteDirectorySDF: false,
removePrefix: target,
sourceFiles: target/jenkins-test-build01-*.tar.gz
)
],
usePromotionTimestamp: false,
useWorkspaceInPromotion: false,
verbose: false
)
]
)post
always
script
println("流水线结束后,经常做的事情")success
script
println("流水线成功后,要做的事情")failure
script
println("流水线失败后,要做的事情")aborted
script
println("流水线取消后,要做的事情")
推荐阅读
- MYSQL事务超全知识总结#yyds干货盘点#
- 有关 CentOS 7 minimal 初始配置
- #yyds干货盘点#害,这恼人的BOM头
- #yyds干货盘点#--ELK-Elasticsearch介绍-1
- #yyds干货盘点#Windows Server之CA证书服务器看不到"web服务器"模板
- Ubuntu 18.04.1安装k8s的时候,提示缺少依赖包kubernetes-cni (= 0.7.5)
- 如何在WordPress分页上向上一个/下一个添加类( (paginate_links))
- 如何从WordPress中删除分类()
- 如何在PHP数组元素中连接字符串()