【发布时间】:2022-12-05 08:20:15
【问题描述】:
def generateVersion() {
def commitCount = sh(script: "git rev-list --count HEAD", returnStdout: true).trim() as Integer
echo "this is commitcount------------->>>>>>>>>>>>>>>> ${commitCount}";
def metadata = readJSON file: 'package.json'
def (major, minor) = metadata.version.tokenize('.')
def patch = commitCount
def prerelease = env.BRANCH_NAME == 'master' ? '' : "-${env.BRANCH_NAME}"
return "${major}.${minor}.${patch}${prerelease}"
}
这是我在 Jenkinsfile 中编写的常规代码。它应该返回给我一个独特版本的构建。此函数在 Publish Libraries 阶段被调用。
....
stage('Publish Libraries') {
dir('External') {
libVersion = generateVersion()
...
...
我无法获得正确的 commitCount 值,因此无法获得错误的补丁值。无论我在我的分支中做了多少次提交,它都保持一致的值 5。我已经从另一个最初有 56 次提交的功能分支创建了一个分支。所以当我创建一个分支时,它最初有 56 个提交。我在新创建的分支中添加了我自己的 11 次提交,因此分支中总共有 67 次提交,但它显示计数仅为 5。我该怎么办?
我什至试过:
def commitCount = sh(script: "git rev-list --count ${env.BRANCH_NAME}", returnStdout: true).trim() as Integer
想也许我的 HEAD 在我不知情的情况下被设置到其他分支。但是 commitCount 仍然是 5。
【问题讨论】:
-
如果将第一行拆分为 2 个操作。只需获取字符串,用
echo "Commit test was '$commitCountString'", and _then_ doas Integer`打印出来,打印出来的是什么? -
您的克隆操作是如何配置的?
-
@tim_yates 我把它们分开了,但都是 5 和 5 仍然
标签: git jenkins groovy artifactory commit