如何调用存储在 Jenkins 中的凭据以从 Jenkinsfile 中部署到自定义 Nexus?
How do I invoke credentials stored in Jenkins to deploy to a custom Nexus from within a Jenkinsfile?
我有一个用于项目相关实用程序 jar 的自定义 Nexus。我有一个 Jenkins 来构建这些罐子。
我想在项目中使用 gradle 和 Jenkinsfile 来定义管道。作为最后阶段,我希望构建作业将工件部署到我的 Nexus。
因为我不想在我的源存储库中使用 Nexus 的凭据(因此在 gradle 脚本和 Jenkinsfile 中都不想要),我在 Jenkins Credentials 插件中设置了一个凭据条目,包含 Nexus 的用户名和密码。
如何从 Jenkinsfile 中引用这些凭据,以便我可以使用它们部署到 Nexus?
目前,我的部署阶段如下所示:
stage('Publish') {
sh "gradle upload"
}
我可以将 gradle 用于此目的吗? 我知道我可以在本地使用它,但我可以使用来自在 Jenkinsfile 中。
在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 的选项。)
可以在~/.gradle/gradle.properties中设置外部变量
nexusUser=superuser
nexusPass=superpassword
您可以使用 withCredentials(){} 步骤注入仅在 {}
块内可见的环境变量。
我有一个用于项目相关实用程序 jar 的自定义 Nexus。我有一个 Jenkins 来构建这些罐子。
我想在项目中使用 gradle 和 Jenkinsfile 来定义管道。作为最后阶段,我希望构建作业将工件部署到我的 Nexus。
因为我不想在我的源存储库中使用 Nexus 的凭据(因此在 gradle 脚本和 Jenkinsfile 中都不想要),我在 Jenkins Credentials 插件中设置了一个凭据条目,包含 Nexus 的用户名和密码。
如何从 Jenkinsfile 中引用这些凭据,以便我可以使用它们部署到 Nexus?
目前,我的部署阶段如下所示:
stage('Publish') {
sh "gradle upload"
}
我可以将 gradle 用于此目的吗? 我知道我可以在本地使用它,但我可以使用来自在 Jenkinsfile 中。
在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 的选项。)
可以在~/.gradle/gradle.properties中设置外部变量
nexusUser=superuser
nexusPass=superpassword
您可以使用 withCredentials(){} 步骤注入仅在 {}
块内可见的环境变量。