学向勤中得,萤窗万卷书。这篇文章主要讲述Jenkins的流水线(Pipeline)相关的知识,希望能为你提供帮助。
目录??Jenkins安装部署使用_南宫乘风的博客
??Jenkins入门配置_南宫乘风的博客
??Jenkins集成Sonar Qube_南宫乘风的博客
Jenkins流水线Jenkins流水线任务介绍之前采用Jenkins的自由风格构建的项目,每个步骤流程都要通过不同的方式设置,并且构建过程中整体流程是不可见的,无法确认每个流程花费的时间,并且问题不方便定位问题。
Jenkins的Pipeline可以让项目的发布整体流程可视化,明确执行的阶段,可以快速的定位问题。并且整个项目的生命周期可以通过一个Jenkinsfile文件管理,而且Jenkinsfile文件是可以放在项目中维护。
所以Pipeline相对自由风格或者其他的项目风格更容易操作。
Jenkins流水线任务构建Jenkins流水线任务构建任务
生成Groovy脚本
Hello World脚本生成
构建后查看视图
Groovy脚本Groovy脚本基础语法
// 所有脚本命令包含在pipeline中
pipeline
// 指定任务在哪个节点执行(Jenkins支持分布式)
agent any
// 配置全局环境,指定变量名=变量值信息
environment
host = 172.17.1.22
// 存放所有任务的合集
stages
// 单个任务
stage(任务1)
// 实现任务的具体流程
steps
echo do something
// 单个任务
stage(任务2)
// 实现任务的具体流程
steps
echo do something
// ……
编写例子测试pipeline
agent any
// 存放所有任务的合集
stages
stage(拉取Git代码)
steps
echo 拉取Git代码
stage(检测代码质量)
steps
echo 检测代码质量
stage(构建代码)
steps
echo 构建代码
stage(制作自定义镜像并发布Harbor)
steps
echo 制作自定义镜像并发布Harbor
stage(基于Harbor部署工程)
steps
echo 基于Harbor部署工程
配置Grovvy脚本
查看效果
??Ps:涉及到特定脚本,Jenkins给予了充足的提示,可以自动生成命令??
生成命令位置
Jenkinsfile实现Jenkinsfile方式需要将脚本内容编写到项目中的Jenkinsfile文件中,每次构建会自动拉取项目并且获取项目中Jenkinsfile文件对项目进行构建
配置pipeline
准备Jenkinsfile
??Jenkinsfile · 南宫乘风/java-demo - Gitee.com??
测试效果
Jenkins流水线任务实现参数化构建
添加参数化构建,方便选择不的项目版本
拉取Git代码
通过流水线语法生成Checkout代码的脚本
将*/master更改为标签??$tag??
pipeline
agent any
environment
harborRepo = heianapp
harborUser = heian99
harborPasswd = NG+.mK4M-(s4CYX
// 存放所有任务的合集
stages
stage(拉取Git代码)
steps
echo 拉取Git代码
checkout([$class: GitSCM, branches: [[name: $tag]], extensions: [], userRemoteConfigs: [[url: https://gitee.com/chengfeng99/java-demo.git]]])
stage(检测代码质量)
steps
echo 检测代码质量
sh /var/jenkins_home/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=$JOB_NAME -Dsonar.projectKey=$JOB_NAME -Dsonar.java.binaries=target/ -Dsonar.login=19d0d6b885e18455d257d61da08776bd4e180c04
stage(构建代码)
steps
echo 构建代码
sh /var/jenkins_home/maven/bin/mvn clean package -DskipTests
stage(制作自定义镜像并发布Harbor)
steps
echo 制作自定义镜像并发布Harbor
sh
cp ./target/*.jar ./docker/demo.jar
cd ./docker
docker build -t $JOB_NAME:$BUILD_NUMBER .
sh docker login -u $harborUser -p $harborPasswd
docker tag $JOB_NAME:$BUILD_NUMBER $harborUser/$harborRepo:$JOB_NAME_$BUILD_NUMBER
docker push $harborUser/$harborRepo:$JOB_NAME_$BUILD_NUMBER
stage(基于Harbor部署工程)
steps
echo 基于Harbor部署工程
sshPublisher(publishers: [sshPublisherDesc(configName: node-Linux32, transfers: [sshTransfer(cleanRemote: false, excludes: , execCommand: cd /opt/java/
echo "测试成功" >
>
log.txt
date >
>
log.txt, execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: [, ]+, remoteDirectory: , remoteDirectorySDF: false, removePrefix: , sourceFiles: target/*.jar,docker/*)], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
??Ps:由于采用变量,记得使用双引号??
进行构建
已经成功
【Jenkins的流水线(Pipeline)】
推荐阅读
- Jenkins流水线整合钉钉
- Jenkins入门配置
- 服务器后台挂起jupyter
- Jenkins安装部署使用
- Linux查看端口使用情况
- Tableau Desktop 企业日常问题29Tableau desktop 更换电脑的时候 迁移License
- 在android布局文件中评论
- 如何减少Android中小部件的参考线()
- 如何在android中以小写显示文本()