如何调用存储在Jenkins中的凭据以从Jenkins文件中部署到自定义Nexus?

时间:2017-12-14 16:30:10

标签: jenkins gradle jenkins-pipeline nexus

我有一个用于项目相关实用工具罐的自定义Nexus。我有一个詹金斯来建造这些罐子。

我想在项目中使用gradle,使用Jenkinsfile来定义管道。作为最后一个阶段,我希望构建作业将工件部署到我的Nexus。

由于我不想在我的源存储库中使用Nexus的凭据(因此既不在gradle脚本中也不在Jenkins文件中),我在Jenkins Credentials插件中设置了一个包含用户和密码的凭据条目对于Nexus。

如何从Jenkins文件中引用这些凭据,以便我可以使用它们部署到Nexus?

目前,我的部署阶段如下所示:

stage('Publish') {
    sh "gradle upload"
}

我可以将Gradle用于此目的吗?我知道我可以在本地使用它,但我可以在Jenkins文件中使用不同的命令。

在gradle中,我使用它来定义任务:

def nexusUser = "$System.env.NEXUS_USER"
def nexusPass = "$System.env.NEXUS_PASS"

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "http://nexus.example.com/repository/maven-releases/") {
                authentication(userName: nexusUser, password: nexusPass)
            }
        }
    }
}

(我在本地将用户和密码设置为环境变量。当然,这不是Jenkins的选项。)

2 个答案:

答案 0 :(得分:2)

您可以在〜/ .gradle / gradle.properties 中设置外部变量 nexusUser=superuser nexusPass=superpassword

答案 1 :(得分:1)

您可以使用withCredentials(){}步骤注入仅在{}块内可见的环境变量。