Jenkins的流水线(Pipeline)

Posted 南宫乘风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins的流水线(Pipeline)相关的知识,希望对你有一定的参考价值。


目录

​​Jenkins安装部署使用_南宫乘风的博客

​​Jenkins入门配置_南宫乘风的博客

​​Jenkins集成Sonar Qube_南宫乘风的博客

Jenkins流水线

Jenkins流水线任务介绍

之前采用Jenkins的自由风格构建的项目,每个步骤流程都要通过不同的方式设置,并且构建过程中整体流程是不可见的,无法确认每个流程花费的时间,并且问题不方便定位问题。

Jenkins的Pipeline可以让项目的发布整体流程可视化,明确执行的阶段,可以快速的定位问题。并且整个项目的生命周期可以通过一个Jenkinsfile文件管理,而且Jenkinsfile文件是可以放在项目中维护。

所以Pipeline相对自由风格或者其他的项目风格更容易操作。

Jenkins的流水线(Pipeline)_git

Jenkins流水线任务

构建Jenkins流水线任务

构建任务

Jenkins的流水线(Pipeline)_docker_02

 生成Groovy脚本

Hello World脚本生成

Jenkins的流水线(Pipeline)_自定义_03

 构建后查看视图

Jenkins的流水线(Pipeline)_自定义_04

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脚本

Jenkins的流水线(Pipeline)_运维_05

 查看效果

Jenkins的流水线(Pipeline)_运维_06

 ​​Ps:涉及到特定脚本,Jenkins给予了充足的提示,可以自动生成命令​

生成命令位置

Jenkins的流水线(Pipeline)_自定义_07

Jenkinsfile实现

Jenkinsfile方式需要将脚本内容编写到项目中的Jenkinsfile文件中,每次构建会自动拉取项目并且获取项目中Jenkinsfile文件对项目进行构建

配置pipeline

Jenkins的流水线(Pipeline)_自定义_08

 准备Jenkinsfile

Jenkins的流水线(Pipeline)_git_09

 ​​Jenkinsfile · 南宫乘风/java-demo - Gitee.com​

测试效果

Jenkins的流水线(Pipeline)_自定义_10

Jenkins流水线任务实现

参数化构建

添加参数化构建,方便选择不的项目版本

Jenkins的流水线(Pipeline)_docker_11

拉取Git代码

通过流水线语法生成Checkout代码的脚本

 Jenkins的流水线(Pipeline)_docker_12

 Jenkins的流水线(Pipeline)_运维_13

Jenkins的流水线(Pipeline)_自定义_14

  将*/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)_运维_15

 已经成功

Jenkins的流水线(Pipeline)_自定义_16


以上是关于Jenkins的流水线(Pipeline)的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins流水线(pipeline)实战之:从部署到体验

Jenkins 流水线(Pipeline)

Jenkins之Pipeline代码流水线配置

Jenkins之Pipeline代码流水线

12-Jenkins-Pipeline简介

Jenkins之Pipeline代码流水线配置