当前位置: 首页 > 面试题库 >

Jenkins管道:检出显式git commit

高寒
2023-03-14
问题内容

我希望能够说些类似的话:

git branch: commitHash, credentialsId: credentialsId, url: url

用例:我正在并行构建和测试在不同平台上的运行,并希望确保每个都获得相同的代码。它是C ++,我们建立在独立的平台上,也建立在它们之上。

如果执行上述操作,它将失败-基础代码假定给定的分支实际上是一个分支,或者得到类似以下内容的代码:

[Linux64 Build]  > git rev-parse origin/e4b6c976a0a986c348a211579f1e8fd32cf29567^{commit} # timeout=10
[Pipeline] [Linux64 Build] }
[Pipeline] [Linux64 Build] // dir
[Pipeline] [Linux64 Build] }
[Pipeline] [Linux64 Build] // node
[Pipeline] [Linux64 Build] }
[Linux64 Build] Failed in branch Linux64 Build

尽管没有实际答案,但我看到过有人问过这个问题,尽管有一些建议-只是喜欢隐瞒源代码,等等。这并不是我真正想要的。

该文档建议应该有可能给出明确的提交哈希,可能使用分支代替,但是我无法确定语法,也找不到任何示例。当我这样做时,我想得到了master分支-
在我们的设置中,master不起作用。

到目前为止,我发现的唯一解决方案是检出分支,然后显式调用git以获取提交:

                git branch: branch, credentialsId: credentialsId, url: url
                sh 'git checkout ' + commitHash

(其中branch是我最初在工作顶部获得哈希的分支。它可以工作,但不是最整洁的。

有人有更好的方法吗?


问题答案:

使用一般的scm步骤

checkout([$class: 'GitSCM', branches: [[name: commitHash ]],
     userRemoteConfigs: [[url: 'http://git-server/user/repository.git']]])


 类似资料:
  • 我正在尝试使用 Jenkinsfile 实现一个新的 Jenkins 管道。 GIT存储库并没有在每个分支上都有一个Jenkinsfile,只是在一个特定的分支下(因为我目前正在为一个遗留存储库构建CI)。 Jenkins管道是使用以下配置创建的: 丢弃旧版本(我不想手动清理) Bitbucket webhook trigger (on push event) 来自 SCM 的管道脚本 Bitbu

  • 使用Jenkins 2管道插件,有一个有用的功能,允许快速概述管道阶段和步骤状态,包括日志输出。 但是,如果您使用“Shell脚本”(sh)步骤,似乎没有办法用有用的名称来标记该脚本,因此显示屏仅显示一长串“Shell脚本”(如下图所示)。 如何指定一个有用的名称,或者如何使用其他步骤来实现相同的效果?

  • 问题内容: 我们有一个Jenkinsfile,它使用docker插件在给定容器内运行脚本。对于某些图像,此方法工作正常,但对于其他图像,则立即失败,返回-1退出代码。我们已将错误简化为一个简单的错误。这是Jenkinsfile: 这是詹金斯的输出 有趣的是,如果睡眠时间少于1秒,则该时间过去了(但120秒睡眠在许多其他图像上也可以正常工作)。 作为参考,这是一个有效的jessie图像,一个无效的j

  • 问题内容: 尝试使用 这将失败,并显示身份验证错误。除了使用以外还有其他方法吗 withCredentials 在Jenkinsfile中签出标签 问题答案: 花完之后,几个小时就到了 在声明式管道中使用GitSCM的正确方法是 不像我在网络上的大多数地方都找到的

  • 问题内容: 在我的jenkins管道项目中,我可以从git fine中检出代码…但是我们需要做一些git checkins,而且显然没有缓存凭据。 这是示例输出: 有人对此有很好的解决方案吗? 谢谢 问题答案: 答案是使用强大的jenkins插件: http://getmesh.io/Blog/Jenkins+2+Pipeline+101 该插件为git访问注入SSH_AUTH_SOCK环境变量

  • 问题内容: 我创建了一个复杂的管道。在每个阶段,我都叫工作。我想在Jenkins的某个阶段中查看每个作业的控制台输出。如何获得? 问题答案: 从构建步骤返回的对象可用于查询日志,如下所示: 从构建步骤返回的对象是RunWrapper类对象。getRawBuild()调用返回一个Run对象- 除了从此类的外观逐行读取日志之外,还有其他选择。为此,您需要禁用管道沙箱或获取这些方法的脚本批准: 如果要对