Pipeline

Pipeline 是 Jenkins 中最为灵活的 job 构建方式,可实现像流水线一样调度 Jenkins 任务,通过 Jenkinsfile 描述整个持续集成流程。

Pipeline 支持使用声明式语法编写 Jenkinsfile。

    Jenkinsfile 如何组成呢?

Jenkinsfile 结构如下图所示:

pipeline


pipeline{}
pipeline {
    /* Declarative Pipeline */
}

agent


agent{}
pipeline{}stage{}

    什么是节点(node)?

masterslave
master

如果没有指定其他系统(system),它也是默认的任务执行节点。但是我们并不推荐这么做,因为:

mastermaster

为了减少系统负载,降低安全风险,通常在子系统只会安装一个轻量级 Jenkins 客户端应用来处理任务。这个客户端应用对资源的访问是受限的。

    agent 和 node 有何联系?

agent 有多种代理类型,包括 node、docker。

agent anyagent { label 'jdk11' }agent{ node { label 'jdk11' } }agent { label 'linux && jdk11' }

parameters


parameters
string(name: 'S', defaultValue: '', description: '', trim: true)booleanParam(name: 'B', defaultValue: true, description: '')choice(name: 'C', choices: ['a', 'b', 'c'], description: '')
parameters
paramsparams.SS

environment


environment { E = 'dev' }
E
env.BUILD_IDBUILD_ID
envJenkinsfile

 

stages && stage


    什么是 stage ?

stage{}stage('stage name'){}

    什么是 stages ? 什么是 parallel ?

stages{}stage{}stages{}stage{}
parallel{}stage{}parallel{}stage{}

    stages、stage、parralel 的嵌套关系 ?

stage{}stages{}stages{}parallel{}stage{}stage{}stages{}parallel{}

steps


steps{}stage{}steps{}

 

post


post{}steps{}
post{}post-conditionalways{}changed{}failure{}success{}unstable{}aborted{}

这些条件块的执行取决于流水线或阶段完成的状态。