当前位置:网站首页>Jenkins入门(二)声明式流水线Jenkins Pipeline
Jenkins入门(二)声明式流水线Jenkins Pipeline
2020-11-06 22:33:00 【超_Charles】
1. Jenkins Pipeline 基本概念
流水线是用户定义的一个CD流水线模型 。流水线的代码定义了整个的构建过程, 他通常包括构建, 测试和交付应用程序的阶段 。 Jenkins Pipeline
(或简称为"Pipeline")是一套插件,将持续交付的实现和实施集成到Jenkins中。 持续交付Pipeline
自动化的表达了这样一种流程:将基于版本控制管理的软件持续的交付。 Jenkins Pipeline 的定义通常被写入到一个Jenkinsfile
文本文件中,该文件可以被放入项目的源代码控制库中。
2.Jenkinsfile 基础语法
pipeline { // 特定语法,pipeline 块定义了整个流水线中完成的所有的工作
agent any // agent为整个流水线分配一个执行器 (在节点上)和工作区
stages { // 所有流程(状态)的外层块,仅有一个
stage('Build') { // 每个stage为一流程,定义名称
steps { // 步骤块,内部包含具体操作
sh 'make' // sh操作,其引号间的文字会当成shell直接执行
}
}
stage('Test'){
steps {
sh 'make check'
junit 'reports/**/*.xml' //junit使用匹配的定义测试xml进行单元测试
}
}
stage('Deploy') {
steps {
sh 'make publish'
}
}
}
}
3.创建 Hello World 流水线
- 登录
Jenkins
,新建任务(New Item),选择流水线
,输入工程名称Hello Pipeline
,确定。 - 填写描述,勾选
参数化构建过程(This project is parameterized)
。 - 添加参数,选择
字符参数(String parameter)
,并设置这个字符串参数(名称,默认值,描述),这样我们在Jenkinsfile中就可以取到这个值了。 - 向下滑动到
流水线
,定义选择Pipeline script
,脚本输入如下内容,然后保存。
pipeline {
agent any
environment { //环境变量
GREETING="Hello"
}
stages{
stage('打招呼') {
steps{
sh 'echo "$GREETING $TITLE"'
}
}
}
post { //构建完成后置操作
aborted { //如果构建中断,则执行
echo '构建被中止!'
}
success { //构建成功执行
echo '构建成功!'
}
failure { //构建失败执行
echo '构建失败!'
}
}
}
-
点击
Build with Parameters(参数化构建)
,然后开始构建
。 -
构建完成输出界面:
-
把鼠标放在打招呼下边的绿色框上,点出现的
logs
,可以看到输出了预期的值。 -
找到左下角的
Build History(构建历史)
的构建版本号,如当前是#1
,点进去,选择Console Output
查看详细的执行日志。
# 成功Console Output
Started by user charles
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /home/jenkins/root/workspace/Hello Pipeline
[Pipeline] {
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (打招呼)
[Pipeline] sh
+ echo 'Hello Jenkins Pipeline'
Hello Jenkins Pipeline
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Declarative: Post Actions)
[Pipeline] echo
构建成功!
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
版权声明
本文为[超_Charles]所创,转载请带上原文链接,感谢
https://my.oschina.net/chaoo/blog/4703690
边栏推荐
- 移动端像素适配方案
- The 4th China BIM (digital construction) manager Summit Forum will be held in Hangzhou in 2020
- 消防器材RFID固定资产管理系统
- Mongo user rights login instruction
- JS string - string string object method
- [learning] interface test case writing and testing concerns
- Mobile pixel adaptation scheme
- 2020-08-14:数据任务的执行引擎用的哪些?
- Stickinengine architecture 12 communication protocol
- 如何使用甘特图图层和筛选器
猜你喜欢
Common syntax corresponding table of mongodb and SQL
August 14, 2020: what are the execution engines for data tasks?
Es create a new index database and copy the old index library, practice pro test effective!
Cloudquery v1.2.0 release
1万辆!理想汽车召回全部缺陷车:已发生事故97起,亏损将扩大
“非洲用户的付费意愿并不低”——专访四达时代研发总监张亮
August 30, 2020: naked write algorithm: the nearest common ancestor of two nodes in a binary tree.
Code generator plug-in and creator preform file analysis
Common mathematical basic formulas of recursive and backtracking algorithms
Design of NAND flash interface control
随机推荐
Summary of common SQL statements
Js数组-数组的用法全在这里(数组方法的重构、数组的遍历、数组的去重,数组的判断与转换)
【涂鸦物联网足迹】物联网基础介绍篇
2020-08-17: how to solve data skew in detail?
Stm32f030f4p6 compatible with smart micro mm32f031f4p6
[forward] how to view UserData in Lua
Nonvolatile MRAM memory used in all levels of cache
Zhou Jie: database system of East China Normal University
南京标识标牌设计制作,导视VI系统设计
How to add modules to nginx image?
C language I blog assignment 03
[learning] interface test case writing and testing concerns
2020-08-29: process thread differences, in addition to the inclusion relationship, the underlying details?
Google browser realizes video playback acceleration function
August 18, 2020: introduce Mr process?
2020-08-19: what mechanism does TCP ensure reliability?
Plug in bilibilibili new version 0.5.5
Es create a new index database and copy the old index library, practice pro test effective!
2020-08-14:数据任务的执行引擎用的哪些?
如何创建交互式内核密度图表