前言

整理一下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(五)的更多相关文章

  1. Jenkins 从小白入门到企业实践打怪放弃之路系列笔记 【持续集成与交付快速入门必备】

    Jenkins 从小白入门到企业实践打怪放弃之路系列笔记 [持续集成与交付快速入门必备]

  2. CentOS 7 Gitlab+Jenkins持续集成+自动化部署

    基于上次的环境<部署Gitlab+Jenkins持续集成环境> 来实现自动化部署 系统管理–>插件管理–>安装以下插件: Credentials Plugin(默认已经安装) ...

  3. .NET持续集成与自动化部署之路第一篇——半天搭建你的Jenkins持续集成与自动化部署系统

    .NET持续集成与自动化部署之路第一篇(半天搭建你的Jenkins持续集成与自动化部署系统) 前言     相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛 ...

  4. 手把手教你利用Jenkins持续集成iOS项目

    前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...

  5. Jenkins持续集成(上)-Windows下安装Jenkins

    环境:Windows 2008 R2.Jenkins2.235.1: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成SLB.配置管理.Jenkins)> ...

  6. 什么是 Jenkins? 运用Jenkins持续集成

    [注]本文译自:https://www.edureka.co/blog/what-is-jenkins/   持续集成是 DevOps 最重要的部分,用于集成各个 DevOps 阶段.Jenkins ...

  7. jenkins持续集成go应用

    上文讲到使用supervisor管理我们的终端应用,这次讲一下使用jenkins持续集成 下面分别讲一下pipeline里每一个段落的含义 agent any 使用任意节点构建 parameters ...

  8. 基于Kubernetes/K8S构建Jenkins持续集成平台(下)

    基于Kubernetes/K8S构建Jenkins持续集成平台(下) Jenkins-Master-Slave架构图回顾: 安装和配置NFS NFS简介 NFS(Network File System ...

  9. python_java_selenium_ jenkins持续集成Firfox_chrome浏览器不显示的解决方法?

    python_java_selenium_ jenkins持续集成Firfox_chrome浏览器不显示的解决方法: 原因:因为jenkins是用windows installer 安装成 windo ...

  10. jenkins持续集成源码管理选项为None,构建失败找不到git.exe解决办法

    我的jenkins版本为Jenkins ver. 2.19.1 1.源码管理选项只有None的解决办法: 在插件管理中心,搜索对应的源码管理插件这里以git为例,搜索git plugin点击右下角的安 ...

随机推荐

  1. 真实开发中-redis在项目中的应用场景

    一.需求描述 从自己当前负责参与开发的一个项目中来看,redis主要的应用场景有如下几个,第一个是保存用户信息,这个需要频繁的获取.比如 在打开某一个页面进行查询时,就先需要获取用户信息,看用户是否具 ...

  2. 浏览器的文件访问 API 入门(英文)- 资料

    浏览器的文件访问 API 入门(英文)- 资料 浏览器现在提供了文件访问 API(File System Access API),允许网页 JS 脚本读写本地文件,本文是一个详细的介绍.另外,也可以参 ...

  3. 魅族16T屏幕尺子

  4. android使用StringRequest访问网站接收JSON时空指针报错

    報錯詳情: 代碼詳情: 报错原因:他丫变量名与JSON格式中的变量名不同

  5. Windows 环境使用 Xshell 连接 VMware 虚拟机上的 CentOS 系统

    1.VMware 点击虚拟机的设置,打开弹窗,网络使用 NAT 模式 2.VMware 菜单栏:点击 编辑>>>虚拟网络编辑器 (1)选择 VMnet8 (2)选择 NAT 模式 ( ...

  6. 关于进程同步与互斥的一些概念(锁、cas、futex)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明   无 前言   最近为了实现在android lin ...

  7. 瑞云与宜宾职院开展校企合作,同深圳VR联合会共建元宇宙产业学院

    2022年7月9日,宜宾职业技术学院携手深圳市虚拟现实产业联合会和深圳市瑞云科技有限公司,合作共建的"元宇宙职业教育研究与应用中心"."元宇宙产业学院"授牌仪式 ...

  8. golang 依赖控制反转(IoC) 改进版

    最近在开发基于golang下的cqrs框架 https://github.com/berkaroad/squat (陆续开发中,最近断了半年,懒了...).这个框架依赖ioc框架,因为之前写了一个io ...

  9. CYarp:力压frp的C#高性能http内网反代中间件

    我以前开发过HttpMouse的http内网反代中间件,但由于当时的知识点与设计水平受限,所以把它下马了.随着自身又遇到http内网反代的需求,在frp不能满足我需求情况下,我又启动了一个叫CYarp ...

  10. rust使用lazy_static对全局变量多线程并发读写示例

    首先需要在项目依赖Cargo.toml添加lazy_static依赖项 [dependencies] lazy_static = "1.4.0" 示例代码如下: use lazy_ ...