Pipeline 支持两种语法:Declarative(声明式)和 Scripted Pipeline(脚本式)语法。
<br/>
[TOC]
# 1. Declarative(声明式)语法
**1. 声明式语法**
```groovy
pipeline {
agent any
//stages:代表整个流水线的所有执行阶段。通常stages只有1个,里面包含多个stage
stages {
//stage:代表流水线中的某个阶段,可能出现n个。一般分为拉取代码,编译构建,部署等阶段。
stage('Hello') {
//steps:代表一个阶段内需要执行的逻辑。steps里面是shell脚本,git拉取代码,ssh远程发布等任意内容。
steps {
echo 'Hello World'
}
}
}
}
```
**2. 一个简单声明式Pipeline**
```groovy
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
echo '拉取代码'
}
}
stage('编译构建') {
steps {
echo '编译构建'
}
}
stage('项目部署') {
steps {
echo '项目部署'
}
}
}
}
```
构建后你可以看到整个流程。
![](https://img.kancloud.cn/3a/3a/3a3a2b2b8b47e3387e7f9b60746b99d0_1120x310.jpg)
**3. 下面总结的是常用的Pipeline模板**
```groovy
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '68f2087f-a034-4d39-a9ff-1f776dd3dfa8', url: 'git@192.168.66.100:itheima_group/web_demo.git']]])
}
}
stage('编译打包') {
steps {
sh label: '', script: 'mvn clean package'
}
}
stage('项目部署') {
steps {
deploy adapters: [tomcat8(credentialsId: 'afc43e5e-4a4e-4de6-984f- b1d5a254e434', path: '', url: 'http://192.168.66.102:8080')], contextPath: null, war: 'target/*.war'
}
}
}
}
```
<br/>
# 2. Scripted Pipeline(脚本式)语法
**1. 脚本式语法**
```groovy
//node:节点,一个 node 就是一个 Jenkins 节点,Master 或者 Agent,
// 是执行 Step 的具体运行环境,后续讲到Jenkins的Master-Slave架构的时候用到。
node {
def mvnHome
//stage:阶段,一个 Pipeline 可以划分为若干个 Stage,每个 Stage 代表一组操作,
// 比如:Build、Test、Deploy,Stage 是一个逻辑分组的概念。
stage('Preparation') {
//step:步骤,step 是最基本的操作单元,可以是打印一句话,也可以是构建一个 Docker 镜像,
// 由各类 Jenkins 插件提供,比如命令:sh 'make',就相当于我们平时 shell 终端中执行 make 命令一样。
// 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'
}
}
```
**2. 一个简单的脚本式Pipeline**
```groovy
node {
stage('拉取代码') {
echo '拉取代码'
}
stage('编译构建') {
echo '编译构建'
}
stage('项目部署') {
echo '项目部署'
}
}
```
- 相关概念
- 软件开发生命周期
- 软件开发瀑布模型
- 软件的敏捷开发
- 持续集成
- Jenkins介绍
- Jenkins是什么
- Jenkins的特征
- Jenkins环境搭建
- 搭建架构说明
- Gitlab安装与配置
- Jenkins安装与配置
- Tomcat安装和配置
- Jenkins构建项目
- 自由风格软件项目构建
- Maven项目构建
- Pipeline流水线项目构建
- Pipeline是什么
- Pipeline语法
- 流水线项目构建演示
- Pipeline Script from SCM
- 构建触发器
- 触发远程构建
- 其他工程构建后触发
- 定时构建
- 轮询SCM
- Git hook自动触发构建
- 参数化构建
- 配置邮箱发送构建结果
- SonarQube代码审查平台
- SonarQube是什么
- SonarQube平台搭建
- 安装jdk11
- 安装数据库PostgreSQL12
- 安装SonarQube
- SonarQube实现代码审查
- Jenkins+Docker+SpringCloud(1)
- 流程说明
- 环境搭建
- 服务器列表
- Docker安装与配置
- Harbor安装与配置
- Nginx安装与配置
- 微服务持续集成演示
- Jenkins上配置
- 微服务项目配置
- 部署前端静态web网站