• 对于注定会优秀的人来说,他所需要的,只是时间----博主
  • 手懒得,必受贫穷,手勤的,必得富足----《圣经》
  • 帮助别人,成就自己。愿君在本站能真正有所收获!
  • 如果你在本站中发现任何问题,欢迎留言指正!
  • 宝剑锋从磨砺出,梅花香自苦寒来!
  • 本站开启了防爆破关小黑屋机制,如果您是正常登录但被关进小黑屋,请联系站长解除!

<三十六>Jenkins-pipeline学习笔记–如何在Jenkinsfile中定义一个全局的时间戳变量(六)

Jenkins eryajf 4个月前 (12-13) 1029°C 已收录 0个评论
本文预计阅读时间 4 分钟

很多时候,在构建的过程中,我们会取系统当前时间戳作为一个参照,融入到构建过程中,在原来自由风格中,都是基于Linux系统级别的 date命令进行的定义,现在来到流水线里边,突然发现想要定义一个全局的时间戳变量,似乎并不容易,尽管知道流水线脚本就是groovy语言,然而因为不会开发,一时间也不知道从何下手,原来用的如下方式进行获取的时间戳:

pipeline{
    agent any
    stages{
        stage('timestamp') {
            steps {
                script {
                    try {
                        echo '========================'
                        # 如果想要定义并获取时间戳变量,最好写到这里,实测写到environment是违规的语法
                        sh "version=`date +%Y%m%d%H%M%S`"
                        sh "printenv"
                        echo '========================'
                    } catch (err) {
                        echo '========================'
                    }
                }
            }       
        }
    }
}

后来的使用中,深深觉得这种定义十分不方便,因此不死心的再到网上各种搜罗,看了不少的案例,似乎也都没有找到让自己满意的结果,最后在一个示例当中找到了,并做了一下简单调整,从而符合自己的需求。

def createVersion() {
    // 定义一个版本号作为当次构建的版本,输出结果 20191210175842_69
    return new Date().format('yyyyMMddHHmmss') + "_${env.BUILD_ID}"
}

pipeline {
    agent any
    // 可在 environment 引入上边定义的函数,以便于全局调用
    environment {
        _version = createVersion()
    }
    stages {
        stage ("test") {
            steps {
                echo ${_version}
            }
        }
    }
}

这样就实现了自己想要的全局时间戳变量了。


weinxin
扫码订阅本站,第一时间获得更新
微信扫描二维码,订阅我们网站的动态,另外不定时发送WordPress小技巧,你可以随时退订,欢迎订阅哦~

二丫讲梵 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明<三十六>Jenkins-pipeline学习笔记–如何在Jenkinsfile中定义一个全局的时间戳变量(六)
喜欢 (0)
[如果想支持本站,可支付宝赞助]
分享 (0)
eryajf
关于作者:
学无止境,我愿意无止境学。书山有路,我愿意举身投火,淬炼成金!永远不要忘记,激情的奋进,就是美好的未来!

您必须 登录 才能发表评论!