diff --git a/backend/src/controllers/v3/secretsController.ts b/backend/src/controllers/v3/secretsController.ts index 451de1294..b388f8305 100644 --- a/backend/src/controllers/v3/secretsController.ts +++ b/backend/src/controllers/v3/secretsController.ts @@ -3,7 +3,7 @@ import { Types } from "mongoose"; import { EventService, SecretService } from "../../services"; import { eventPushSecrets } from "../../events"; import { BotService } from "../../services"; -import { containsGlobPatterns, isValidScope, repackageSecretToRaw } from "../../helpers/secrets"; +import { containsGlobPatterns, repackageSecretToRaw } from "../../helpers/secrets"; import { encryptSymmetric128BitHexKeyUTF8 } from "../../utils/crypto"; import { getAllImportedSecrets } from "../../services/SecretImportService"; import { Folder, IServiceTokenData } from "../../models"; @@ -81,8 +81,7 @@ export const getSecretsRaw = async (req: Request, res: Response) => { secretPath, requiredPermissions: [PERMISSION_READ_SECRETS] }); - permissionCheckFn = (env: string, secPath: string) => - isValidScope(req.authData.authPayload as IServiceTokenData, env, secPath); + permissionCheckFn = () => true; } const secrets = await SecretService.getSecrets({ @@ -447,8 +446,7 @@ export const getSecrets = async (req: Request, res: Response) => { secretPath, requiredPermissions: [PERMISSION_READ_SECRETS] }); - permissionCheckFn = (env: string, secPath: string) => - isValidScope(req.authData.authPayload as IServiceTokenData, env, secPath); + permissionCheckFn = () => true; } const secrets = await SecretService.getSecrets({ diff --git a/backend/src/index.ts b/backend/src/index.ts index 994e24cc1..3d6dfaaa9 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -223,21 +223,25 @@ const main = async () => { // await createTestUserForDevelopment(); setUpHealthEndpoint(server); - server.on("close", async () => { + + const serverCleanup = async () => { await DatabaseService.closeDatabase(); - // TODO: prevent queue from trying to reconnect with redis after .close - syncSecretsToThirdPartyServices.close() - githubPushEventSecretScan.close() - }); + syncSecretsToThirdPartyServices.close(); + githubPushEventSecretScan.close(); + + process.exit(0); + } process.on("SIGINT", function () { - server.close(); - process.exit(0); + server.close(async () => { + await serverCleanup() + }); }); process.on("SIGTERM", function () { - server.close(); - process.exit(0); + server.close(async () => { + await serverCleanup() + }); }); return server; diff --git a/docs/integrations/build-tools/gradle.mdx b/docs/integrations/build-tools/gradle.mdx new file mode 100644 index 000000000..5005433d0 --- /dev/null +++ b/docs/integrations/build-tools/gradle.mdx @@ -0,0 +1,91 @@ +--- +title: "Gradle" +description: "How to use Infisical to inject environment variables with Gradle" +--- + +# Using Infisical with Gradle + +By integrating [Infisical CLI](../../cli/overview) 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](https://gradle.org/). + +## 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: + +```groovy build.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: + +```groovy build.gradle +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: + +```groovy build.gradle +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`: + +```groovy build.gradle +version = System.getenv('BUILD_NUMBER') ?: '1.0.0-SNAPSHOT' +``` + +## Advantages of Using Infisical with Gradle + +1. **Flexibility**: Easily adapt your Gradle builds to different environments without modifying the build scripts or setting environment variables manually. +2. **Reproducibility**: Ensure consistent builds by leveraging the environment variables from the related Infisical project. +3. **Security**: Protect sensitive information by using Infisical's secrets management without exposing them in scripts or logs. diff --git a/docs/mint.json b/docs/mint.json index f03d86933..41c406bc6 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -274,6 +274,12 @@ "integrations/platforms/pm2" ] }, + { + "group": "Build Tool Integrations", + "pages": [ + "integrations/build-tools/gradle" + ] + }, { "group": "Overview", "pages": ["sdks/overview"]