Passing Configuration to a Gradle Build via Custom Environment Variables: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
No edit summary
Line 40: Line 40:


  gradle display
  gradle display
  > Configure project :
  > Configure project :
  default value
  default value
  BUILD SUCCESSFUL in 0s
  BUILD SUCCESSFUL in 0s


Line 50: Line 48:
  export CUSTOM_ENVIRONMENT_VARIABLE=BLAH
  export CUSTOM_ENVIRONMENT_VARIABLE=BLAH
  gradle display
  gradle display
  > Configure project :
  > Configure project :
  BLAH
  BLAH
  BUILD SUCCESSFUL in 0s
  BUILD SUCCESSFUL in 0s

Revision as of 21:26, 14 March 2019

Internal

Overview

This article describes a generic method to pass configuration to a Gradle build using custom environment variables. This method could prove useful when Gradle builds are executed in containers, as it is the case for AWS CodeBuild builds.

Playground

https://github.com/ovidiuf/playground/tree/master/gradle/custom-environment-variables

Procedure

The method consists in defining a project extra property that is initialized with the value of the custom environment variable, or to a default value if the environment variable is not defined. The following code sequence is added to build.gradle, in the ext closure:

ext {

    projectExtPropertyInformedByEnvironmentVariable = "default value"

    String s = System.getenv("CUSTOM_ENVIRONMENT_VARIABLE");
    if (s != null) {

        projectExtPropertyInformedByEnvironmentVariable = s;
    }
}

The following task displays the property value:

ask display {

    println projectExtPropertyInformedByEnvironmentVariable
}

If CUSTOM_ENVIRONMENT_VARIABLE is not set, executing the "display" task results in:

gradle display
> Configure project :
default value
BUILD SUCCESSFUL in 0s

Setting the environment variable propagates it to the build:

export CUSTOM_ENVIRONMENT_VARIABLE=BLAH
gradle display
> Configure project :
BLAH
BUILD SUCCESSFUL in 0s