【Jenkins Pipeline】安装与基本使用
本文目录 22 个章节
【Jenkins Pipeline】安装与基本使用
创建时间:2020/9/16 17:02
- 【Jenkins Pipeline】安装与基本使用
- 相关概念
- 软件配置管理 (Software Configuration Management, SCM)
- CI(Continuous integration, 持续集成)
- Jenkins
- 安装配置
- 下载
- 运行
- 安装配置
- Pipeline
- Jenkinsfile
- 语法
- agent 分配节点
- stage
- post
- parameters
- options
- environment
- 使用步骤
- 其他操作
- 遇到的坑
- 时间配置
- 脚本示例
- Ref
- 相关概念
相关概念
软件配置管理 (Software Configuration Management, SCM)
IEEE定义 A discipline applying technical and administrative direction and surveillance to identify and document the functional and physical characteristics of a configuration item, control changes to those characteristics, record and report change processing and implementation status, and verify compliance with specified requirements.
软件配置管理,是关于软件资产的管理。 软件 = 源代码 + 文档。 源代码、设计文档、可以运行的程序等在软件研发过程中产生的有价值的东西,都是软件资产。
是一种应用于整个软件工程过程的标识、组织和控制修改的围绕软件资产的管理技术。
软件配置管理,又称软件形态管理、或软件建构管理,简称软件形管。界定软件的组成项目,对每个项目的变更进行管控(版本控制),并维护不同项目之间的版本关联,以使软件在开发过程中任一时间的内容都可以被追溯,包括某几个具有重要意义的数个组合。
特点:
软件也是配置起来的。各个源文件、源代码和正确的文档搭配起来,编译产生正确的可以运行的程序。
软件更容易发生变化,是向前演进的。
软件的相关性(耦合)更高,一旦需要改动,通常不是只更改一个文件。
git就是一种SCM工具
CI(Continuous integration, 持续集成)
指的是,频繁地(一天多次)将代码集成到主干。 持续集成工具让产品可以快速迭代,同时还能保持高质量,可以快速的发现错误,防止分支大幅偏离主干。
Jenkins
安装配置
下载
http://updates.jenkins-ci.org/latest/jenkins.war
运行
两种运行方式:一种是基于tomcat、Jdk启动,一种是基于Docker启动
基本的java启动jenkins:
string a = "test";
string tmp = "est";
string b = "t" + tmp;
Console.WriteLine(string .ReferenceEquals(str1, str2));
jenkins启动默认8080端口
关闭终端也不挂起:
string a = "test";
string tmp = "est";
string b = "t" + tmp;
Console.WriteLine(string .ReferenceEquals(str1, str2));
nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。 nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。 via. https://www.runoob.com/linux/linux-comm-nohup.html
Start Jenkins and Installing Jenkins as a Windows service https://wiki.jenkins.io/display/JENKINS/Installing+Jenkins+as+a+Windows+service
Use the Jenkins Windows installer
That program will install Jenkins as a service using a 64 bit JVM chosen by the user. Keep in mind that to run Jenkins as a service, the account that runs Jenkins must have permission to login as a service.
https://www.jenkins.io/doc/book/installing/windows/
基于Tomcat启动:https://www.cnblogs.com/jimmyshan-study/p/11982415.html 将jenkins.war放到Tomcat\webapps目录下,当启动tomcat的时候,Jenkins会随着服务器一起启动 ;
Pipeline
pipeline 是一个Jenkins插件 作用:作用:将独立运行于单个或者多个(节点的)任务连接起来,实现 单个任务难以完成的复杂流程编排与可视化。
Jenkinsfile
Jenkinsfile是Jenkins2.x核心特性Pipeline的脚本,由Groovy语言实现。
内部记录的内容是一套Jenkins 执行的流程,支持并行执行,Jenkinsfile 文件一般存放于代码仓库的根目录,即使Jenkins 需要重装或者安装Jenkins 的机器出了问题,Jenkinsfile 所记录的流程也可以很迅速的重新部署。
Jenkinsfile 有2 种写法
Declarative 通常Declarative 的写法可以满足大部分场景的需要,相对来说学习成本更低
Groovy 写法更灵活,比如Jenkins 的Shared Library 模式就需要用到Groovy
语法
agent 分配节点
any 在任何可用的节点上执行Pipeline, 默认master none 没有分配,子stage当中分配 label 指定节点
stage
一旦某个stage执行失败,所有的stage都会停止。post语句照常执行
post
和stages平级,构建状态的,预设的语句块 数据清理、发送邮件等
always: 不管构建状态怎么样,始终会运行
aborted { … } 当构建状态“中止”时运行(手动强行x掉)
success { … } 如果构建状态为“成功”或尚未设置,则运行
failure { … } 如果构建状态为“失败”,则运行
parameters
全局唯一,定义参数,在BuildWithParameters选项卡当中设置参数值。
文本参数支持换行
string a = "test";
string tmp = "est";
string b = "t" + tmp;
Console.WriteLine(string .ReferenceEquals(str1, str2));
options
指令允许从流水线内部配置特定于流水线的选项,全局唯一
disableConcurrentBuilds() 禁止并发
timestamps() 打印时间戳
timeout(time:5, unit:’SECONDS’)
timeout(5) == timeout(time:5, unit:’MINUTES’) timeout(activity:true, time:5, unit:’SECONDS’) activity: 此块的日志中没有活动之后的超时,而不是绝对持续时间。
environment
environment 指令制定一个 键-值对序列,该序列将被定义为所有步 骤的环境变量,或者是特定于阶段的步骤, 这取决于 environment 指令在流水线内的位置。
使用步骤
新建流水线
写Pipeline脚本
Pipeline脚本书写位置
在pipeline 的配置界面中,写下pipeline语法
仓库中的Jenkinsfile 文件(一般放在根目录中)
将脚本写在码云或Github上的Jenkinsfile中
选择 Pipeline script from SCM, 填写仓库地址,
- 点击立即构建,就会执行pipeline
Jenkins执行的步骤 在给定的代码仓库中检出jenkinsfile文件,读取文件并执行 有+号的行,代标要执行的语句
其他操作
启动Jenkins java -jar jenkins.war 启动jenkins服务器
重启Jenkins http://localhost:8080/restart
重载Jenkins配置信息 http://localhost:8080/reload
停止Jenkins服务器
方法1: Terminal and Kill Process
bash $ps -e | grep jenkins 56 ?? 1:22.88 /usr/bin/java -Dfile.encoding=UTF-8 -XX:PermSize=256m -XX:MaxPermSize=512m -Xms256m -Xmx512m -Djava.io.tmpdir=/Users/[redacted-user]/Jenkins/tmp -jar /Applications/Jenkins/jenkins.war --httpPort=8080 4981 ttys001 0:00.00 grep jenkins $sudo kill 56
方法2:通过URL
http://localhost:8080/exit
遇到的坑
- 找不到sh、nopub等命令
在本地环境变量中配置git程序的地址 重启jenkins,才能更新配置信息。
时间配置
Jenkins采用了著名的UNIX任务调度工具CRON所使用的配置方式。用5个字段代表5个不同的时间单位(中间用空格隔开):
分 时 日 月 星期几
实例1:每1分钟执行一次myCommand
* * * * myCommand
实例2:每小时的第3和第15分钟执行 3,15 * * * * myCommand 实例3:在上午8点到11点的第3和第15分钟执行 3,15 8-11 * * * myCommand 实例4:每隔两天的上午8点到11点的第3和第15分钟执行 3,15 8-11 /2 * myCommand 实例5:每周一上午8点到11点的第3和第15分钟执行 3,15 8-11 * * 1 myCommand 实例6:每晚的21:30重启smb 30 21 * * * /etc/init.d/smb restart 实例7:每月1、10、22日的4 : 45重启smb 45 4 1,10,22 * * /etc/init.d/smb restart 实例8:每周六、周日的1 : 10重启smb 10 1 * * 6,0 /etc/init.d/smb restart 实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb 0,30 18-23 * * * /etc/init.d/smb restart 实例10:每星期六的晚上11 : 00 pm重启smb 0 23 * * 6 /etc/init.d/smb restart 实例11:每一小时重启smb
- /1 * * /etc/init.d/smb restart 实例12:晚上11点到早上7点之间,每隔一小时重启smb 0 23-7 * * * /etc/init.d/smb restart
脚本示例
string a = "test";
string tmp = "est";
string b = "t" + tmp;
Console.WriteLine(string .ReferenceEquals(str1, str2));