在Jenkins文件中./gradlew版本不';由于gitlab推送失败,无法执行

在Jenkins文件中./gradlew版本不';由于gitlab推送失败,无法执行,git,jenkins,kotlin,gitlab,jenkins-pipeline,Git,Jenkins,Kotlin,Gitlab,Jenkins Pipeline,我正在从事一个使用Gradle4.1构建的java/kotlin项目。我使用GitLab作为源代码,Jenkins(一个多分支管道项目)作为CI和Nexus的发布和快照存储库。此外,我正在使用。在项目的Jenkinsfile中,除其他阶段外,我还有一个“release”阶段,在该阶段中,我运行/gradlew release命令。除了“release”(参见下面提供的my Jenkins文件的代码片段中的最后一个阶段),其他阶段都运行得很好。执行此命令时生成失败,错误为: > Task :

我正在从事一个使用Gradle4.1构建的java/kotlin项目。我使用GitLab作为源代码,Jenkins(一个多分支管道项目)作为CI和Nexus的发布和快照存储库。此外,我正在使用。在项目的Jenkinsfile中,除其他阶段外,我还有一个“release”阶段,在该阶段中,我运行
/gradlew release
命令。除了“release”(参见下面提供的my Jenkins文件的代码片段中的最后一个阶段),其他阶段都运行得很好。执行此命令时生成失败,错误为:

> Task :release FAILED
Task ':release' is not up-to-date because:
Task has not declared any outputs despite executing actions.
Creating tag: version-0.1.10
Pushing all to remote: origin
Exception occurred during push: 
org.eclipse.jgit.api.errors.TransportException: 
https://GITLAB/MY_REPO.git: not authorized
:release (Thread[Task worker for ':',5,main]) completed. Took 0.821 
secs.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':release'.
> org.eclipse.jgit.api.errors.TransportException: 
https://GITLAB/MY_REPO.git: not authorized  

node { 
我预计会出现此错误,因为我在尝试推送时没有键入用户名或密码。我已经查看了的,关于如何使用http://链接而不是ssh推送到回购协议的信息似乎很少。当我按照文档中的说明使用http进行身份验证,并将发布阶段更改为

 stage('release') {

      sh "./gradlew release -Prelease.customUsername= 'MYUSERNAME' -Prelease.customPassword= 'MYPASSWORD' -Prelease.disableChecks"
}
我得到以下错误:

 FAILURE: Build failed with an exception.

 * What went wrong:
 Task 'MYUSERNAME' not found in root project 'MYPROJECT'.

 * Try:
 Run gradlew tasks to get a list of available tasks. Run with --debug 
 option to get more log output. Run with --scan to get full insights.

 * Exception is:
 org.gradle.execution.TaskSelectionException: Task 'MYUSERNAME' not found in 
 root project 'MYPROJECT'.
 at org.gradle.execution.TaskSelector.getSelection(TaskSelector.java:116)
显然,将密码和用户名直接添加到Jenkins文件是不起作用的,但我不知道从哪里获取它们。 我想知道是否有人知道:

  • 在哪里可以加载用于GitLab身份验证的用户名和密码
  • 在发布阶段,如何在
    /gradlew release
    命令中执行此操作 我的文件:

    #!/usr/bin/env groovy
    node {
    
    env.JAVA_HOME="${tool 'jdk_current'}"
    
    env.GRADLE_HOME="${tool 'gradle_current'}"
    
    env.PATH="${env.JAVA_HOME}/bin:${env.PATH}"
    
    stage('checkout') {
        checkout scm 
    }
    
    ....
    
    stage('publish') {
        sh "./gradlew publish  --no-daemon --stacktrace"
    }
    
    stage('quality') {
    
       withSonarQubeEnv('FFAWS') {
    
        sh "./gradlew sonarqube --no-daemon "
    
        }
    }
    stage('upload') {
            sh "./gradlew upload --no-daemon --stacktrace "
    }
    
    stage('release') {
    
            sh "./gradlew release -Prelease.disableChecks -Prelease.pushTagsOnly --no-daemon --stacktrace "
    }
    

    谢谢大家!!您可以随时询问更多信息。

    首先,命令行上的Gradle属性之间有空格-您应该删除它们-
    -Prelease.customPassword='MYPASSWORD'
    。如果您想使用SSH组件推送到Git,您可能会遇到类似的问题