Jenkins的Pipeline语法
1.Pipeline 是Jenkins 2.X核心特性,帮助Jenkins实现从CI到CD与DevOps的转变
2.Pipeline 简而言之,就是一套运行于Jenkins上的工作流框架, 将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的
复杂流程编排与可视化。
Pipeline 支持两种语法
声明式和脚本式是结果一样的
1.声明式(jenkins2.5新加入的语法)推荐使用
pipeline {
agent any
# stages前面可以写代理。docker环境加到流水线中来,
# 也可以加入一些环境 maven等,或者工具
stages { # stages 步骤 一般只有一个,可以有多个stage
#stage代表流水线中的某个阶段,可能出现n个。一般分为拉取代码,编译构建,部署等阶段
stage('Hello') {
#steps 步骤执行,用来编写步骤
steps {
echo 'Hello World'
}
}
}
}
我们自己编写一下
pipeline {
agent any
stages {
stage('拉取代码') {
steps { echo '拉取代码' }
}
stage('编译构建') {
steps { echo '编译构建' }
}
stage('项目部署') {
steps { echo '项目部署' }
}
}
}
在Jenkins里面保存运行,可以看到日志打印,在主页可以看到 执行时间与执行日志
2.脚本式
跟上面其实是差不多的,两种风格目标是一样的
#Node:节点,一个 Node 就是一个 Jenkins 节点,Master 或者 Agent,
# 是执行 Step 的具体运行环境,后续讲到Jenkins的Master-Slave架构的时候用到。
node {
def mvnHome
#Stage:阶段,一个 Pipeline 可以划分为若干个 Stage,每个 Stage 代表一组操作,比如:
#Build、Test、Deploy,Stage 是一个逻辑分组的概念。
stage('Preparation') { // for display purposes
// Get some code from a GitHub repository
git 'https://github.com/jglick/simple-maven-project-with-tests.git'
// Get the Maven tool.
// ** NOTE: This 'M3' Maven tool must be configured
// ** in the global configuration.
mvnHome = tool 'M3'
}
stage('Build') {
// Run the maven build
withEnv(["MVN_HOME=$mvnHome"]) {
if (isUnix()) {
sh '"$MVN_HOME/bin/mvn" -Dmaven.test.failure.ignore clean package'
} else {
bat(/"%MVN_HOME%\bin\mvn" -Dmaven.test.failure.ignore clean package/)
}
}
}
stage('Results') {
junit '**/target/surefire-reports/TEST-*.xml'
archiveArtifacts 'target/*.jar'
}
}
node {
def mvnHome
stage('Preparation') {
echo '项目部署'
}
stage('Build') {
echo '项目部署'
}
stage('Results') {
echo '项目部署'
}
}
脚本示范
- 生成检出脚本
- 打包命令
- 上传代码,这个只有在Jenkins下载对应的插件才有
Containers Tomcat 这里是可以增加多台的,如果是集群服务,可以多台新增