用于Gradle的GitLab CI秘密变量发布 [英] GitLab CI secret variables for Gradle publish

查看:200
本文介绍了用于Gradle的GitLab CI秘密变量发布的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用GitLab CI秘密变量设置Gradle发布任务用户凭证?我正在使用 gradle maven publish插件,这是来自build.gradle的摘录

How to setup Gradle publish task user credentials with GitLab CI secret variables? I am using gradle maven publish plugin, and here is snippet from build.gradle

repositories {
    maven {
      credentials {
        username artifactUser
        password artifactPass
      }
      url "..."
    }
  }

我尝试如下使用gradle.properties

artifactUser=${env.MAVEN_REPO_USER}
artifactPass=${env.MAVEN_REPO_PASS}

还有几种访问.gitlab-ci.yml文件中机密变量的方法(因为gradle.properties不是从gradle中获取的,或者变量没有正确转换,因此位于根项目目录中)

And several ways of accessing secret variables in .gitlab-ci.yml file (because gradle.properties is not picked up from gradle or variables are not transformed correctly, it is in root project dir)

方法1

'./gradlew publish -x test -PartifactUser=${env.MAVEN_REPO_USER} -PartifactPass=${env.MAVEN_REPO_PASS}'

错误:/bin/bash: line 56: -PartifactUser=${env.MAVEN_REPO_USER}: bad substitution

方法2

    before_script:
      - chmod +x ./gradlew
      - export REPO_USER=${env.MAVEN_REPO_USER}
      - export REPO_PASS=${env.MAVEN_REPO_PASS}
    ...
    deploy:
  stage: deploy
  script:
    - ./gradlew publish -x test -PartifactUser=$REPO_USER -PartifactPass=$REPO_PASS

我正在使用openjdk:8-jdk-slim图像通过gradle包装器进行构建.似乎有几种问题具有这种可变用法,我们有什么解决方法吗?

I am using openjdk:8-jdk-slim image for build using gradle wrapper. Seems like there are several issues with this kind of variable usage, do we have any workaround?

推荐答案

您在.gitlab-ci.yml中不需要env. prefinx.您也不需要重新导出变量.

You don't need env. prefinx in your .gitlab-ci.yml. You don't need to re-export the variables as well.

如果您在项目的Gitlab CI/CD设置中定义了名为MAVEN_REPO_USERMAVEN_REPO_PASS的变量,则可以仅在Gradle脚本中使用它们:

If you have defined a variables named MAVEN_REPO_USER and MAVEN_REPO_PASS in Gitlab CI/CD settings for the project, you can just use them in Gradle script:

repositories {
    maven {
        credentials {
            username System.getenv("MAVEN_REPO_USER")
            password System.getenv("MAVEN_REPO_PASS")
        }
        url "…"
    }
}

这篇关于用于Gradle的GitLab CI秘密变量发布的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆