03.Jenkins学习笔记

Jenkins Pipeline核心应用

Posted by Chen Xingxu on September 8, 2020

03.Jenkins学习笔记–Jenkins Pipeline核心应用

知识点

  1. Pipeline 概要
  2. Pipeline 基础语法
  3. Pipeline Demo 演示

Pipeline 概要

前面我们演示的使用 Maven 来进行自动化构建,其流程分别是:

构建环境准备 –> 源码下载 –> 构建 –> 存档 –> 部署

这是一种固化的构建流程,如果你们的需求是多个项目需要进行依赖构建这种复杂的构建场景时该怎么办? Jenkins Pipeline 可以做到这一点。

Jenkins 从根本上讲是一种支持多种自动化模式的自动化引擎。Pipeline 在 Jenkins 上添加了一套强大的自动化工具,支持从简单的连续集成到全面的连续输送 Pipeline 的用例。用户可以基于他实现更为复杂的建模场景。

Pipeline 基础语法

以下就是一个非常简单的 Pipeline 脚本:

pipeline {
    agent any 
    stages {
        stage('Build') { 
            steps { 
                sh 'make' 
            }
        }
        stage('Test'){
            steps {
                sh 'make check'
                junit 'reports/**/*.xml' 
            }
        }
        stage('Deploy') {
            steps {
                sh 'make publish'
            }
        }
    }
}

  • agent —— 表示 Jenkins 应该为 Pipeline 的这一部分分配一个执行者和工作区
  • stage —— 描述了这条 Pipeline 的一个阶段
  • steps —— 描述了要在其中运行的步骤 Stage
  • sh —— 执行给定的 Shell 命令
  • junit —— 是由 JUnit 插件提供的 用于聚合测试报告的 Pipeline 步骤

Pipeline Demo 演示

前提条件

  • Jenkins 2.x 或更高版本
  • Pipeline 插件

可以通过以下任一方式创建基本 Pipeline:

  1. 直接在 Jenkins 网页界面中输入脚本
  2. 通过创建一个 Jenkinsfile 可以检入项目的源代码管理库

用任一方法定义 Pipeline 的语法是一样的,从项目源码中检入 Jenkinsfile 文件会更方便一些。

基于脚本构建 Pipeline

1、新建任务

2、编写 Pipeline script

pipeline {
    agent any 
    stages {
        stage('Build') { 
            steps { 
                echo 'Build' 
            }
        }
        stage('Test'){
            steps {
                echo 'Test'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploy'
            }
        }
    }
}

3、立即构建

4、查看 Logs

基于 Jenkinsfile 构建

Pipeline script

1、点击流水线语法

2、Check out from version control

3、生成流水线脚本

4、归档成品,生成流水线脚本

5、最终的 Pipeline script

pipeline {
    agent any 
    stages {
        stage('checkout') { 
            steps { 
                echo 'checkout' 
                checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'gogs-yangxu', url: 'http://git.yangxu.com:3000/yangxu/yangxu-simple-webbapp.git']]])
            }
        }
        stage('build'){
            steps {
                 echo 'build'
                 sh 'mvn clean install'
            }
        }
        stage('save') {
            steps {
               echo 'save'
               archiveArtifacts artifacts: 'target/*.war', followSymlinks: false
            }
        }
    }
}

6、配置到 yangxu-pipeline 任务中进行构建

如果提示 mvn command not found 错误,需要在 Jenkins 所在的服务器上建立 mvn 的软链接:

ln -s /usr/local/maven3/bin/mvn /usr/bin/mvn

因为 Jenkins 通过 Shell 脚本调用 mvn 命令的时候,是从 /usr/bin 文件夹中寻找的。

Pipeline script from SCM

填写 jenkinsfile 所在的 Git 仓库:

构建成功