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;creatordate;taggerdate
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.参考
How can I list all tags in my Git repository by the date they were created?
0顶
0 踩
共 0 条评论