gradle - 用于 Gradle 发布的 GitLab CI 秘密变量
问题描述
如何使用 GitLab CI 秘密变量设置 Gradle 发布任务用户凭据?我正在使用gradle maven 发布插件,这里是 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 中提取的,或者变量没有正确转换,它在根项目目录中)
方法一
'./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 包装器构建图像。似乎这种变量使用存在几个问题,我们有什么解决方法吗?
解决方案
您env.
的.gitlab-ci.yml
. 您也不需要重新导出变量。
如果您在项目的 Gitlab CI/CD 设置中定义了一个名为MAVEN_REPO_USER
和的变量MAVEN_REPO_PASS
,则可以在 Gradle 脚本中使用它们:
repositories {
maven {
credentials {
username System.getenv("MAVEN_REPO_USER")
password System.getenv("MAVEN_REPO_PASS")
}
url "…"
}
}
推荐阅读
- java - Java 的 CompletableFuture 和线程
- c# - WPF MVVM 绑定相对源
- c# - AspNetUsers 表中的电子邮件
- reactjs - 我可以使用 React Router 4 来切换路由吗?
- android - 如何使用 Native MultiAutocompleteTextView 实现 Emoji?
- python - 数据质量 - Pandas
- react-native - 同一个屏幕在 react-navigation 的 stacknavigation 中渲染两次或三次
- kubernetes - Kubernetes - 部署 - 配置 livenessProbe
- java - 有没有更好的方法用 Java 流映射映射值?
- rest - 如何使用 Tyk API 管理(或任何其他 API 网关)保护内部 API?