Gradle
Using Infisical with Gradle
By integrating Infisical CLI with Gradle, you can configure your builds and scripts to different environments, CI/CD pipelines, and more without explicitly setting variables in the command line.
This documentation provides an overview of how to use Infisical with Gradle.
Basic Usage
To run a Gradle task with Infisical, you can use the run
command. The basic structure is:
infisical run -- [Your command here]
For example, to run the generateFile
task in Gradle:
task generateFile {
doLast {
String content = System.getenv('ENV_NAME_FROM_INFISICAL') ?: 'Default Content'
file('output.txt').text = content
println "Generated output.txt with content: $content"
}
}
infisical run -- gradle generateFile
With this command, Infisical will automatically inject the environment variables associated with the current Infisical project into the Gradle process.
Your Gradle script can then access these variables using System.getenv('VARIABLE_NAME')
.
More Examples
1. Building a Project with a Specific Profile
Assuming you have different build profiles (e.g., ‘development’, ‘production’), you can use Infisical to switch between them:
infisical run -- gradle build
Inside your build.gradle
, you might have:
if (System.getenv('PROFILE') == 'production') {
// production-specific configurations
}
2. Running Tests with Different Database Configurations
If you want to run tests against different database configurations:
infisical run -- gradle test
Your test configuration in build.gradle
can then adjust the database URL accordingly:
test {
systemProperty 'db.url', System.getenv('DB_URL')
}
3. Generating Artifacts with Versioning
For automated CI/CD pipelines, you might want to inject a build number or version:
infisical run -- gradle assemble
And in build.gradle
:
version = System.getenv('BUILD_NUMBER') ?: '1.0.0-SNAPSHOT'
Advantages of Using Infisical with Gradle
- Flexibility: Easily adapt your Gradle builds to different environments without modifying the build scripts or setting environment variables manually.
- Reproducibility: Ensure consistent builds by leveraging the environment variables from the related Infisical project.
- Security: Protect sensitive information by using Infisical’s secrets management without exposing them in scripts or logs.
Was this page helpful?