如何使用GitLab CI secret 变量设置Gradle发布任务用户凭证?我正在使用gradle maven publish plugin,这是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文件中的 secret 变量的方法(因为gradle.properties没有从gradle中获取,或者变量未正确转换,因此它位于根项目目录中)

方法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
方法二
    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包装器进行构建。好像有几种issues具有这种变量用法,我们有什么解决方法吗?

最佳答案

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

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

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

关于gradle - 用于Gradle的GitLab CI secret 变量发布,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51137958/

10-11 05:54
查看更多