# Jenkins Pipeline 简介
Jenkins Pipeline (or simply "Pipeline") provides an extensible set of tools for modeling simple-to-complex delivery pipelines `"as code"`. The definition of a Jenkins Pipeline is typically written into a text file (called a `Jenkinsfile`) which in turn is checked into a project’s source control repository.
## Pipeline 定义
- Declarative Pipeline
- Scripted Pipeline (a limited form of Groovy)
Both are DSLs to describe portions of your software delivery pipeline.
Pipeline 可以使用下面三种方法创建:
- Through Blue Ocean
- Through the classic UI
- In SCM
## Jenkinsfile
Jenkinsfile (Declarative Pipeline)
```groovy
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building..'
}
}
stage('Test') {
steps {
echo 'Testing..'
}
}
stage('Deploy') {
steps {
echo 'Deploying....'
}
}
}
post {
always {
junit '**/target/*.xml'
}
failure {
mail to: team@example.com, subject: 'The Pipeline failed :('
}
}
}
```
## 全局变量
The **Global Variable Reference** only contains documentation for variables provided by Pipeline or plugins.
<http://localhost:8080/pipeline-syntax/globals>
### env
Environment variables can be set globally or per stage. Setting environment variables per stage means they will only apply to the stage in which they’re defined.
`env.PATH`
```groovy
pipeline {
agent any
environment {
COOKBOOK = 'propel_ha'
}
stages {
stage('Build') {
environment {
DEPLOY_UI = 'yes'
}
steps {
echo "Global Environment Variable COOKBOOK = $env.COOKBOOK"
echo "Stage Environment Variable DEPLOY_UI = $env.DEPLOY_UI"
sh 'env'
}
}
}
}
```
### params
`params.sap_adapter_gitsha`
### currentBuild
`currentBuild.result`