本文是《Jenkins流水线(pipeline)实战》系列的第二篇,上一篇搭建好了Jenkins环境并执行了一个简单的pipeline任务,当时我们直接在Jenkins网页上编写pipeline脚本,这种方式虽然简单,但是也有不足之处:

  1. pipeline脚本内容复杂时,在网页上编辑和查找都不方便;
  2. 无法对脚本文件做版本管理,例如提交到GitHub上;

今天的文章打算解决上述问题:将pipeline脚本以文件的形势保存在GitHub上,让Jenkins下载该脚本然后执行;

系列文章地址

  1. 《Jenkins流水线(pipeline)实战之:从部署到体验》
  2. 《让Jenkins执行GitHub上的pipeline脚本》

    环境信息

    为了快速搭建Jenkins环境,我这里用到了Docker,部署Jenkins的详情请参考《Jenkins流水线(pipeline)实战之:从部署到体验》,今天的实战需是在以下环境进行的:

  3. 操作系统:Ubuntu 18.04.2 LT
  4. Docker:19.03.1
  5. Jenkins: 2.176.3(运行与Docker环境)

上传pipeline脚本文件到GitHub

本次实战用的是我自己的GitHub账号,代码仓库是:https://github.com/zq2599/blog_demos

  1. 写一个测试用的pipeline脚本文件,上传到GitHub上,如下图,文件地址是:https://github.com/zq2599/blog_demos/blob/master/blueocean/helloworld/Jenkinsfile
  2. Jenkinsfile文件在代码仓库的相对路径是blueocean/helloworld,如下图:

    GitHub开放授权

    为了让Jenkins顺利地从GitHub下载到pipelien脚本,需要在GitHub上开放授权,具体的方式:

  3. 登录GitHub后,在右上角的账号菜单中点击Settings,如下图:
  4. 点击下图红框中的"Developer settings"按钮:
  5. 点击下图红框中的"Personal access tokens"按钮:
  6. 接下来就是创建授权token的页面,这里要选好开放授权的功能,如下图,两个红框中的功能Jenkins会用到的,必须勾选:
  7. 设定完毕后,点击底部绿色的Generate token按钮,就会生成一个字符串,这就是授权token,复制下来,稍后会用到;
    至此,GitHub上的设置就完成了,接下来在Jenkins上设置流水线任务;

    Jenkins设置流水线任务

    现在我们在Jenkins上创建一个流水线任务,该任务从GitHub下载刚才上传的pipeline脚本;

  8. 在Jenkins的左侧菜单上点击打开 Blue Ocean,进入Blue Ocean页面,Blue Ocean页面比起原生的Jenkins设置页面更加适合流水线人的管理和配置:
  9. 点击下图红框中的创建流水线按钮:
  10. 进入的页面如下图所示,这就是设置流水线的页面,按照序号依次设置,即可完成流水线的新建:
  11. 由于Jenkinsfile文件不在GitHub仓库的第一级目录下,因此没有被Jenkins扫描到,所以我们要手动指定Jenkinsfile文件的位置,点击下图中的红框按钮,回到任务列表:
  12. 在任务列表点击刚才新建的任务,如下图红框所示:
  13. 点击下图红框中的图标,即可跳转到该任务的Jenkins设置页面:
  14. 如下图,找到Build Configuration设置项,在下图红框位置输入blueocean/helloworld/Jenkinsfile,这是刚才上传的文件在仓库中的相对位置:
  15. 点击底部的保存按钮,保存配置:
  16. 此时Jenkins会自动开始一个扫描GitHub仓库的任务,如果配置无误,该任务会执行成功:
  17. 配置完毕,再次回到Blue Ocean页面,点开该任务,按照下图红框进行操作,即可运行该任务:
  18. 任务启动后,点击下图红框中的活动按钮,即可查看任务的执行情况:
  19. 点击上图中任何一条执行记录,可以查看详情,如下图,第三次执行情况显示成功从GitHub获取pipeline脚本,并且执行成功:

    修改pipeline源码再次执行

    接下来验证pipeline脚本修改后能否立即生效:

  20. 修改Jenkinsfile文件的内容并且提交到GitHub,如下图红框所示,控制台打印的内容被修改了:
  21. 再次在Blue Ocean页面启动任务,可见更新Jenkinsfile和执行任务都成功了:

    至此,让Jenkins执行GitHub上的pipeline脚本的实战就完成了,希望能给您带来一些参考,接下来的文章中,我们将探索更多pipeline功能;

    欢迎关注我的公众号:程序员欣宸

让Jenkins执行GitHub上的pipeline脚本的更多相关文章

  1. mysql数据库,如何在登录mysql之后执行操作系统上的SQL脚本?

    需求描述: 通过mysql客户端登录到mysql数据库,如何执行操作系统上的SQL脚本文件呢? 操作过程: 1.编写测试脚本文件 [mysql@redhat6 scripts]$ cat SeCoun ...

  2. TeamCity编译执行selenium上传窗口脚本缺陷

    2015-07-04 18:05 编写本文 TeamCity编译selenium脚本,对于上传窗口处理只支持sendKeys的使用,不支持模拟人为按下Enter键和使用autoIt等操作,即使本地调试 ...

  3. Jenkins把GitHub项目做成Docker镜像

    本文是<Jenkins流水线(pipeline)实战>系列的第三篇,前面已对Jenkins流水线有了基本认识,也试过从GitHub下载pipeline脚本并执行,今天的实战是编写一段pip ...

  4. jenkins 入门教程(上)

    jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译.打包.分发部署.jenkins可以很好的支持各种语言(比如:java, ...

  5. jenkins 入门教程(上)【转】

    转自:https://www.cnblogs.com/yjmyzz/p/jenkins-tutorial-part-1.html jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更 ...

  6. 执行sh脚本文件下载Github上的代码(雷霄骅的ffmpeg示例代码)

       今天想重新学习下ffmpeg,于是又来到了雷晓骅的博客,先下载了他的所有代码,这里记录一下在Windows上使用sh脚本下载GitHub上代码的过程. CygWin(最后并没有用到)    可以 ...

  7. Jenkins的Pipeline脚本在美团餐饮SaaS中的实践

    一.背景 在日常开发中,我们经常会有发布需求,而且还会遇到各种环境,比如:线上环境(Online),模拟环境(Staging),开发环境(Dev)等.最简单的就是手动构建.上传服务器,但这种方式太过于 ...

  8. Jenkins的Pipeline脚本在美团餐饮SaaS中的实践(转)

    一.背景 在日常开发中,我们经常会有发布需求,而且还会遇到各种环境,比如:线上环境(Online),模拟环境(Staging),开发环境(Dev)等.最简单的就是手动构建.上传服务器,但这种方式太过于 ...

  9. linux 执行远程linux上的shell脚本或者命令以及scp 上传文件到ftp--免密码登陆

    场景:在linux A 上执行Linux B上的shell脚本和命令 步骤1.设置ssh免登陆 1.SSH无密码登录 # 本地服务器执行(A机器):生成密钥对 ssh-keygen -t dsa -P ...

随机推荐

  1. 2月11日 阿里巴巴Java开发手册 读后感

    该手册分为几个部分: 印象深刻的几点: (五)集合处理 2.[强制]ArrayList的subList结果不可强转成ArrayList,否则会抛出ClassCastException 异常:java. ...

  2. JavaWeb——JSP表达式语言(EL)

    1.JSP表达式语言(EL)用于在jsp从访问存储在JavaBean中的数据,例如 User ID: ${user.userId}<br /> 这里的${user.userId}就是JSP ...

  3. 解决H5微信浏览器中audio兼容-- 背景音乐无法自动播放

    我们知道,ios 在safari浏览器中,audio标签不能在没有用户交互的情况下自动播放或有js直接控制播放,这是系统限制的一些原因. 但是背景音乐在微信浏览器可以设置自动播放,config配置一下 ...

  4. 三角函数与JavaScript

     1. 三角函数 sin&(求对边与斜边的比值) cos&(邻边与斜边的比值) tan&(对边与邻边的比值) 2.JavaScript的函数的使用 Math.sin() Mat ...

  5. 利用递归,反射,注解等,手写Spring Ioc和Di 底层(分分钟喷倒面试官)了解一下

    再我们现在项目中Spring框架是目前各大公司必不可少的技术,而大家都知道去怎么使用Spring ,但是有很多人都不知道SpringIoc底层是如何工作的,而一个开发人员知道他的源码,底层工作原理,对 ...

  6. 持续集成高级篇之Jekins脚本参数化构建

    系列目录 本系列已经很久没有更新了,接前面基础篇,本系统主要介绍jenkins构建里的一些高级特性.包括脚本参数化,Jenkins Pipeline与及在PipeLine模式下如何执行常见的传统构建任 ...

  7. PythonI/O进阶学习笔记_3.1面向对象编程_python的多态和鸭子类型

    前言: 与第一篇的面向对象内容不同的是,第一篇中的面向对象更多的是与类.对象结合起来的概念粗浅理解,就是在编程历史中诞生的一种思想方法. 这篇的面向对象编程,更多落实到在语言设计实现中,是如何体现面向 ...

  8. Leetcode之深度优先搜索(DFS)专题-513. 找树左下角的值(Find Bottom Left Tree Value)

    Leetcode之深度优先搜索(DFS)专题-513. 找树左下角的值(Find Bottom Left Tree Value) 深度优先搜索的解题详细介绍,点击 给定一个二叉树,在树的最后一行找到最 ...

  9. Nginx反向服务器搭建

    Nginx环境搭建 下载解压Nginx源码包 可以通过已有的压缩包 这里也可以通过yum的在线下载 wget http://nginx.org/download/nginx-1.13.7.tar.gz ...

  10. BS/CS 区别

    转载自:https://www.cnblogs.com/chenmingjun 一.CS和BS含义: CS即Client/Server(客户机/服务器)结构.C/S结构在技术上很成熟,它的主要特点是交 ...