Jenkins的流水线(Pipeline)

学向勤中得,萤窗万卷书。这篇文章主要讲述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)】


    推荐阅读