gpt4 book ai didi

jenkins - 在 pipeline 2.0 groovy 脚本中执行 git fetch

转载 作者:行者123 更新时间:2023-12-05 07:44:54 27 4
gpt4 key购买 nike

在 jenkins 2.0 管道脚本上有一个与 git 中包含的区域相关的 Unresolved 错误,所以这意味着对于一个大型的单存储库,就像我的情况一样,每次 checkin master 都会导致多个管道被启动,这是不希望的行为。所以可视化:

顶级:
->应用程序文件夹 1
->应用文件夹2

我想做的是先做一个 git fetch,然后我可以做一个 git diff 来查看特定文件夹中的任何内容是否发生了变化,如果它已经运行该特定文件夹的管道,如果不做任何事情什么都没有改变

我的代码如下:

node{
git credentialsId: 'cred id', url: 'ssh://git@git-repo:1234/app/mono-repo.git'
ret = sh(script: 'git fetch; git diff origin/master remotes/origin/master | grep "folder-name"', returnStatus: true)
if(ret == 0){
doSomething()
}else{
doNothing()
}
}

我遇到的问题是 git fetch 由于权限错误而失败,我可以使用结帐但是我无法事先获得差异,这不是什么。有没有一种方法可以使用凭据使用 u 平铺 git fetch?

最佳答案

简单地获取对标签的引用可能会有所帮助。请注意,我认为这不等同于 git fetch --tags。参见 Does "git fetch --tags" include "git fetch"?例如。

git([branches: [
[name: '*/master'],
[name: 'refs/tags/*:refs/tags/*']],
credentialsId: CREDENTIALS_ID_GIT,
url: REPO])

我注意到在 Jenkin 的控制台上,Git 插件正在执行 git fetch --tags,因此默认情况下 Git 插件可能已经提供了此功能。请检查一下。

我还想添加这个解决方案:

withCredentials(
[usernamePassword(
credentialsId: CREDENTIALS_ID_GIT,
passwordVariable: 'GIT_PASSWORD',
usernameVariable: 'GIT_USERNAME')]) {
sh("git fetch --tags https://${GIT_USERNAME}:${GIT_PASSWORD}@${REPO}")
}

关于jenkins - 在 pipeline 2.0 groovy 脚本中执行 git fetch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42427074/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com