Jenkinsfile基本练习

label:选择特定标签的Jenkins节点作为构建环境。

pipeline {
   agent { label 'my-defined-label' }
}

node:node用法与label用法一样,但是node有额外的可选参数customWorkspace,可以指定工作空间。

pipeline {
  agent {
    node {
      label 'my-defined-label'
      customWorkspace '/some/other/path'
    }
  }
}

post

post 部分定义一个或多个steps ,post里面的steps将根据流水线或阶段的返回结果来判断是否执行。
参数:

always:无论流水线或阶段的返回结果如何,都将执行该steps。
changed:只有当前流水线或阶段的完成状态与它之前的运行不同时,才执行该steps。
failure:只有当前流水线或阶段的返回值为非0时,才执行该steps。
success:只有当前流水线或阶段的返回值为0时,才执行该steps。
unstable:只有当前流水线或阶段的状态为"unstable",才允许在 post 部分运行该步骤, 通常由于测试失败,代码违规等造成。
aborted:只有当前流水线或阶段的状态为"aborted",才执行该steps,aborted通常为手动取消构建时的状态。

pipeline {
    agent any
    stages {
        stage('Example') {
            steps {
                echo 'Hello World'
            }
        }
    }
    post { 
        always { 
            echo 'I will always say Hello again!'
        }
    }
}

environment
以键值对的方式添加环境变量,可以是添加全局环境变量,也可以是在某个stage中添加环境变量,stage中添加的环境变量只作用于当前stage。

pipeline {
    agent any
    environment { 
        CC = 'clang'
    }
    stages {
        stage('Example') {
            environment { 
                AN_ACCESS_KEY = credentials('my-prefined-secret-text') 
            }
            steps {
                sh 'printenv'
            }
        }
    }
}

options

options配置流水线的构建配置,类似于自由构建的丢弃旧的构建,是否允许并行构建等等。也可以由插件提供参数,比如timestamps(在控制台输出时间)

buildDiscarder:保留最近的构建次数。
options { buildDiscarder(logRotator(numToKeepStr: '1')) }
disableConcurrentBuilds:不允许同时执行流水线,可被用来防止同时访问共享资源等.
options { disableConcurrentBuilds() }
skipDefaultCheckout:跳过在版本控制器中检出代码。
options { skipDefaultCheckout() }
skipStagesAfterUnstable:当构建状态为UNSTABLE时,跳过该阶段。
options { skipStagesAfterUnstable() }
checkoutToSubdirectory:在工作空间的子目录中自动执行源代码控制检出。
options { checkoutToSubdirectory('foo') }
timeout:设置流水线运行的超时时间, 若在此时间内任务未执行完,则自行停止构建。
options { timeout(time: 1, unit: 'HOURS') }
retry:在失败时, 重新尝试整个流水线的指定次数。
options { retry(3) }
timestamps:在控制台输出时间戳。
options { timestamps() }
个别任务可以单独指定更长的超时时间如下3分钟拉取代码超时
 git 'https://gitee.com/oftware/api.git'
 timeout ("${env.TIMEOUT?:3}")
pipeline {
    agent any
    options {
        timeout(time: 1, unit: 'HOURS') 
        buildDiscarder(logRotator(numToKeepStr: '1'))
    }
    stages {
        stage('Example') {
            steps {
                echo 'Hello World'
            }
        }
    }
}

参数
parameters 指令提供了一个用户在触发流水线时应该提供的参数列表。这些用户指定参数的值可通过 params 对象提供给流水线步骤。

string:字符串类型的参数。
parameters { string(name: 'DEPLOY_ENV', defaultValue: 'staging', description: '') }
booleanParam:布尔参数
parameters { booleanParam(name: 'DEBUG_BUILD', defaultValue: true, description: '') }
pipeline {
    agent any
    parameters {
        string(name: 'PERSON', defaultValue: 'Mr Jenkins', description: 'Who should I say hello to?')
    }
    stages {
        stage('Example') {
            steps {
                echo "Hello ${params.PERSON}"
            }
        }
    }
}

触发器
triggers 指令定义了流水线被重新触发的自动化方法。对于集成了源( 比如 GitHub 或 BitBucket)的流水线, 可能不需要 triggers ,因为基于 web 的集成很肯能已经存在。 当前可用的触发器是 cron, pollSCM 和 upstream。

cron:接收 cron 样式的字符串来定义要重新触发流水线的常规间隔。
triggers { cron('H */4 * * 1-5') }
pollSCM:接收 cron 样式的字符串来定义一个固定的间隔,在这个间隔中,Jenkins 会检查新的源代码更新。如果存在更改, 流水线就会被重新触发。
triggers { pollSCM('H */4 * * 1-5') }
upstream:接受逗号分隔的工作字符串和阈值。 当字符串中的任何作业以最小阈值结束时,流水线被重新触发。
triggers { upstream(upstreamProjects: 'job1,job2', threshold: hudson.model.Result.SUCCESS) }
pipeline {
    agent any
    triggers {
        cron('H */4 * * 1-5')
    }
    stages {
        stage('Example') {
            steps {
                echo 'Hello World'
            }
        }
    }
}

工具
定义使用工具的名称,该工具需在系统设置中进行设置。当前支持maven、jdk、gradle


pipeline {
    agent any
    tools {
        maven 'apache-maven-3.0.1' 
    }
    stages {
        stage('Example') {
            steps {
                sh 'mvn --version'
            }
        }
    }
}

script
script块,script块使用groovy语法,提供更加了灵活的用法。

pipeline {
    agent any
    stages {
        stage('Example') {
            steps {
                echo 'Hello World'
                script {
                    def browsers = ['chrome', 'firefox']
                    for (int i = 0; i < browsers.size(); ++i) {
                        echo "Testing the ${browsers[i]} browser"
                    }
                }
            }
        }
    }
}

参考链接

https://www.jenkins.io/zh/doc/book/pipeline/syntax/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值