在Jenkins文件中./gradlew版本不';由于gitlab推送失败,无法执行
我正在从事一个使用Gradle4.1构建的java/kotlin项目。我使用GitLab作为源代码,Jenkins(一个多分支管道项目)作为CI和Nexus的发布和快照存储库。此外,我正在使用。在项目的Jenkinsfile中,除其他阶段外,我还有一个“release”阶段,在该阶段中,我运行在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 :
/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文件是不起作用的,但我不知道从哪里获取它们。
我想知道是否有人知道:
/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,您可能会遇到类似的问题