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 '項目部署'
}
}
}
}
```
構建后你可以看到整個流程。

**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網站