当前位置:网站首页>jenkins下使用声明式(Declarative)和Jenkinsfile的方式构建Pipeline流水线项目
jenkins下使用声明式(Declarative)和Jenkinsfile的方式构建Pipeline流水线项目
2022-07-24 00:06:00 【cristianoxm】
一、Pipelin简介
- 概念
Pipeline,简单来说,就是bash 一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点 的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。
- 使用Pipeline有以下好处(来自翻译自官方文档):
- 代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流程。
- 持久:
无论是计划内的还是计划外的服务器重启,Pipeline都是可恢复的。- 可停止:Pipeline
可接收交互式输入,以确定是否继续执行Pipeline。- 多功能:
Pipeline支持现实世界中复杂的持续交付要求。它支持fork/join、循环执行,并行执行任务的功能。- 可扩展:Pipeline插件
支持其DSL的自定义扩展,以及与其他插件集成的多个选项。
- 如何创建 Jenkins Pipeline呢
- Pipeline 脚本是由 Groovy 语言实现的,但是我们没必要单独去学习 Groovy
- Pipeline支持两种语法:Declarative(声明式)和
Scripted Pipeline(脚本式)语法- Pipeline也有两种创建方法:可以直接在 Jenkins 的 Web UI 界面中输入脚本;也可以通过创建一 个 Jenkinsfile 脚本文件放入项目源码库中
(一般我们都推荐在 Jenkins 中直接从源代码控制(SCM) 中直接载入 Jenkinsfile Pipeline 这种方法)。
二、在jenkins中安装Pipeline插件

安装插件后,创建项目的时候多了“流水线”类型

三、创建流水线项目
- Declarative声明式
- 创建项目:


自动生成的脚本如下:

- stages:代表整个流水线的
所有执行阶段。通常stages只有1个,里面包含多个stage- stage:
代表流水线中的某个阶段,可能出现n个。一般分为拉取代码,编译构建,部署等阶段。- steps:
代表一个阶段内需要执行的逻辑。steps里面是shell脚本,git拉取代码,ssh远程发布等任意内容。
拉取代码

部署到tomcat

总的脚本编写如下:
pipeline {
agent any
stages {
stage ('pull code') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '2121e63d-3284-4703-9cf7-4ccf9bc536c2', url: '[email protected]:xxxxx/jenkins_war.git']]])
}
}
stage ('bulid project') {
steps {
sh 'mvn clean package'
}
}
stage ('deploy to tomcat') {
steps {
deploy adapters: [tomcat9(credentialsId: '68a5c257-6180-4d44-be87-9dda0daf2ba5', path: '', url: 'http://10.10.10.14:8080/')], contextPath: null, war: 'target/*.war'
}
}
}
}
- 控制台输出如下


- Pipeline Script from SCM(Jenkinsfile的方式,可以直接对Jenkinsfile进行版本控制)
推荐使用
刚才我们都是直接在Jenkins的UI界面编写Pipeline代码,这样不方便脚本维护,建议把Pipeline脚本放
在项目中(一起进行版本控制)
- 在项目根目录建立Jenkinsfile文件,把内容复制到该文件中,pull到远程仓库
pipeline {
agent any
stages {
stage ('pull code') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '2121e63d-3284-4703-9cf7-4ccf9bc536c2', url: '[email protected]:xxxx/jenkins_war.git']]])
}
}
stage ('bulid project') {
steps {
sh 'mvn clean package'
}
}
stage ('deploy to tomcat') {
steps {
deploy adapters: [tomcat9(credentialsId: '68a5c257-6180-4d44-be87-9dda0daf2ba5', path: '', url: 'http://10.10.10.14:8080/')], contextPath: null, war: 'target/*.war'
}
}
}
}
- 新建流水线项目

- 再次构建也能成功
边栏推荐
- Code generation of DGS
- 【HCIP】MGRE环境下OSPF实验,含多进程双向重发布及OSPF特殊区域
- Ubtun update source
- 云原生的概念
- 多表查询之_外连接
- Windows software: how to install mysql5.7 and configure environment variables
- 深度学习之 9 前馈神经网络2:实现前馈神经网络,模型调优
- Linked list - 206. Reverse linked list (this question is very important)
- Pytorch with torch no_ grad(): && model.eval()
- [ssm] joint debugging of front and rear protocols ①
猜你喜欢
![最长递增子序列变种[深刻理解最长递增序列]](/img/73/1480ec319a2860fec5667d6f2fb2ba.png)
最长递增子序列变种[深刻理解最长递增序列]

深度学习之 9 前馈神经网络2:实现前馈神经网络,模型调优

.NET下发同Outlook邮件格式以及表格的拼接

QT create a background mask, pop up the child window, and the background of the parent window turns black and dark

Linked list - 206. Reverse linked list (this question is very important)

DDD thinking structure learning

webrtc 1对1 -基本架构与目录

Linked list - 707. Design linked list

474-82(8、221、300)

Sentinel link mode flow control failure solution
随机推荐
473-82(40、662、31、98、189)
什么是 Restful 动词
Linked list - 206. Reverse linked list (this question is very important)
Nacos
工具推荐-语雀
pthread 的 joinable 和 detached
【细节】radio 标签 ,更换 默认选中的背景色
北大青鸟昌平校区:运维就业现状怎么样?技能要求高吗?
DGS file upload
世界最小的物质排名,灵子,弦子,夸克
Cloud native concept
Network security class assignment
mysql数据库基础
QT | set part size sizehint, minimumsizehint, sizepolicy, stretch factor
Windows软件:如何安装Mysql5.7并配置环境变量
day2
怎么开户买收益6%的理财产品呢?
qiankun子应用package.json中的name成了默认路径
What is restful verb
pytorch中with torch.no_grad(): && model.eval()
