• Ukieweb

    佳的博客

    曾梦想仗剑天涯,后来工作忙没去。

Jenkins Pipeline 拉取 git 最新的 tag 分支 - 按时间排序

1. pipeline 示例

...
stage('get git code') {
    steps {
        // 获取 tag 生成 repo 地址
        script {
            env.IMAGE_TAG = sh(returnStdout: true, script: "git for-each-ref --sort=-creatordate --format='%(tag)' --count=1 refs/tags/prod-*").trim()
            env.IMAGE_TAG_TIME = sh(returnStdout: true, script: "git for-each-ref --sort=-creatordate --format='%(creatordate)' --count=1 refs/tags/prod-*").trim()
        }
        
       
       // 检查 tag 是否已经用过
       echo "获取到 TAG:${env.IMAGE_TAG} 打TAG日期:${env.IMAGE_TAG_TIME}"
       
       // check out 此 tag 内容
       sh "git checkout ${env.IMAGE_TAG}"
    }
}
...

2. git for-each-ref  命令

git for-each-ref --sort=creatordate--count=5 --format='%(authordate)|%(committerdate)|%(creatordate)|%(taggerdate) | %(tag) | %(contents)' refs/tags/prod-*

--sort: 按照什么排序, - 表示倒序 可选 objectsize; committerdate;authordate;creatordatetaggerdate

  •     creatordata: 支持注释tag和轻量tag

  •     taggerdata:仅支持注释tag

--format: 输出格式,如果只要天那么可以 --format="%(taggerdate:short): [ %(tag) ]"

--count=num: 输出几个结果

refs/tags/prod-* : 匹配的行

--ignore-case: 排序和过滤ref是不区分大小写

特别注意:附注标签 和 轻量标签 的不同

  • 附注标签:git tag -a v0.1.2 -m "0.1.2版本"

  • 轻量标签:git tag  v0.1.2 

3.参考

git-for-each-ref  - 每个参考的输出信息

官网 英文:git-for-each-ref

翻译官网 中文:git-for-each-ref

如何按创建日期列出Git存储库中的所有标签?

How can I list all tags in my Git repository by the date they were created?

0
0
下一篇:使用 tomcat-redis-session-manager 实现 tomcat 的 session 共享 集群效果

0 条评论

老佳啊

85后,大专学历,中原人士,家里没矿。

由于年轻时长的比较帅气,导致在别人眼里,我一直不谈恋爱的原因是清高,实则是自己的小自卑。最大的人生目标就是找一个相知相爱相容的人,共度余生。

和人相处时如果能感受到真诚,会非常注重彼此的关系,对别人没有什么心机,即使有利益冲突,一般也会以和为贵,因为在这个世界上,物质的东西,从来不会吸引到我。

特别迷恋那些大山大水,如果现在还能隐居,可能早就去了。对那些宏伟的有底蕴的人文景观比较不感冒。

从事于IT行业,却一直对厨房念念不忘,由于身材魁梧,总觉得自己上辈子是个将军,可惜这辈子没当兵,也不会打架。