pipeline option指令
阅读原文时间:2023年07月08日阅读:1

目录

option指令用于配置整个jenkins pipeline本身的选项,根据具体的选项不同,可以将其放在pipeline块或者stage块中。

options 指令允许从流水线内部配置特定于流水线的选项。 流水线提供了许多这样的选项, 比如 buildDiscarder,但也可以由插件提供, 比如 timestamps.

buildDiscarder

作用域:只能在pipline块使用

buildDiscardr 保存最近历史构建记录的数量。当pipeline执行完成后,会在硬盘上保存记录,发布的内容和构建执行日志,如果长时间不清理会占用大量空间,设置此选项后会保存配置的数量。

简单例子:

pipeline {
    agent any
    
    options {
        buildDiscarder(logRotator(numToKeepStr: '3'))
    }
    
    stages {
        stage('test-a') {
            steps {
                echo 'test'
            }
        }
    }
}

发布本次之前有17次的历史记录,本次虽然代码简短,但经过几秒才发布成功。那是因为在删除其它的历史记录,最后只会保留3次。

checkoutToSubdirectory

作用域:pipline块

注意:因实验版本不支持此指令,稍后进行测试

Jenkins从版本控制库拉取源码时,默认下载到当前job的根目录下,例如job名叫test-pipeline,则后续代码下载到/var/lib/jenkins/workspace/test-pipeline/xx项目

配置后则为/var/lib/jenkins/workspace/test-pipeline/foo/xx项目

options {
    checkoutToSubdirectory('foo')
}

disableConcurrentBuilds

作用域:pipeline块

同一个pipeline,Jenkins默认可以同时点击多次,并发执行。这样会消耗资源,并造成发布失败等问题。

配置并发锁定,可以在同时只允许一个执行,在和代码仓库进行联动的时候容易遇到,同时分支进行多次提交。

options {
    disableConcurrentBuilds()
}

options { disableConcurrentBuilds() }

newContainerPerStage

作用域:pipeline块

注意:暂未实验

当agent为docker或dockerfile时,指定在同一个Jenkins节点上,每个stage都分别运行在一个新的容器中,而不是所有stage都运行在同一个容器中。

options {
    newContainerPerStage()
}

retry

作用域:pipeline块或者stage块

当发生失败时进行重试,可以指定整个pipeline的重试次数。需要注意的是,这个次数是指总次数,包括第一次失败。

options {
    retry(3)
}

timeout

作用域:stage块

如果pipeline执行时间过长,超出设置的timeout时间,Jenkins将中止pipeline。

以下例子中以小时为单位,还可以把SECONDS(秒),MINUTES(分钟)为单位。

options {
    timeout(time: 1, unit: 'HOURS')
}

skipDefaultCheckout

作用域:stage块

在agent指令中,跳过从源代码控制中检出代码的默认情况。

options {
    skipDefaultCheckout()
}

skipStagesAfterUnstable

作用域:stage块

一旦构建状态变得UNSTABLE,就跳过该阶段。

options {
    skipStagesAfterUnstable()
}

timestamps

作用域:stage块或者steps块

注意:需要安装Timestamper插件

在stage块声明,每个步骤执行完,日志里都会打印执行时间。

options {
    timestamps()
}

在steps块执行,包含内的每个步骤执行完,日志里都会打印执行时间。

timestamps {
 echo '这是第一个被执行的 stage.'
}