【问题标题】:Travis CI environment variables with Gradle properties具有 Gradle 属性的 Travis CI 环境变量
【发布时间】:2014-11-19 08:36:56
【问题描述】:

如何使用 travis-ci 环境变量作为 Gradle 的属性?

我的 gradle.properties 在本地的 gradle 路径下有:

sonatypeRepo = abcd

在我的build.gradle中使用:

uploadArchives {   
    //more     
    repository(url: sonatypeRepo) {
        // more
    }
    //more
}

当然在本地也可以。在 travis 中,我在设置下添加了变量,所以我看到了构建日志:

Setting environment variables from repository settings
$ export sonatypeRepo=[secure]

它失败了:

FAILURE: Build failed with an exception.
* Where:
Build file '/home/travis/build/Diolor/Swipecards/library/build.gradle' line: 49
* What went wrong:
A problem occurred evaluating project ':library'.
> No such property: sonatypeRepo for class: org.gradle.api.publication.maven.internal.ant.DefaultGroovyMavenDeployer

如何将 Travis 的 env 变量用作 Graable 属性也有本地构建?

【问题讨论】:

  • Travis 的环境变量是否设置为环境变量?我会尝试def repo = sonatypeRepo ?: System.getenv('sonatypeRepo')。第一部分应该在本地工作,第二部分应该在 Travis 上工作。
  • @Opal travis' bash 导出它,所以它应该可用。我尝试了repository(url: sonatypeRepo ?: "$System.env.sonatypeRepo") {} 没有成功,会尝试更多。
  • 问题是 Travis 设置的变量是否可以通过 System.env 读取。在詹金斯是。这也可能是另一个问题。您需要检查 Travis 究竟是什么 sonatypeRepo 属性返回。如果它存在于gradle.properties 并且它是空的,它可能会通过,因为它存在。
  • @Opal 确实。使用上述 elvis var 构造函数设置参数使其通过。我仍然不确定 Travis 是否读取了变量。
  • printSystem.env 的结果输出到标准输出。

标签: gradle android-gradle-plugin travis-ci sonatype


【解决方案1】:

我也偶然发现了这一点。

这就是我让它工作的方式:

在我的 build.gradle 中

def uzer = hasProperty('blahUser') ? blahUser : System.getenv('blahUser')
def creds = hasProperty('blahPwd') ? blahPwd : System.getenv('blahPwd')

在我的 $HOME/.gradle/gradle.properties 中

blahUser=batman
blahPwd=eatsworms

所以我需要这个用于 travis-ci —— 我认为它没有 $HOME/.gradle/gradle.properties 的概念但是您可以将环境变量添加到 .travis.yml。

基本上,如前所述,如果属性是“那里”; gradle 使用它,否则会询问环境。在我的情况下,需要“hasProperty()”检查,因此 travis 不会生成未找到属性的异常.....

第...

【讨论】:

  • 我必须在 build.gradle 中使用 project.hasProperties()
【解决方案2】:

下面是一个定义项目属性的示例,而不是局部变量,如果未定义,则通过从环境中获取值。

project.ext {
    if (! project.hasProperty('some_prop')) { 
        some_prop = System.getenv('some_prop') 
    }
}

我想要一个项目属性,所以我也可以使用它来在我的 spring-boot YAML 文件中设置 PW... 在本地和 CI 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多