03.Jenkins学习笔记–Jenkins Pipeline核心应用
知识点
- Pipeline 概要
- Pipeline 基础语法
- 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:
- 直接在 Jenkins 网页界面中输入脚本
- 通过创建一个 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 仓库:
构建成功