从星云17到18.0.4 GRGIT停止在Jenkins背景下工作

waxmsbnn  于 12个月前  发布在  Jenkins
关注(0)|答案(1)|浏览(121)

在Gradle Nebula插件17.2.1中,下面的代码可以使用18.0.4工作,但不能使用org.gradle.api.GradleException: fatal: could not read Username for 'https://github.com': No such device or address,并且失败
grgit仍然在nebula项目的测试中,但不在src(search)中。没有关于如何将git creds从Jenkins层或OS层传递到gradle层的文档。看起来插件维护者决定减少他们项目的范围,而不添加有用的文档。
Jenkins文件代码

withCredentials([usernamePassword(credentialsId: 'credid',
 passwordVariable: 'GRGIT_PASS',
 usernameVariable: 'GRGIT_USER')]) {
   script {
     sh("./gradlew final recordVersion --stacktrace")
   }
}

字符串

vmdwslir

vmdwslir1#

在18.0.4中,我可以通过两种不同的方式来实现这一点。

选项1:(Jenkinsfile和build.gradle中的更改)

在Jenkins中使用github token添加一个自定义git remote,然后配置gradle插件使用该remote,而不是默认remote,默认remote设置为origin

Jenkinsfile:

withCredentials([usernamePassword(credentialsId: 'credid', 
                                 passwordVariable: 'GRGIT_PASS', 
                                 usernameVariable: 'GRGIT_USER')]) {
    sh '''
        git remote add auth https://[email protected]/someorg/some-repo.git
        ./gradlew final
    '''
}

字符串

build.gradle:

release {
    remote = 'auth'
}

选项2:(仅更改Jenkinsfile)

添加一个git配置,将远程URL替换为包含github token的URL

Jenkinsfile:

withCredentials([usernamePassword(credentialsId: 'credid', 
                                 passwordVariable: 'GRGIT_PASS', 
                                 usernameVariable: 'GRGIT_USER')]) {
    sh '''
        git config url."https://${GRGIT_PASS}@github.com".insteadOf https://github.com
        ./gradlew final
    '''
}

相关问题