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

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

问题描述

如何使用 GitLab CI 秘密变量设置 Gradle 发布任务用户凭据?我正在使用 gradle maven 发布插件,这里是 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)

方法一

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

错误:/bin/bash:第 56 行:-PartifactUser=${env.MAVEN_REPO_USER}:替换错误

方法二

    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 wrapper 进行构建.似乎有几个 问题 使用这种变量,我们有什么解决办法吗?

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. 前缀.您也不需要重新导出变量.

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天全站免登陆