🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
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 '项目部署' } } ```