初试Jenkins2.0 Pipeline持续集成

初试Jenkins2.0 Pipeline持续集成

目录:

  • Jenkins 2.0介绍
  • 环境、软件准备
  • 安装、启动并配置jenkins服务
  • 新建Pipeline Job Demo
  • FAQ

1、Jenkins 2.0介绍

先介绍下什么是Jenkins 2.0,Jenkins 2.0的精髓是Pipeline as Code,是帮助Jenkins实现CI到CD转变的重要角色。什么是Pipeline,简单来说,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。Pipeline的实现方式是一套Groovy DSL,任何发布流程都可以表述为一段Groovy脚本,并且Jenkins支持从代码库直接读取脚本,从而实现了Pipeline as Code的理念。

Pipeline的几个基本概念:

  • Stage: 阶段,一个Pipeline可以划分为若干个Stage,每个Stage代表一组操作。注意,Stage是一个逻辑分组的概念,可以跨多个Node。
  • Node: 节点,一个Node就是一个Jenkins节点,或者是Master,或者是Agent,是执行Step的具体运行期环境。
  • Step: 步骤,Step是最基本的操作单元,小到创建一个目录,大到构建一个Docker镜像,由各类Jenkins Plugin提供。

2、环境、软件准备

本次演示环境,我是在本机mac上操作,以下是我本地软件及版本:

  1. Jenkins:version 2.46.3
  2. Tomcat:version 7.0.70
  3. Jdk:version “1.8.0_91”
  4. Docker: Version 17.03.0-ce-mac1 (15583)
  5. Gitlab: GitLab Community Edition 8.17.4

注意:本次我们分别演示两种方式安装jenkins,基于Tomcat和Jdk安装,我们需要提前安装好Jdk、Tomcat服务,基于Docker安装,我们需要提前安装docker环境。这里我就忽略Tomcat、Jdk、docker、gitlab的安装过程,着重说下Jenkins安装以及如何跑Pipeline Job。

3、安装、启动并配置jenkins服务

一、Jenkins安装启动方式有两种,一种是基于tomcat、Jdk启动,一种是基于Docker启动。

1)基于Tomcat、Jdk启动

  1. 首先下载Jenkins最新的安装包,可以去官网下载最新版,点击 这里 下载。
  2. 启动Jenkins可以有两种方式
    • 进入war包所在目录,直接执行java -jar jenkins.war
    • 将war包放在Tomcat webapps目录下,启动tomcat。

2)基于Docker启动

  1. 拉取jenkins官方镜像 docker pull jenkins
  2. 启动jenkins 容器
 docker run -p 8080:8080 -p 50000:50000 -v /Users/wanyang3/jenkins_home:/var/jenkins_home jenkins
 

启动完成之后,浏览器访问http://localhost:8080,第一次启动初始化稍慢一些,稍等一会就可开始jenkins初始化配置。

二、Jenkins初始化配置

1)、解锁Jenkins —》 Unlock Jenkins

说明:按照弹框提示,找到该initialAdminPassword文件,我这里使用Docker启动Jenkins,并且把jenkins_home目录挂载到我磁盘指定目录,所以这里我只需要复制/Users/wanyang3/jenkins_home/initialAdminPassword即可,如果非挂载方式Docker启动,则需要进入容器内根据提示路径找到该文件。

2)定制 Jenkins Customize Jenkins

说明:这里若选择Install suggested plugins安装,那么jenkins就会给你推荐安装一些很有用的插件,若选择Select plugins to install安装,那么就需要自己根据业务需要选择性安装某些插件。

3)创建第一个管理员用户,Create first admin user

说明:这里创建第一个管理员用户,也可以不设置,直接点击“Continue as admin”,进入jenkins以后再设置。

4、新建Pipeline Job Demo

1)创建一个pipeline job

创建完成后,点击该job —》设置 —》 Pipeline,在输入框中输入script语句。

示例script:

node{
    stage('get clone'){
        //check CODE
       git credentialsId: 'f3eb1fea-42b0-46b2-8342-a2be6a65fe73', url: 'http://xx.xx.xx/xx/qd_api.git'
    }

    //定义mvn环境
    def mvnHome = tool 'M3'
    env.PATH = "${mvnHome}/bin:${env.PATH}"

    stage('mvn test'){
        //mvn 测试
        sh "mvn test"
    }

    stage('mvn build'){
        //mvn构建
        sh "mvn clean install -Dmaven.test.skip=true"
    }

    stage('deploy'){
        //执行部署脚本
        echo "deploy ......" 
    }
}

注意:这里job执行pipeline定义,可以有两种方式,一种直接在job填写pipeline script来执行, 一种是使用pipeline script from SCM。

  • pipeline script:直接在Script输入框里面输入pipeline script语句即可,参考说明可以点击输入框下边的Pipeline Syntax,里面有很多示例操作说明,非常好用。
  • pipeline script from SCM:需要配置SCM代码存储Git地址或SVN地址,指定script文件所在路径,每次构建job会自动去指定的目录执行script文件。

2)配置全局工具配置Maven

因为我们的项目是Maven工程,这次执行build需要使用mvn命令,所以需要配置一个全局的Maven。 进入到 系统管理 -》Global Tool —》Maven -》Maven安装,指定Name、MAVEN_HOME、选择要安装的Mavne版本,自动安装即可。

3)执行构建

点击“立即构建”,即可开始构建,右侧Stage View查看构件流程,点击每个stage,可以查看每个阶段的详细日志输出。

FAQ

  1. 使用插件 mvn 命令,在script语句里面,我们使用的tool工具来获取全局Maven配置M3,这里我们也可以使用Pipeline Maven Integration Plugin插件来完成。 点击插件管理 —》可选插件 —》Pipeline Maven Integration Plugin —》立即安装,安装完成之后,就可以使用该插件使用mvn命令了。

示例script:

 node{     
      stage('get clone'){
          //check CODE
          git credentialsId: 'f3eb1fea-42b0-46b2-8342-a2be6a65fe73', url: 'http://xx.xx.xx/xx/qd_api.git'
      }      
          
      stage('mvn test'){
          withMaven(
              maven: 'M3') {
                  sh "mvn test"
          }     
       }      
          
       stage('mvn build'){
           //mvn构建
           withMaven(
               maven: 'M3',
               mavenLocalRepo: '.repository') {
                   sh "mvn clean install -Dmaven.test.skip=true"
          }     
       }      
          
       stage('deploy'){         
          //执行部署脚本
          echo "deploy ......"
       } 
}

2. 这里check code检出代码操作,jenkins默认集成github,这里我们使用自己的gitlab,clone项目需要用户名密码登录,这里我们可以使用jenkins的credentials创建证书,生成证书以后,在clone代码时,指定git credentialsId,即可完成认证工作。 若不知道生成的证书id是多少,这里有个好办法,去每个项目的pipeline-syntax,默认进入到Snippet Generator(代码段生成器),我们选择git: Git,然后输入Repository URL、Branch、选择Credentials,点击Generate Pipeline Script,在下方输入框里面,就可以生成对应的流程的脚本语句,是不是很方便。

参考文档: pipeline hello-world pipeline-plugin using-pipeline-plugin-accelerate-continuous-delivery-part-1 using-pipeline-plugin-accelerate-continuous-delivery-part-2 using-pipeline-plugin-accelerate-continuous-delivery-part-3

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小狼的世界

Jenkins 快速搭建

Jenkins 作为持续集成的重要工具,在DevOps整个工具链中有重要的地位。Jenkins 一般作为独立的应用运行在Java Servlet容器中如Jett...

963
来自专栏云计算

如何在Ubuntu上使用Jenkins自动构建

Jenkins是一个开源自动化服务器,允许您构建管道以自动化构建,测试和部署应用程序的过程。在本指南中,您将实施基本工作流程,以加快持续集成和持续交付(CI /...

1061
来自专栏大闲人柴毛毛

教你如何配置一套强大的防火墙——iptabels配置详解(一)

今天我来带领大家给自己的服务器搭建一套强大的防火墙!废话不多说,我们开始吧~ 啥是iptables? ipbtales是集成再Linux内核中的一套防火墙软件。...

27510
来自专栏進无尽的文章

兼容-记录Xcode8.0恢复插件全过程

Xcode 的插件大大丰富了 Xcode 的功能,而且有了 Alcatraz ,插件的管理也非常容易,但是有个非常恼人的问题:一旦升级 Xcode ,插件就失效...

1242
来自专栏张善友的专栏

Visual Studio 必备可视化插件推荐

1、Visual Studio Visualizer,项目地址 https://vsdatawatchers.codeplex.com/,这个项目包括以下内容的...

1895
来自专栏葡萄城控件技术团队

Web API 持续集成:PostMan+Newman+Jenkins(图文讲解)

上篇文章我们已经完成了API测试工具选型,接下来是一系列周期性的开发测试过程:接口开发、检出代码、运行测试、记录结果、发送报告。为了快速发现问题,并减少重复过程...

742
来自专栏华仔的技术笔记

Xcode安装插件

34811
来自专栏云计算教程系列

如何使用killall和kill命令来停止进程

killall是一个基于名称终止系统上运行进程的工具。kill则是终止基于进程ID号(PID)的进程。kill和killall还可以向进程发送特定的系统信号。

1433
来自专栏LinXunFeng的专栏

解决Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named

1434
来自专栏向治洪

基于xmpp聊天室实现,国外牛人作品

XMPP的官网:http://xmpp.org/ 测试帐号注册:https://register.jabber.org PC端下载地址注册之后就会看到下载地址 ...

2175

扫码关注云+社区