这篇文章上次修改于 1043 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
一、自由风格项目弊端
任务的完成需要在Jenkins端维护大量的配置
没法做版本控制
可读性、可移植性很差,不够优雅
二、流水线的作用
重要的功能插件,帮助Jenkins定义了一套工作流框架;
Pipeline 的实现方式是一套 Groovy DSL( 领域专用语言 ),所有的发布流程都可以表述为一段 Groovy 脚本;
将WebUI上需要定义的任务,以脚本代码的方式表述出来;
帮助jenkins实现持续集成CI(Continue Integration)和持续部署CD(Continue Deliver)的重要手段;
总结:
pipeline流水线操作不用过多关于自由风格项目的图形设置与步骤,只需将相关的操作,生成对应的DSL语言,并按自己的需求进行一步一步执行即可,同时该代码的移植性更强;并且在流水线语法中,可自动生成我们需要的代码,便于维护。
流水线入门官方文档:
https://www.jenkins.io/zh/doc/book/pipeline/getting-started/
流水线语法官方文档:
https://www.jenkins.io/zh/doc/book/pipeline/syntax/
三、创建一个简单的pipline流水线项目
1、实现目的
连接gitlab的myblog仓库代码
下载myblog仓库代码至本地(执行该任务的主机,如:k8s-slave2 /app/jenkins_jobs/)
推送到远端的服务器10.3.152.78的/tmp/myblog/目录下
执行相关sh命令sh /tmp/ops_start.sh
2、新建pipline项目
3、默认情况下,不需要填任何内容,只需要在"流水线"标签选项中写脚本
整个流水线作业,全部由该脚本完成,没有任何额外的操作
4、构建该流水线作业(成功)
四、通过Blue Ocean查看pipline作业
五、pipeline流水线脚本
pipeline {
agent any
stages {
stage('更新开始') {
steps {
echo '更新开始'
}
}
stage('git代码仓库'){
steps {
git credentialsId: '6a8972e3-a817-4117-8018-2653e98548f9', url: 'https://gitlab.cedarhd.com/zhoumingkang/myblog.git'
}
}
stage('推送&执行脚本'){
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: '10.3.152.78', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'sh /tmp/ops_start.sh > /dev/null 2>&1', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/tmp/myblog/', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
}
}
六、脚本解释
agent:
指明使用哪个agent节点来执行任务,定义于pipeline顶层或者stage内部
any:
可以使用任意可用的agent来执行
label:
在提供了标签的 Jenkins 环境中可用的代理上执行流水线或阶段。 例如: agent { label ‘my-defined-label’ },最常见的使用方式
none:
当在 pipeline 块的顶部没有全局代理, 该参数将会被分配到整个流水线的运行中并且每个 stage 部分都需要包含他自己的 agent 部分。比如: agent none
stages:
包含一系列一个或多个 stage指令, stages 部分是流水线描述的大部分"work" 的位置。 建议 stages 至少包含一个 stage 指令用于连续交付过程的每个离散部分,比如构建, 测试, 和部署。
steps:
在给定的 stage 指令中执行的定义了一系列的一个或多个steps。
七、“git代码仓库”脚本编写方法
1、点击流水线语法(用以编写生成代码)
2、选择git
3、选择连接仓库与凭证(跟自由项目方法一致)
4、此时可以将生成的脚本,复制到pipeline脚本上。
八、“推送&执行脚本”编写方法
1、点击流水线语法(用以编写生成代码)选择sshPulisher功能,接下来与自由项目操作一致
2、生成相关的代码
只有一条评论 (QwQ)
:真棒: