目录
1、Jenkins流水线
说明:流水线既能作为任务的本身,也能作为Jenkinsfile。
优势:使用流水线可以让任务从ui手动操作,转换为代码,像docker的dockerfile一样,从shell命令到配置文件,更适合大型项目,可以让团队的其他开发者同时参与进来,同时也可以编辑开发Jenkins web ui 不能完成的更复杂的构建,作为开发者可读性也更好。
1.1、安装插件Pipeline
- 安装方式:Manage Jenkins ->插件管理->可选插件->搜索:Pipeline ->点击选中并执行下载安装(Install without restart)
1.2、安装插件Pipeline Stage View
- 安装方式:Manage Jenkins ->插件管理->可选插件->搜索:Pipeline Stage View ->点击选中并执行下载安装(Install without restart)
1.3、安装插件Blue Ocean
- 安装方式:Manage Jenkins ->插件管理->可选插件->搜索:Blue Ocean ->点击选中并执行下载安装(Install without restart)
- 作用:图形化展示项目构建,丰富的功能可完成流水线项目的展示,编辑,添加以及面板展示。
- 持续交付(CD)Pipeline的 复杂可视化 ,可以让您快速直观地理解管道状态
- Pipeline 编辑器 - 引导用户通过直观的、可视化的过程来创建Pipeline,从而使Pipeline的创建变得平易近人。
- 个性化 以适应团队中每个成员不同角色的需求。
- 在需要干预和/或出现问题时 精确定位 。 Blue Ocean 展示 Pipeline中需要关注的地方, 简化异常处理,提高生产力
- 本地集成分支和合并请求, 在与GitHub 和 Bitbucket中的其他人协作编码时实现最大程度的开发人员生产力。
1.4、Jenkins语法
使用详情见官方文档:使用 Jenkinsfile
1.4.1、声明流水线语法
1、语法规则
- 流水线顶层必须是一个 block, 特别地: pipeline { }
- 没有分号作为语句分隔符,,每条语句都必须在自己的行上。
- 块只能由 节段, 指令, 步骤, 或赋值语句组成。 *属性引用语句被视为无参方法调用。 例如, input被视为 input()
- agent :指定执行器
- stages :所以阶段
- stage :某一阶段,可以有多个
- steps :阶段内的每一步,可执行命令
- post :流水线完成后可执行的任务
- aborted : 只有当流水线或阶段状态为“aborted”时运行,如:手动取消
- unstable : 只有当流水线或阶段状态为“unstable”时运行,如:测试失败
- success : 只有当流水线或阶段状态为“success”时运行
- failure : 只有当流水线或阶段状态为“failure”时运行
- changed :只有当流水线或阶段完成状态与之前不同时
- always :无论流水线或阶段完成的状态
1.5、流水线项目配置
注意事项:主节点标签值默认为:built-in【给主节点添加标签值mater,使用标签值mater,未生效,会提示没有找到该节点;使用默认built-in标签值成功】
1.5.1、单分支流水线
1、创建单分支流水线
2、配置流水线,定义流水线模式:Pipeline script
- 说明:相当于直接在流水线中编写需要执行的Jenkinsfile文件内容
- 示例代码如下:
pipeline {
agent {
label "test_server01"
//customWorkspace '/path/to/custom/workspace' // 可选:自定义工作目录
}
stages {
stage('拉取代码') {
steps {
git credentialsId: 'a6105c2c-aeea-4228-a26c-a8ee835bc120', url: 'http://172.xx.xx.xx/root/vis.git'
echo '拉取成功'
}
}
stage('推送代码到测试服务器2,并执行代码') {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'test_server02', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''
#!/bin/bash
cd /root/push
if [ -e venv_pipeline ]
then
echo "虚拟环境目录存在!"
# 激活虚拟环境
source `find /root/push/venv_pipeline/bin/ -name "activate"`
echo "虚拟环境被激活!"
else
echo "创建虚拟环境!"
virtualenv venv_pipeline
source `find /root/push/venv_pipeline/bin/ -name "activate"`
echo "虚拟环境被激活!"
pip3 install -r requirements.txt
echo "环境依赖安装完成!"
fi
# 执行Python脚本
echo "开始执行脚本....."
python3 ad.py''',
execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/push', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '**/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])
echo "脚本执行成功"
}
}
stage('执行自动化测试') {
steps {
echo '自动化测试执行成功'
sh "pwd"
}
}
}
}
3、配置流水线,定义流水线模式:Pipeline script from SCM
- 说明:此方式是从代码仓库拉取代码,并且拉取的目录代码的根目录下必须要有Jenkinsfile文件,可以指定多分支
1.5.2、创建多分支流水线
1、创建多分支流水线
- 注意:创建多分支流水线,每个分支下面必须要有Jenkinsfile文件
2、配置多分支流水线,添加git仓库
3、扫描多分支流水线进行构建