jenkins 持续集成和交付——pipeline(五)
前言
整理一下pipeline。
正文
介绍
什么是pipeline呢?
根据前面的所得,我们知道,以前都是模板形式,但是如果有些复杂的项目,需要用更加自定义的写法,那么就有了pipeline,也就是官方给我们的接口,让我们实现更加复制的项目。
pipeline脚本是由groovy实现的,但是我们去写一个构件脚本,也没必要去知道这个groovy实现。
pipeline支持两种语法,Declarative(声明式的)和script pipline语法。
这两种有啥区别,区别就是Declarative更加简单,因为是声明的,我们写代码也知道这种声明的一般都是非常简洁,富有规律的,官方现在也是推荐这种申明的。
pipline 存储方式有两种,一种是写在我们的jenkins的数据库中,也就是说由我们的jenkins 去管理。
另一种是写在我们的项目中,然后jenkins去调用这个脚本,一般为了方便写在jenkinsFile中,有些项目成熟到一定时候,基本不会变动的情况,为了方便会放在jenkins 的衍生项目中,这又是后话了。
使用
在使用这个pipeline 中,我们要安装一下pipeline插件。
然后就出现了下面这个东西:

接下来就是我们就可以创建一下流水线项目了。
好吧,开始。目的就是把我们前面的构建项目用pipeline实现一遍。
我创建了一个名字叫java_pipelien 的pipeline项目,里面是这样的,我选中了这个hello word,这个是个声明式的pipeline。
如下:

pipeline {
agent any
stages {
stage('Hello') {
steps {
echo 'Hello World'
}
}
}
}
简单解释一下是什么意思。
上面有一个agent 是代理的意思,后面docker 中我会介绍,这里不详细介绍。
stages 就是阶段。里面就是一步一步的小阶段了,一个阶段里面又可以分为步骤,steps就是步骤了,就是这么划分的。
好吧,直接进入例子,把前面的例子用pipeline重写一遍。
那么第一步我们就是要去拉取代码,那么就去拉取一下吧。
1.拉取代码
那么代码怎么写呢?是否我们要去学一下pipeline呢?当然不完全,前期我们可以依靠一些工具。
项目里面有一个流水线语法:

点击这个,我们可以看自己进去生成一些code。
这样选择一下:

点击生成代码后。
下面是生成的code:
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '0c040834-78c4-4ba0-b6e3-b7cc9e9184c6', url: 'http://localhost:3000/aoximin/springbootTest.git']]])
这就是去拉取代码的步骤。
然后我们可以复制过去:

好吧,现在可以build 一下,试一下。

这样就可以看到去拉取了代码了,并且成功了。
2.开始构建项目
因为我们安装了maven,其实我们要做的就是如何实现maven脚本的调用。

然后复制过去。

然后可以自己试一下哈。
3.发布
也就是我们需要远程部署,那么这个怎么弄呢?前面我们是通过插件来搞定的,难道要我们自己用脚本来写,怎么写呢?
实际上jenkins 插件有规范的,既然是有规范的,那么其实我们可以调用插件,而不需要自己去实现。
安装完前面的发布插件,那么就会有这个东西。

和以前一样填写。
然后生成,然后贴过去。
4.结果
看下结果。

成功了。
根据前面所说,我们希望脚本放置在项目中,那么这个怎么弄呢?
5.jenkinsfile
在你的项目下创建一个jenkinsfile,然后把你的pipeline代码放进去。
如下:

然后上传。
接下来就是就开始实践了。
写法如下:

然后构建即可,然后就成功了。
结
下一节,介绍触发器。
jenkins 持续集成和交付——pipeline(五)的更多相关文章
- Jenkins 从小白入门到企业实践打怪放弃之路系列笔记 【持续集成与交付快速入门必备】
Jenkins 从小白入门到企业实践打怪放弃之路系列笔记 [持续集成与交付快速入门必备]
- CentOS 7 Gitlab+Jenkins持续集成+自动化部署
基于上次的环境<部署Gitlab+Jenkins持续集成环境> 来实现自动化部署 系统管理–>插件管理–>安装以下插件: Credentials Plugin(默认已经安装) ...
- .NET持续集成与自动化部署之路第一篇——半天搭建你的Jenkins持续集成与自动化部署系统
.NET持续集成与自动化部署之路第一篇(半天搭建你的Jenkins持续集成与自动化部署系统) 前言 相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛 ...
- 手把手教你利用Jenkins持续集成iOS项目
前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...
- Jenkins持续集成(上)-Windows下安装Jenkins
环境:Windows 2008 R2.Jenkins2.235.1: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成SLB.配置管理.Jenkins)> ...
- 什么是 Jenkins? 运用Jenkins持续集成
[注]本文译自:https://www.edureka.co/blog/what-is-jenkins/ 持续集成是 DevOps 最重要的部分,用于集成各个 DevOps 阶段.Jenkins ...
- jenkins持续集成go应用
上文讲到使用supervisor管理我们的终端应用,这次讲一下使用jenkins持续集成 下面分别讲一下pipeline里每一个段落的含义 agent any 使用任意节点构建 parameters ...
- 基于Kubernetes/K8S构建Jenkins持续集成平台(下)
基于Kubernetes/K8S构建Jenkins持续集成平台(下) Jenkins-Master-Slave架构图回顾: 安装和配置NFS NFS简介 NFS(Network File System ...
- python_java_selenium_ jenkins持续集成Firfox_chrome浏览器不显示的解决方法?
python_java_selenium_ jenkins持续集成Firfox_chrome浏览器不显示的解决方法: 原因:因为jenkins是用windows installer 安装成 windo ...
- jenkins持续集成源码管理选项为None,构建失败找不到git.exe解决办法
我的jenkins版本为Jenkins ver. 2.19.1 1.源码管理选项只有None的解决办法: 在插件管理中心,搜索对应的源码管理插件这里以git为例,搜索git plugin点击右下角的安 ...
随机推荐
- .Java 关于继承小练习3
1 package com.bytezero.inherit3; 2 3 public class CylinderTest 4 { 5 public static void main(String[ ...
- vue-router tomcat 下报404 WEB-INF 放入 web.xml 即可
vue-router tomcat 下报404 WEB-INF 放入 web.xml 即可 <?xml version="1.0" encoding="UTF-8& ...
- Dreamweaver基础教程:学习CSS
目录 CSS 简介 CSS 语法 Id 和 Class id 选择器 class 选择器 CSS 创建 外部样式表 内部样式表 内联样式 多重样式 多重样式优先级 背景(background) 背景颜 ...
- WPF之属性
目录 属性 依赖属性(Dependency Property) 依赖属性对内存的使用方式 声明和使用依赖属性 声明依赖属性 使用依赖属性 依赖属性的"属性" 依赖属性的" ...
- linux-debian-把用户加入root组
使用vim进入 /etc/sudoers 打开这个文件(或者 vi)也行 修改数据: 敲击键盘上个的 i 就可以键入字符了, 在root = ALL(ALL:ALL) ALL 的下面敲击 用户 ...
- Asp .Net Core 系列:Asp .Net Core 集成 Hangfire+MySQL
简介 https://www.hangfire.io/ 在 .NET 和 .NET Core 应用程序中执行后台处理的简单方法,无需 Windows 服务或单独的进程. Hangfire 是一个开源的 ...
- Android 优雅的Activity回调代码封装
原文地址: Android 优雅的Activity回调代码封装 - Stars-One的杂货小窝 之前提到Jetpack架构组件学习(3)--Activity Results API使用 - Star ...
- [模板]01trie,维护异或最大值
// 查询异或最大值,每次插入和查询时间都是log(C) template<class T> class trie01 { vector<vector<T>> tr ...
- webserver总结
可设置参数:连接池最大连接数,最大线程数,任务队列最大值,timeslot epoll epoll监听listen_fd(接受新客户端和断开连接), pipefd(将信号输入到管道用epoll统一管理 ...
- 10_PCM转WAV
播放器是无法直接播放PCM的,因为播放器并不知道PCM的采样率.声道数.位深度等参数.当PCM转成某种特定的音频文件格式后(比如转成WAV),就能够被播放器识别播放了. 本文通过2种方式(命令行.编程 ...