From a4543b4f3d5ee43f5f7e7f051f409c7b775ff003 Mon Sep 17 00:00:00 2001 From: Dinesh Talwadker Date: Tue, 12 Nov 2024 06:40:02 +0530 Subject: [PATCH 01/16] docs(references): improved ``import.mdx`` --- apps/docs/content/references/import.mdx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/docs/content/references/import.mdx b/apps/docs/content/references/import.mdx index 66623e8d..b4472836 100644 --- a/apps/docs/content/references/import.mdx +++ b/apps/docs/content/references/import.mdx @@ -3,15 +3,16 @@ title: Project Import Yaml Configuration description: Learn how you can write an import yaml for importing a project. --- -In this section you will find the fullest example of import yaml configuration file. +This section provides an example of an import YAML configuration file for Zerops. :::caution -Consider this a guideline only, not all keys are valid for all service types. If you want to know about the specifics of each technology, head to their **Create service** page in **How To** section. +Consider this a guideline only. Not all keys are valid for all service types. Check the **Create service** page in the **How To** section for technology-specific details. ::: :::note - `REQUIRED.` If a parent object is defined, the key-value pair is required to be filled. All other key-value pairs are optional. + ::: ```yml @@ -112,7 +113,7 @@ services: ## project -_REQUIRED, iff a whole project is imported_ +_REQUIRED, if a whole project is imported_ Only one project can be defined. From 5dfe8e1a4f42e56c951b672943034084cca40937 Mon Sep 17 00:00:00 2001 From: Dinesh Talwadker Date: Tue, 12 Nov 2024 13:17:03 +0530 Subject: [PATCH 02/16] docs(references): improved ``import.mdx`` --- apps/docs/content/references/import.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/docs/content/references/import.mdx b/apps/docs/content/references/import.mdx index b4472836..38a52cec 100644 --- a/apps/docs/content/references/import.mdx +++ b/apps/docs/content/references/import.mdx @@ -1,12 +1,12 @@ --- -title: Project Import Yaml Configuration -description: Learn how you can write an import yaml for importing a project. +title: Zerops Project Import YAML Configuration +description: Learn how to define and import a project using a YAML configuration file --- -This section provides an example of an import YAML configuration file for Zerops. +This section provides a comprehensive example of an import YAML configuration file, allowing you to define and import a project along with its services. :::caution -Consider this a guideline only. Not all keys are valid for all service types. Check the **Create service** page in the **How To** section for technology-specific details. +Please note that this is a general guideline, and not all keys are valid for every service type. For technology-specific details, refer to the **Create service** page in the **How To** section of the Zerops documentation. ::: :::note From 2cb037f1fa2b87b6c1f73ad9dbe5ae4082f600e1 Mon Sep 17 00:00:00 2001 From: Dinesh Talwadker Date: Tue, 12 Nov 2024 14:21:28 +0530 Subject: [PATCH 03/16] fix(references): ``import.mdx`` reworded better --- apps/docs/content/references/import.mdx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/docs/content/references/import.mdx b/apps/docs/content/references/import.mdx index 38a52cec..a7c0bd48 100644 --- a/apps/docs/content/references/import.mdx +++ b/apps/docs/content/references/import.mdx @@ -1,12 +1,12 @@ --- -title: Zerops Project Import YAML Configuration +title: Project Import YAML Configuration description: Learn how to define and import a project using a YAML configuration file --- -This section provides a comprehensive example of an import YAML configuration file, allowing you to define and import a project along with its services. +This section provides a comprehensive example of an import YAML configuration file, allowing you to define and import a project and its services. :::caution -Please note that this is a general guideline, and not all keys are valid for every service type. For technology-specific details, refer to the **Create service** page in the **How To** section of the Zerops documentation. +This is a general guideline; not all keys are valid for every service type. For technology-specific details, refer to the **Create service** page in the **How To** section of the Zerops documentation. ::: :::note @@ -295,7 +295,7 @@ Maximum number of containers of the service. _list of shared storage service hostnames_ -Mount shared storages to the service. `buildFromGit` must be filled. +Mount shared storage to the service. `buildFromGit` must be filled. ### nginxConfig @@ -307,4 +307,4 @@ Insert full nginx config. _string / yaml format_ -Provide name of the service from your zerops.yml (find it under `-setup: {name}`) or insert full [zerops.yml configuration file](/references/zeropsyml). +Provide the name of the service from your zerops.yml (find it under `-setup: {name}`) or insert full [zerops.yml configuration file](/references/zeropsyml). From 4df81d09f2f3f7ff9a84a24f274ba2802d3340fa Mon Sep 17 00:00:00 2001 From: dinesh Date: Wed, 27 Nov 2024 11:01:03 +0530 Subject: [PATCH 04/16] chore: env-vars runtime typo --- apps/docs/content/features/env-variables.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/docs/content/features/env-variables.mdx b/apps/docs/content/features/env-variables.mdx index 47ba8bd8..f620b43e 100644 --- a/apps/docs/content/features/env-variables.mdx +++ b/apps/docs/content/features/env-variables.mdx @@ -143,7 +143,7 @@ run: Zerops automatically generates several variables when a runtime service is created, such as `hostname` and `PATH`. Some of these variables (like `hostname`) are read-only, while others (like `PATH`) can be edited. These variables cannot be deleted and are always listed at the bottom of the **Environment Variables** page. -## Runetime specific tutorials +## Runtime specific tutorials - [Node.js](/nodejs/how-to/env-variables#how-to-read-env-variables-from-your-nodejs-app) - [PHP](/php/how-to/env-variables#how-to-read-env-variables-from-your-php-app) From 931cc5544e5bc7cbe49f6768d1c2ab430bb2c1f6 Mon Sep 17 00:00:00 2001 From: dinesh Date: Wed, 27 Nov 2024 11:09:56 +0530 Subject: [PATCH 05/16] chore: committing environment variables --- apps/docs/content/java/how-to/env-variables.mdx | 4 ++-- apps/docs/content/nodejs/how-to/env-variables.mdx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/docs/content/java/how-to/env-variables.mdx b/apps/docs/content/java/how-to/env-variables.mdx index 522c0f08..104de556 100644 --- a/apps/docs/content/java/how-to/env-variables.mdx +++ b/apps/docs/content/java/how-to/env-variables.mdx @@ -42,10 +42,10 @@ To configure env variables for an existing service, go to the service detail and You can edit or delete env variables that you've created by clicking on the menu on the right side of each row. -The changes you've made in the list of env variables need to be committed. Click on the **Commit x changes** button and Zerops will update the env variables in all containers of your project's services. +Zerops will automatically update the env variables in all containers of your project's services. :::caution -You need to **restart** the runtime service after you commit the changes in env variables. The Java process running in the container receives the list env variables only when it starts. Update of the env variables while the Java process is running does not affect your application. +You need to **restart** the runtime service after updating env variables. The Java process running in the container receives the list env variables only when it starts. Update of the env variables while the Java process is running does not affect your application. ::: ## Set basic build env variables in zerops.yml diff --git a/apps/docs/content/nodejs/how-to/env-variables.mdx b/apps/docs/content/nodejs/how-to/env-variables.mdx index 74dff90f..003b9340 100644 --- a/apps/docs/content/nodejs/how-to/env-variables.mdx +++ b/apps/docs/content/nodejs/how-to/env-variables.mdx @@ -42,10 +42,10 @@ To configure env variables for an existing service, go to the service detail and You can edit or delete env variables that you've created by clicking on the menu on the right side of each row. -The changes you've made in the list of env variables need to be committed. Click on the **Commit x changes** button and Zerops will update the env variables in all containers of your project's services. +Zerops will automatically update the env variables in all containers of your project's services. :::caution -You need to **restart** the runtime service after you commit the changes in env variables. The Node.js process running in the container receives the list env variables only when it starts. Update of the env variables while the Node.js process is running does not affect your application. +You need to **restart** the runtime service after updating env variables. The Node.js process running in the container receives the list env variables only when it starts. Update of the env variables while the Node.js process is running does not affect your application. ::: ## Set basic build env variables in zerops.yml From 2e8a6608a2df1dc68bcdf04d8d4977ad97e37286 Mon Sep 17 00:00:00 2001 From: dinesh Date: Wed, 27 Nov 2024 16:36:01 +0530 Subject: [PATCH 06/16] chore: adding secret variable when importing a service or a project with services --- apps/docs/content/features/env-variables.mdx | 18 +++++++++++++++ .../content/nodejs/how-to/env-variables.mdx | 22 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/apps/docs/content/features/env-variables.mdx b/apps/docs/content/features/env-variables.mdx index f620b43e..14502c54 100644 --- a/apps/docs/content/features/env-variables.mdx +++ b/apps/docs/content/features/env-variables.mdx @@ -53,6 +53,24 @@ It is always necessary to redeploy your application when updating or creating en ## Setting secret variables +There are several ways to set secret variables in Zerops: + +### During service import + +When importing services using YAML configuration files, you can define secret variables using the `envSecrets` map: + +```yaml +services: + - hostname: app + type: nodejs@latest + envSecrets: + DB_PASSWORD: ${db_password} + API_KEY: abcd1234 + REDIS_HOST: redis.example.com +``` + +### In Zerops GUI + Use secret variables to store passwords, tokens and other sensitive information that shouldn't be part of your repository and listed in zerops.yml.

diff --git a/apps/docs/content/nodejs/how-to/env-variables.mdx b/apps/docs/content/nodejs/how-to/env-variables.mdx index 003b9340..eeb7c39c 100644 --- a/apps/docs/content/nodejs/how-to/env-variables.mdx +++ b/apps/docs/content/nodejs/how-to/env-variables.mdx @@ -174,3 +174,25 @@ You can use runtime env variables in the build environment using the `RUNTIME_` If you create a secret env variable and a basic runtime env variable with the same key, Zerops saves the basic runtime env variable from your zerops.yml and ignores the secret env variable. If you create a basic build env variable and a runtime env variable with the same key, Zerops saves both because the build and runtime environments have separate sets of env variables. + +## Setting secret variables + +You can set secret variables in two ways: + +### During service import + +When importing a Node.js service using YAML configuration, you can define secret variables using the `envSecrets` map: + +```yaml +services: + - hostname: app + type: nodejs@latest + envSecrets: + DB_PASSWORD: ${db_password} + API_KEY: abcd1234 + REDIS_HOST: redis.example.com +``` + +### In Zerops GUI + +Use secret variables to store passwords, tokens and other sensitive information that shouldn't be part of your repository and listed in zerops.yml. From dcf4d98102906b1fea20cad132e387f05de2fd79 Mon Sep 17 00:00:00 2001 From: dinesh Date: Wed, 27 Nov 2024 16:41:57 +0530 Subject: [PATCH 07/16] refactor: envSecrets db used S3 --- apps/docs/content/features/env-variables.mdx | 5 ++--- apps/docs/content/nodejs/how-to/env-variables.mdx | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/apps/docs/content/features/env-variables.mdx b/apps/docs/content/features/env-variables.mdx index 14502c54..fe796c1a 100644 --- a/apps/docs/content/features/env-variables.mdx +++ b/apps/docs/content/features/env-variables.mdx @@ -64,9 +64,8 @@ services: - hostname: app type: nodejs@latest envSecrets: - DB_PASSWORD: ${db_password} - API_KEY: abcd1234 - REDIS_HOST: redis.example.com + S3_ACCESS_KEY_ID: 'P8cX1vVVb' + S3_ACCESS_SECRET: 'ogFthuiLYki8XoL73opSCQ' ``` ### In Zerops GUI diff --git a/apps/docs/content/nodejs/how-to/env-variables.mdx b/apps/docs/content/nodejs/how-to/env-variables.mdx index eeb7c39c..cac9db27 100644 --- a/apps/docs/content/nodejs/how-to/env-variables.mdx +++ b/apps/docs/content/nodejs/how-to/env-variables.mdx @@ -188,9 +188,8 @@ services: - hostname: app type: nodejs@latest envSecrets: - DB_PASSWORD: ${db_password} - API_KEY: abcd1234 - REDIS_HOST: redis.example.com + S3_ACCESS_KEY_ID: 'P8cX1vVVb' + S3_ACCESS_SECRET: 'ogFthuiLYki8XoL73opSCQ' ``` ### In Zerops GUI From da0f37bd7d6054793fb2d2a448b10b48d0e7d79a Mon Sep 17 00:00:00 2001 From: dinesh Date: Wed, 27 Nov 2024 17:17:01 +0530 Subject: [PATCH 08/16] feat: bunch editing environment variables --- apps/docs/content/features/env-variables.mdx | 14 ++++++++-- .../content/java/how-to/env-variables.mdx | 24 ++++++++++++++--- .../content/nodejs/how-to/env-variables.mdx | 26 ++++++++++++++----- .../content/python/how-to/env-variables.mdx | 25 +++++++++++++++--- 4 files changed, 73 insertions(+), 16 deletions(-) diff --git a/apps/docs/content/features/env-variables.mdx b/apps/docs/content/features/env-variables.mdx index fe796c1a..7ce03f0f 100644 --- a/apps/docs/content/features/env-variables.mdx +++ b/apps/docs/content/features/env-variables.mdx @@ -72,6 +72,11 @@ services: Use secret variables to store passwords, tokens and other sensitive information that shouldn't be part of your repository and listed in zerops.yml. +You can manage secret variables in two ways: + +1. **Individual editing**: Add or edit variables one by one using the "Add secret variable" button +2. **Bulk editing**: Click "Edit multiple secret variables in .env format" to manage multiple variables at once using .env file format +

-To configure environment variables for an existing service, go to the service detail and find **Environment variables** in the left menu. Click on the **Add secret variable** button and set values for `Key` and `Value`. +#### Individual editing +To configure individual variables, click the "Add secret variable" button and set values for `Key` and `Value`. To edit an existing variable, click on the menu on the right side of its row. -To edit an environment variable, click on the menu on the right side of its row. +#### Bulk editing +Click "Edit multiple secret variables in .env format" to open an editor where you can: +- Add new variables +- Update existing variables +- Delete variables by removing their lines After making changes, click the **Commit x changes** button to apply your updates. Zerops will automatically propagate these changes to the environment variables across all containers in your project's services. diff --git a/apps/docs/content/java/how-to/env-variables.mdx b/apps/docs/content/java/how-to/env-variables.mdx index 104de556..f6e2334b 100644 --- a/apps/docs/content/java/how-to/env-variables.mdx +++ b/apps/docs/content/java/how-to/env-variables.mdx @@ -27,6 +27,11 @@ You can [reference](/java/how-to/env-variables#reference-a-local-variable-in-ano Use secret variables to store passwords, tokens and other sensitive information that shouldn't be part of your repository and listed in zerops.yml. +You can manage secret variables in two ways: + +1. **Individual editing**: Add or edit variables one by one +2. **Bulk editing**: Manage multiple variables at once using .env format +

-You can set env variables when you [create](/java/how-to/create) a new Java service or you can set them later. +### Individual editing + +To configure individual variables, go to the service detail and choose **Environment variables** in the left menu. Click the **Add secret variable** button and set variable key and value. + +You can edit or delete variables by clicking on the menu on the right side of each row. -To configure env variables for an existing service, go to the service detail and choose **Environment variables** in the left menu. Scroll to the **Secret variables** section and click on the **Add secret variable** button and set variable key and value. +### Bulk editing -You can edit or delete env variables that you've created by clicking on the menu on the right side of each row. +Click "Edit multiple secret variables in .env format" to open an editor where you can manage multiple variables at once using standard .env file format: + +```env +# Add or update variables +DB_USER=admin +API_KEY=abc123 +DEBUG_MODE=true + +# Delete variables by removing their lines +``` Zerops will automatically update the env variables in all containers of your project's services. diff --git a/apps/docs/content/nodejs/how-to/env-variables.mdx b/apps/docs/content/nodejs/how-to/env-variables.mdx index cac9db27..9ae154ba 100644 --- a/apps/docs/content/nodejs/how-to/env-variables.mdx +++ b/apps/docs/content/nodejs/how-to/env-variables.mdx @@ -27,6 +27,11 @@ You can [reference](/nodejs/how-to/env-variables#reference-a-local-variable-in-a Use secret variables to store passwords, tokens and other sensitive information that shouldn't be part of your repository and listed in zerops.yml. +You can manage secret variables in two ways: + +1. **Individual editing**: Add or edit variables one by one +2. **Bulk editing**: Manage multiple variables at once using .env format +

-You can set env variables when you [create](/nodejs/how-to/create) a new Node.js service or you can set them later. +### Individual editing -To configure env variables for an existing service, go to the service detail and choose **Environment variables** in the left menu. Scroll to the **Secret variables** section and click on the **Add secret variable** button and set variable key and value. +To configure individual variables, go to the service detail and choose **Environment variables** in the left menu. Click the **Add secret variable** button and set variable key and value. -You can edit or delete env variables that you've created by clicking on the menu on the right side of each row. +You can edit or delete variables by clicking on the menu on the right side of each row. -Zerops will automatically update the env variables in all containers of your project's services. +### Bulk editing -:::caution -You need to **restart** the runtime service after updating env variables. The Node.js process running in the container receives the list env variables only when it starts. Update of the env variables while the Node.js process is running does not affect your application. -::: +Click "Edit multiple secret variables in .env format" to open an editor where you can manage multiple variables at once using standard .env file format: + +```env +# Add or update variables +DB_USER=admin +API_KEY=abc123 +DEBUG_MODE=true + +# Delete variables by removing their lines +``` ## Set basic build env variables in zerops.yml diff --git a/apps/docs/content/python/how-to/env-variables.mdx b/apps/docs/content/python/how-to/env-variables.mdx index 33f5d098..f8f396ec 100644 --- a/apps/docs/content/python/how-to/env-variables.mdx +++ b/apps/docs/content/python/how-to/env-variables.mdx @@ -27,6 +27,11 @@ You can [reference](/python/how-to/env-variables#reference-a-local-variable-in-a Use secret variables to store passwords, tokens and other sensitive information that shouldn't be part of your repository and listed in zerops.yml. +You can manage secret variables in two ways: + +1. **Individual editing**: Add or edit variables one by one +2. **Bulk editing**: Manage multiple variables at once using .env format +

-You can set env variables when you [create](/python/how-to/create) a new Python service or you can set them later. +### Individual editing + +To configure individual variables, go to the service detail and choose **Environment variables** in the left menu. Click the **Add secret variable** button and set variable key and value. + +You can edit or delete variables by clicking on the menu on the right side of each row. + +### Bulk editing + +Click "Edit multiple secret variables in .env format" to open an editor where you can manage multiple variables at once using standard .env file format: -To configure env variables for an existing service, go to the service detail and choose **Environment variables** in the left menu. Scroll to the **Secret variables** section and click on the **Add secret variable** button and set variable key and value. +```env +# Add or update variables +DB_USER=admin +API_KEY=abc123 +DEBUG_MODE=true You can edit or delete env variables that you've created by clicking on the menu on the right side of each row. -The changes you've made in the list of env variables need to be committed. Click on the **Commit x changes** button and Zerops will update the env variables in all containers of your project's services. +Zerops will automatically update the env variables in all containers of your project's services. :::caution -You need to **restart** the runtime service after you commit the changes in env variables. The Python process running in the container receives the list env variables only when it starts. Update of the env variables while the Python process is running does not affect your application. +You need to **restart** the runtime service after updating env variables. The Python process running in the container receives the list env variables only when it starts. Update of the env variables while the Python process is running does not affect your application. ::: ## Set basic build env variables in zerops.yml From 9754846e932e5ddbb7555298ced9cd07a29bc421 Mon Sep 17 00:00:00 2001 From: Arjun Aditya Date: Wed, 27 Nov 2024 20:53:21 +0530 Subject: [PATCH 09/16] add new image + add a new env secret --- apps/docs/content/features/env-variables.mdx | 7 ++++--- apps/docs/static/img/gui/secrets.webp | Bin 0 -> 14766 bytes 2 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 apps/docs/static/img/gui/secrets.webp diff --git a/apps/docs/content/features/env-variables.mdx b/apps/docs/content/features/env-variables.mdx index 7ce03f0f..e048adab 100644 --- a/apps/docs/content/features/env-variables.mdx +++ b/apps/docs/content/features/env-variables.mdx @@ -64,6 +64,7 @@ services: - hostname: app type: nodejs@latest envSecrets: + SECRET_KEY: <@generateRandomString(<32>)> S3_ACCESS_KEY_ID: 'P8cX1vVVb' S3_ACCESS_SECRET: 'ogFthuiLYki8XoL73opSCQ' ``` @@ -79,9 +80,9 @@ You can manage secret variables in two ways:

Runtime Secret Variables

diff --git a/apps/docs/static/img/gui/secrets.webp b/apps/docs/static/img/gui/secrets.webp new file mode 100644 index 0000000000000000000000000000000000000000..094eb7956a1abe3827f66782855d330c300d2b85 GIT binary patch literal 14766 zcmd72W03Fev*~lS-7x+NSH)i3n0K zagA`x`w!=HvYxtv>3< z{XM65s*nABY(g;thTQwoqy594?o33=JpHA?$uh}IE$PazERBlI^;)hkzRZG_>A4l# zKiqIOcyEM&L%**$z`fwlDB%B=1BIWkf*7{uAM-ze={apI?LTcz3~Ibpi3?N8i4?3= zi1g~MXQt;8smCcKHgux5q;l0^0`yTK^y2y}&2`yNgBvwgbsrARHHd>a9j$YtK>ui+ zh>QyeXzm0k2bg9Nvj zJ0pm~d;VkhE%R*tsqxcyuQ&CBe_uBP!11dD>;Yu%lHTh=cB#MJJ|vG79&ZB#!+j** z0k4Fsf;WCG`mg|nub8ir7xR6_^W7xDctQjHC;-Zj!*|&8;>YfF8lG#}kK~tKIcB*a z;m_uG(--2q;I)4HPD@|b5A_e=E9LF>N&kj0p0GF1pYX3>3_$N^`Wx^q_!-Uka~;k9`k*?EnCv=`H8u^u6x}aO8LF7yQqO#RI`( z{nfq&fG0o=;P#aV0Q~gj_l^3c`UU)q|4{yDya@sT?*hAkZ?8Y!g)a=>x`6TbAC%RW zOI_jT+We1IMIWnjftDpg?F+;j7s!>)z!UTT<5+|~kDn1UtST}@-dAoGbJ<(*E_~GunMo%oSrC7w0|c;k z9tv7Zkeft)8^noGxZWb{d!^?skdpgF5CKGVJ~|Hh|58X?@~efgoh5%A;?pbbs_^$z zRrDd7I~1u0t_SyjDm>_)Kk?MTH=NF28H6;p`ji%%QSlP+f{nusbgXsl42qW%Zlem* z>Qt$NHL1tH7Jl82-m4HBEqzCu95VT;G&JdXEQHw;1cvqZLm#4@#Gjx};>iaDyr;XL zViXE%p`-;>8W$_o_RSd*8G>dp5UiQBP)1xc{2s2$8gs?EHc;yY(Qx<|nJg|?^)?=T z+z8Y-_{OfSqa2#h8dhu_1laXhkX;bOU&fQ4(bJ8KrMEIbLCd-52z5E?;4P&YTtNfd z+m(tU(FE9`l8=UJOjmVvF|*=-H-(rCbCp~nKatpc?63WOZ)9Lyh~JS9d>~ovhAL&Z zwZ9V~2IfRdAcvrynH|bg*lcdpW8=}e7A`&^46;`_U$Mc~ZQ#(<$95B2I+7TN zn@5z}r^xx++CyKqz^xFW(m1uNn*(ZcDFcwxN`rq@9DAT`L#q?M!P{^_9o5~Cf!!gS z7}mLStDEsI=%4JM=sUX9H`d1$0_**67V`hWm)yeaF+3(%-kg>#z3L>!fraI>vfB-* zYOh2V4A07_CiiF6+FCQqd5iy>V(=6H{{1wG5Y`lcz$XR%N=T%x*jF*&!{lXb^=&U9 z`?2M00tPOhcCOZjXM7+2L<7KLKC9773+%k)U`=@_JtIQL^#pMv-nzfVaQm0d(Q7CBz%#AA>sv{UX_z`v9X zUy0V345Ev2zSwv#_lW^CPt#VA^1lVG6i7u_6yw^|;Ix-}As7wKF*k*V$XF}Y*XBn% z;JyKogmG%B6E>V@@b7NrSRxpd{&=8BTzR;zGD0%E{|sSyR9KA=7hqox(02BIzmHIM z_I^5AUL7X>x8V3MU;Q7W=Knm9K3I5Ln z=HC}ALmdqOLK^_ExAHC&YdVJr&q8)E*TyNITO<(|aW6nQ^p=Nu;H~g~+T~w72^uaf z>TjZ!ST3q(W31M0Fv-6KzF)(^T%p%&RCM!yRWg3i@c$rL+-QiYQo_hxj<(SbZ+@vZ zwpRsE6n4?%BZZm+7;(tAMYv}{`ZUN z`Kz!tT97TSHAj}qqZBMhIBLYSz0@vu{|7k%S7ufcvsXI9}f0&ZXY1Wb}5kw{<~`vc3cGKY^R%-wDu3d?MheK&Q1 zHrrDW?-2FOD#QV`pJ(F(lhLa|z$yvR*`VL~IUp+ilaBb-Beq!GPL`=){Y$k6aQ;32 z>`an&6V--IiS%-epl3^Ty5t9`Nm3#k-kh$+w$_y6j~k(VKHm+Ct285a<=oU#d-O5b zk&S+CW``5Kh-JVuZO(|MQg?idxrDMQIUG=pA*#rR7#7KO%Xtbqw*Wjv9R)Od!ihlq zBSrRzieRZvR__a+X@S`?sRo{A%%&nY3yt)BpA!$nsC&hiwZ})K;m!BAbhJpE$2?2o zcw6rUc*iZ-)0se%>kl=bE1tCXxova|hnsxQ2L1U;(1^mp=9{i>Aj(>R$zj){8d?gSF=~etOSaG)E5jV3@WJzrD zqeCldSr5E4)FnM|wtH?U3XF+yZ>M*r_C`zTGCwx_H~nsf$a{`6@z85aN+cD75J!CJ zqLLtOFL!cZ|BcQ*T?fnL+HZ3wZA(KznP;1mP7gVN2U2hXcB(h=RS zs-p+8;BKTq3c1mpXV;4vn?iF)?ObbxyME_R$@(o#Jj%A^p|FE#LyFPh{)q_oyX|xc zd7(bntv+2mBc$`L`2zgs7>)%c1+FgK;St2`LcMnjO zN_=O54jI{l_RF@w`lV9ZkR~unDv3yzG>N!z=%yfqo>ih?@q!X?&enik{!6qftH-_4 zg~!__dCXWbWa0{|)UkX@ZU7_@%b=6DBazA$V!}~1}+lKHa$nuE8>CO#aD8^E1g&7rv;BH1KuuG(&?wd ziJ(Br?A^++SkQq>tC5Sf;4XcZBZ10M3RzYghr07i!xQz$ti2!gV2uUY+FxU#EJ=P#7oR*V3VFUn%tfn`gliM5j58zuq^&4i zQQk<+!^<_!zy=o0xd`j#xSwh9@%#~VViOX{u#wA_0dY_ zFdnxE&%}K>{flbo9jCL8^lWV zpKB4s-WEs}w9Sn_=gDJz18Yl(C8>+_o3``=x^#{%YZLL46P_Xn6E(ZF{+>|pLseAK20v4v6!1wrBto{+z@Om#w?~Mnc2{$L9fsYg&4^uJSb(^>h zr2``01lHX%UrA%Q)L2;bQD71|eGn?tRo&lCR(;Lzb)AT?2N3xS*Kihzq7rFBql%4E zIC{O_?mg2G-~~wJ)zxgc`g|VdBM32JQrf&>>d+K+B!7o=pLM5Yn2mMbo|67J+_hckpBy*4$k+1P1DQP zscKv~jty&q?PYxe%4zy8I&{IWut!rqXtdrCXmP&>c5zt5VJ7J9F4%*D7Cp}8iIHFI z41|!S?-umPO2zfLQPktstgq|f=K1mI!TG&-!?t$W?*Jq5?gfiAf_hDWXtqiByX^JtQI*0Yb=1R$Dc_eKrVF@>?gP z3D!wvF+4(2WyZhKRNz+DI5{bQ&f}Qxx(1=o-nKUetF!M6SOZ~Ph>oIPI0bskQo_K* zc(0|my6VY%TRe)QwR%B*j1KN#YL9p@{k+fIBlu&Lq+MujEs>tpM{5~^HCSeUEp#o6 z_ZR*}GiRZi16NH0r=QP^M@d3CCWz#u!jV`s8$eO%GIG}hSC8U9>hL7#?rrO9)GSD| z6sJ{)#x`uWUtA^oj{bcfLgcwZ(d68e3WB$L^)i>!yk-pV)PD7n(Op`b;0nqND!6>T z)(dtHLhbNcr-dfkn=aCM*d;cGZJ&&<4>sOIezgQ~ExSQb@4@}ZDu_xs^hJ+l3z|kF z!7BBcCDuXi+~|QWptm&7-L_A#IV^P}C@9hG2+sX@>oSrMRK6_cmtDL`GW1ccoavoC z%rLI>_!?hEM->ovlE&0z@^ICWa%Q$1pM5-=3Q8gGJjwH$3G8`~V`PZrr6%VK+OJC6 z<0s#lOhI~I`)UzypM5@}ANYlDgWo=mn>TdvnqWGT^|@jNiMXcG4s_3=GY?@!Z)Ar_DOd%ZdMz_{ozzp;I}ee627m zI?t?=3zpB6Y-Kq@HTmZGgiJgD9DZ#db%K#`>fXzx^CZsWkkH-MYaxcUxgVAM5;_WE{K$)lMV-QuB(N{3uZ{wO?OJ$Vh`d;`r1d0KDq zXtWJvK@4|hV3rE60PT zzsdp~O9s7ynM5qoEVRd83bvBSc7Zsm(V-5j*9WD->n!y)IwhW*q=> z**5d`Nhu+LottO}!LhoyUw$i;1b>^Og${eI`QGDtR-6W!-WJ|Ig#R3!mlDQ!y1=Jh z-qlQrHBDLZesNuXZAJhTIoR)J2_lh*r{`|Mk= zYkpK;3ZhsIYBoMD65o>lp*ROji;&>0nDqU34haSW$U>ME>r>VeB_n1zXQ=3Jb(1&k z!O^VQUtai!jP+`m_KpZRXsadq({Ks|#IbFQjKm&~8vlwZuJQBn+pFIurO$&pYSx=u zrf+yOfk)~tT%$P-s+*JrX+)7kwzPgn{G%fB7BQw{reog==Vc+RTmwI;4{nYG0|`OwAG<9XYBqJ1z_P|Tkgl-spO zjHQU@XOB;tidtY)wgRj0z{U>WgBFY?W?=h1;1PZ*wBU)UyXd>`_sqV%NLQq|1Is50jL;(TvDgnx6W!W&o<@_)Y^LWcBhs&vwV)_o@XX@{I0DR(=B zMnmF+7~%3d!WaitC>n6W-2BeH?+Tc~B>F@?i!Xr`%tZC>pI=+`p@T@KQGm2?%g5%B@z<~&i+vGrdUf*@la54{5vxVQ$zUZE z_x4H~3v&*{veXIxa{Jlss7f_28G-F$QLZlU8WZzS1YwbDwjxAWEP3VXb*=!Ur^5XH zB`AaeNB&Bg=QY5y1Y594{8n0b6T&7tx#N@f%RC+KY?|HcV~m}Bh>?l2ThKVxhfG{9 zAl@F!k<$-sbDeoKs>Q%r26gnB7+g-*W*>B2ar1O+f`88^(lQT7zSxAPKWe;@vJARVK`Qi$FVS3-PF9oR{{|ZrJ zM~4LwHF3~7zUN@O^(q>UAgx5?Qpi-M^bA}K=Q z=+DpR(7~AMiW{+eV8lBy%G^vQimifP?!q`{c5wNdUz3c{p(~f05O=x|>!;1Ny0(bS zMM#Vz$Zq&hdG9ayMjpV=dX!+2trR5Or;&|9@6}!{a>PN*y;fHt5g1wT7+Mxq~M(Ej26(ZVTMvLZIFE{Y=2F)Y>SODd}66zQwn6rUo26Ay<8;`?= zPYqtANGXK`LUYL5W@|C(zWQWzCQSVxm)5A)CU!C_9WI)H!0zd73d)d3nvM|mZUj_- zTgVsMw$~u8TnSctao&>B5kHa#L4h(w*Mwl6n!Mgz>*sW0#Oue))d0PHQk2HDcPD{c zz)5>_e;Q%qQCyD~LU9jV2~mt)S@m0~w_xhc2v2z-N8KYY>@Vwvl>AY;I zBbbt`n(+SaD8!6WI`XmFNQGkFA+?ll4(rNhr|xMk+hJBfTsVbSinbHZJ)Ozk`<(dX z?rXr@lNl>TI(j&NX%KM3$iapi%wp)a9BCssO?BJtT=GG+E(A4AB>Qt^!iY(B%c&H{ z;EFlL>Jv$bLN-u7Xmewlo97K6L)_q=ucdT~qv=X4;*PS8s%g4Scj3sIL4(v`k9Jhk zg>ZRWN5mLVd1a_fBKhJ!W!M?EuxQWW9iRsypi#sGLn%uu(RJQBno>DUG0xqEnn}j$ z)$cXJCNJWC&6K>LPceY0@PR&*ZC%5N|6WWb29e?(MK*8bR{0XJ-JRt)7vSEDF3kMk zdMcjj29)5ItOeceyjLFORY=irM3+RP7xWr^nYFtJ`i1jy1Y{;eJYlTB%$7T<8i_|U zQ1K$lY8Un4?{(!b_>3eXh=|hiWGY5(BHHhA2)Dv_)9L=28E%VKWD9D|ctI3zTxF-i z;PYvrILzq*x^wZZJ*pB*Q#na8HE|82vM%R|zw%tCw^{m8MrVxd?TQ!O>u6F(}=@Y-PpDdGD-zXt0}@_Vh%X<4%4^!rV_mWh%foQ)TJ z-#}2Uzei8#-U|#3A<4$E;Db_0zGwIDwasqTjJfd2y}-7P*UmQ|=bpz&yE0Mf5#I=K z+vz}W)_zxxMUubQ#TIi_{@#XPI2nV#<DFKxF%~EIZb>3fRUUBHXCff6um_D3awOV%s0sr~OP}Mt#cyjPIZvgnt;ut<# z21#NT)y}{!;t+v*hvMN@H0W>Deqg}z)QsX&LUHt=yj%ZPj1aHn%BX417oN$~G1_{- zmB-T~(brk2=vOE|Mj2srd!o0hh#*Y+!(x`oyggl=zk9-HigUwBc-aQq+&IW zo!;402~Ea9K5WFpD$Liw>JdCM%7QBYS3Yup@+1|1YdwIS$)D&0skD z_(%nfTSpY-rCxwFtdjVX@PQ^*NycfSDuKrbH`cNFseVHZRC}Ydx^!D-(i&R5MlF;l z#)rql_ckHa_hfEk<{JhkX0y7A`AX&5Pon<0Sp0M^dzlgwyNw{~e2%7$W&*xb9VY@=(*r&5J2mF-)@3dNEk=+WAe1 zq?&oD8IbV&*PV$o7{EN;3H)x#-rro$(M1av&1B4Fwsu{Jt}q3Pt6Y@Z1i=|8sGR$0 zSw#x^cV?(cR6-r-BBV?7MycdOe@wy3_(@~Qn%S1MzPYJqv`J1ze=Uu72H<^dU7QNjzEcatA47 zV);pwvAmXux;jodzBDP(ha=6M4;Se%X{Vi@hF0U^<3$pSzY`SB@by56EJDhkVFo1} z$$JJJ(I4`MrVi=X?*doGhi+D;<=hJ}$#Bh|2?$v3cD9)WcNpV%H?7zP*t0Ol6<;NI zY3tQ9W58aRB?w-NmQC@~unLPSRx+jr;uVcIA-}uo14h|P+=u*}8I6MvDvG7QMoqrs zph7#Xo^BOH1EnvEVy69;uwFAXgRO({B=r?7hNp!em^sKo_8HUOo40DR4Q{m$OY>8R zP{;3K>lWk*ZJNxpswy42P2gCj`y7ddzDbHG(2RQ@h9$N5@_x|ZcclAY(Vp_Vo%`|- zPZAaqwq%@>Njtx7Q#d(wSl=$Bai=4q*Ey#%*cy<*^0xm?NwQq7i%($?bPT~@EV(y$ z`_LptZPu6-#}?U8DDI7bT_w6|!R|rZ9Du5Bw}VfQ?K{%-1&_JnTo#aVxYW|GET=ju4GIJc z>Cf7MWR8+BH%X3KZ4DO=R-=0M%-P>~+7-jMJWEhz%2KK3a#y<{>CsvrbI#7ZsWKPv zzcR)`QM_M2`;#tzBHKP9@nB!|A3X^*!5K|Od?LqLi!3YMQm$*2y!0JI+nur52gOsj znj6nr)H?D+C2`{d7$N#L*8S7!xdf&11Bk3x7gs{B>##+BuuChb-M~Mc!nE4Y&!H#TbxMCI^{_ zPiaWG*gsbE33r4$0(7s^S2x&%c!w9n!%T3A{7|!nS^8#)?@{zh6O{5dji@FJQ=^`z zy%FBwd%@Nz0=!-R6lZfHyTK%y2=+h*2vq-4peMDUV_&x>j^{oDWLxj-Ka*)V1T zMS}uer$DgB?Pe`D6tW|GR2c{wy?{yArroh^^<=;_h<}T_f|o5a9~)oXU;F$H207>w z22qfK*IzALlw5P?-D#xt-(VUX43mqL!Z!dI3}Q?;t4@BQ)YqZENxbO)RuY-UwP4FH zBZ>`oszvs*b0y0&p#Q{nE{7{)EwKbS?9VXM9G0!$-sC3#`-?Xz>Zc)%V^LT&f7C9# zeZG6sB7)4RWLI?&(o?rqR^?v&Gu=#vsJlH{z~@zKWBR!Uv7Bxxe()7)+ud#yUG#T` z(#xG&CiPIqBvCbZLF`sf1|k%(Bbtx5hf@(KTu+ymaZ4gm&!3w~E;k!rZGr|d6NYsK z7`Y>CDAHDdijzmV^6P=vOO!mwh=)0ug8DOu_(@12_9y?C9&a6_`St`bg7R?Bu^wtX z$f2wBMSglLvYeFjxRvO6df{w#cZy91Rkn$M8*^mxZ6v43;09G}cqFl4a}od42d6`= za}jt^yTuZBJ|Q>rw}g_Va!7GjqM(s4bq!3m)hPWKW?A9Yj!J_W8kn%mMgR;&diawT z73sNkl3n$dtG1W{VX0UVvJgcP+?}V1O{&MG+bm+hJ8L6LGG~RfIQ#+MsIng9*h+q} z-Ynv3&4e3egL`DSI=ju#@053KgVZoL8=YjfiDE^&+%IZeD!$A|N% zjt3CV%oLKl=%4=BJF@2K%d_Y28eD*A8shXR8575Ejd*eZ%K_AFgykJStRc5tD_fIS z6!~71<;QZqAEoOdn*OdR6H*zyK!Y5os8;txwg061yLwDID$cwf@QCEx47idQnfT@P zQwDlZ7pkNUeluePTz*=U1bMwXFI^zCVnnpnnQ7c}b|2>CogTWtz%4sMg@QB|K~bF- zu1AiZZkW}Mis%JwW@HF|QQy1Tv4idjcJ&MC+z*rk`vQ4Mqavc_x+lq7=3jfN-GuTy zbR9;4D&YkJWY6h+%B^XCB*D7&VM;3oA$&)06+IA^_AP)@Wnvki@_lfG1(e}WDw-oK znBWvNgo=UAS#eOR5z&4hLaJ>tFEqK=n7p%xWl6bMC7CsnWVx^#Y#cGJVWC}BO@W$2 zu2Z(2(Eb8tgpC14cT>e&Tk_`qmTVja7BML8P`ZH7%Ym*8s|1A+Ov9DfPf ztbcD)qU}o)%}xYdK<4XXl%yCA5Amb9_h7W=K>Ym9{I5IH^oVjzkQ6f`6+p_|Gd$tg zj==Mo=7zHzc}Bin7io=kAzT)4gF0q3=vYLW0e|o-m2?RK1{J)q7R_^D|Aty@9F?=b z%f#DjW{ub)Y0)!Qn_WwB-9|^O>=p^EMy(xKdyDMuwm|r-+hcXDQ+(w_vLe*JGYo!c zHFVm7Taf6pGbn*`>?kY>?QcXgltZ&{mMcPPhi@#d)am1U0Zt5U&$X(=)~vFuyMAtWp@xs=wBP|1^!=@hh@`YZJQWhf zf01l~YKmH)1aStmG{~Z1Q(D0pNSvZZI8v|0_Zsm{$-7f>lcwc~H1l>so!uR)lLA?T zv0Z)__G9+^8j-F+XF((C!DA*dT2Dtz&w3B!4VDY z?45p6Ii>wN{#RG0WObpM4HXj4YXY`dfsn)mLdFrCIu`R;kYeLYyHO(bG7U|&iw z2^K!0?9V_Mdc{FEiipkjP2{O1JFpc3<2@7W55tq(d)ft>xR)^j`yX9CxDRwhRoK(l z7b>NB`G_ff0nFd8E?1*TJD$arKZmnT7;Yjwc{>+^8euJ`q|Gh9%>&!4vQz$nOdF`m zzjT1+6j0L(SS1qfo5wf*C=*HwDEcp!!0is)s}1T(S?0%acR&we23-{o_eNrKWt%it zCj7S9$}ti%vr1@v=RK-BPzj=L0}qG$;`t!I(WX&(uUdT(Vv0=R|G~f2bgdijgJeB6 z7$}=so`djEu={FwiksXI8iLQ!Wty=atK?*&8m9t8*g~z}pwfEY)#n%+m5VjFQ zazAp|=xMmsW9Cz(jM?-%K0hhz^mqj7+yxu{lcF4V98oJlp}Q zNP)!5)teJlRfMT)kMKwLZvFH$6rBD_+OgcU_N<&%KL4BAWY|Ylj=f4?+Z%~_@cx{h ztTumsb*;cP+f7ZhPozKQKHlNMqR^?uIIa2_lSNE*r;VWq%Sq0Vwsadxvu#?|;ev08 z2)q3cx2aJN(_i(#Ra9GXSs1DMP!ZOXa?_>1v>`WV8WS)Q!gKK|u#vWVnKWxT`V6v& zN2^vVt#jFbKK{%*?s|7c(V6i$N}7$Go$cpU6w+G0^1W6kSc{#3{Zb;xg3zOz`lM5f zBiO@21~L6se4-$j=b32BbyDeko{UW*VeDRIFl@$HVlJQmS%d~fN?0Xb6=i*9ED6c* zJghaxr0Zj-_Hr`kgr$uJfx~>)O6cRwQSb|4C`No`+3!s!Z#YX#id)-5NqB1Dqk&B6 z3za$N_W_tvAOu^I$k@0xJZBHzhc7rD#Xwj`r>H4@9kIa9;5y%Nv5KqGLsw5 zTNvZasXU3Cf9q6;qz=zU>hQt1PVrAwAbuQhz%;BAPv7_(ZAQsD02a>d!rFZ5bxi-iTuC4nc@hWYN>kx~0q{oLf zjgMy>vg1Rn$_Ky#8D|`Fb%U6{n~j}IVO6B`_|@nfMHx?!VBH&x1<(x(H-Vhd9JBMm z(IRH!bvrNk33B^LZDAC5guYQ8!Q-cVI=@sNezErPQy{>ssl2T!xa1+Z6i{Q?&(*o{ zTg$`(ejP;n8r`t_(h5!|ZGdfj1tJ!T5CsDl={q@xTrkrvDfs|wT(^)@i0!kUR!S$ zl$KbK^fAw{!n$GUXcnjzla&cmJt>%o(z45P)~%Sq!z5`rnZ#!V52OUau6 zqv_B_jHpI^jD~M@H+`m(u7bx+3DK!AI#_$Pe6pKfDEJZ4d4bd>6-_o>kAV#CZw*`3 z#7?~;cTND1No9vw2*?+EExKUo;#;eiu?{Mk65bw+VJR<$9%@4weeO6>MA zRj{VspFr%dKG8GtCZ|Izt6~#Sad~FFf~i2`6}@c{z-AmVZ+=#jND|Knw&gc;8tJfs ziTH+8qy+x`VY*5LqOoW+V$dAuE}W2-R6-zcDm}S_*$R$UFYX<{@s|BW;!RO;$(>i4 zsq(_>#Y{R}1;F!D!sNd6_GcS95n8Xi3VsxstoH(3vLM^Z<4H$N`z~r+1>XTj&)?1r zc=&XqCwaZjWSpS;TEuw1v2-3fOSfOF3Yz zXTp0oQ?AuG%>-^lwV`em_n~{V;9P%BQK$?JxzpR0t;#+7);)c+EVg!M z8MRNp%%NN5_6P5W)z)Qhi9=;r4VsKRJ>#-+c&hPfUQ>OP?0F_hcA9__%o9%JALQze z(s1Cs6LO{aNKyxT^Oj0@%BP?}-@lT;ZMP*u;1fs!63&8#{2)Gd)e1iBG#CYD0^8P2 zdb=cR{7Gr%7&dkFq{>E;c4Le|qr%W)+8m!ABif_Uv4^Q-Ky{u3EAwnKb{C&I*Kn1G z#wSt;DBo->kIrQBs#QNwyLs^z(;W##MlUwObFaC^?u_?Tro(keoEyx@^X&)t0f$}r z%w&}KpK!&rsWQ7yY{$t>ZS&#d0!fso;eaRL&suaOlB4vZYaUF$z*6Mbu4O3RKmeEX zV~`# z%rszs#&<4fkp2PVhNE5@Ju%?M*Q=!g**RwygKjKZCLE+6O{)w(cM50|nln3FS2Wwu zZVBeXrnXI zmCGB7OnaGHT+Y&UWndfbpFHjFh7F8!psuPqAt| zELbjUG#$Otlo%@=zOb=3P;la{#BZ@@{*6K>RfgZevf8c}_z8J6aOuw{M6nyx6sp1< z>*hJ05-r%Cpw&ZkWk#w>g(b_dVk^41V6KU(AO4-eAMUf$#cdl`HV@sP7@WIGd^!OG zrXAwP{n*8rY&u_0ao-qi2Cejh0~w`sNhy&H0Q?2r}>C(tb~nz z5mu4t@o5qc`RIsdYCUh@Os8@9U!Q-Iq2Xw1%C_m_Y91{3R5 z`+aci_pBoJ9IQlM;)_sx+Ps;)p8pYNLYy5*H%)ZM)W`s( zOE5Z2ZJeS1!usaD)p_D;h^~dYVoRX%uiy+SzzVrCDyFf(N*f?Ve+T_+bxglK*_Wo; zC3vE>iG)edLhHjhP_#tze~e)COF#~^~g;{sT@9psAc1|0{L=FTQ?8Vr6LPADq&pf0Y0V2I1+yIQ;*l<7@h_10sH-XCD>1Elq ze*^Pgf{MWw}79t!!32%Oo9Wjh7Hd9KvJU{m@0ipu|Kkl!Sk O0zMzHou~YPfc_r}XY4Hi literal 0 HcmV?d00001 From ae45a834b1e2c42fbe606aec1eff6a9f10dbde40 Mon Sep 17 00:00:00 2001 From: Arjun Aditya Date: Wed, 27 Nov 2024 21:05:37 +0530 Subject: [PATCH 10/16] Update env-variables.mdx --- apps/docs/content/features/env-variables.mdx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/docs/content/features/env-variables.mdx b/apps/docs/content/features/env-variables.mdx index e048adab..5b23b26e 100644 --- a/apps/docs/content/features/env-variables.mdx +++ b/apps/docs/content/features/env-variables.mdx @@ -109,11 +109,15 @@ It is necessary to restart the service whenever you commit changes in environmen - Keys in the same service must be unique - Keys are case-sensitive +eg. `DATABASE_URL`, `NODE_ENV`, etc + ### Value - Must contain only ASCII characters - Any EOL character is forbidden +eg. `postgresql://username:password@host:port/database`, `3000`, etc + These restrictions apply to all [types of environment variables](#types-of-environment-variables). ## Referencing other environment variables From 31b65913c314d9667c57bd41d85fad72424f808d Mon Sep 17 00:00:00 2001 From: Arjun Aditya Date: Wed, 27 Nov 2024 21:26:09 +0530 Subject: [PATCH 11/16] Update env-variables.mdx --- apps/docs/content/features/env-variables.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/docs/content/features/env-variables.mdx b/apps/docs/content/features/env-variables.mdx index 5b23b26e..977a94d9 100644 --- a/apps/docs/content/features/env-variables.mdx +++ b/apps/docs/content/features/env-variables.mdx @@ -57,7 +57,7 @@ There are several ways to set secret variables in Zerops: ### During service import -When importing services using YAML configuration files, you can define secret variables using the `envSecrets` map: +When importing services/project using yaml config via Zerops dashboard, you can assign secret variables using the `envSecrets` parameter: ```yaml services: From 9209592ec8033a156289bf42e92a48085d97054c Mon Sep 17 00:00:00 2001 From: Arjun Aditya Date: Thu, 28 Nov 2024 18:40:23 +0530 Subject: [PATCH 12/16] some iterations --- apps/docs/content/features/env-variables.mdx | 21 ++++++++++--------- .../content/nodejs/how-to/env-variables.mdx | 2 +- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/apps/docs/content/features/env-variables.mdx b/apps/docs/content/features/env-variables.mdx index 977a94d9..d11c084c 100644 --- a/apps/docs/content/features/env-variables.mdx +++ b/apps/docs/content/features/env-variables.mdx @@ -53,11 +53,11 @@ It is always necessary to redeploy your application when updating or creating en ## Setting secret variables -There are several ways to set secret variables in Zerops: +There are several ways to set secret variables to your project/services using Zerops GUI: -### During service import +### With Import Dialog -When importing services/project using yaml config via Zerops dashboard, you can assign secret variables using the `envSecrets` parameter: +When importing services/project using yaml config via Zerops dashboard, you can assign secret variables to your services in your yaml using the `envSecrets` parameter: ```yaml services: @@ -69,14 +69,10 @@ services: S3_ACCESS_SECRET: 'ogFthuiLYki8XoL73opSCQ' ``` -### In Zerops GUI +### From Project > Services > Secrets -Use secret variables to store passwords, tokens and other sensitive information that shouldn't be part of your repository and listed in zerops.yml. - -You can manage secret variables in two ways: - -1. **Individual editing**: Add or edit variables one by one using the "Add secret variable" button -2. **Bulk editing**: Click "Edit multiple secret variables in .env format" to manage multiple variables at once using .env file format +You can assign secret variables to your services from the **Project > Service > Environment variables** page. +Use secret variables to store tokens and other sensitive information that shouldn't be public and assigned in `zerops.yml`.

+You can add or manage secret variables in your service in two ways: + +1. Add variables one by one using the "Add secret variable" button +2. Click "Edit multiple secret variables in .env format" to manage multiple variables at once using .env file format + #### Individual editing To configure individual variables, click the "Add secret variable" button and set values for `Key` and `Value`. To edit an existing variable, click on the menu on the right side of its row. diff --git a/apps/docs/content/nodejs/how-to/env-variables.mdx b/apps/docs/content/nodejs/how-to/env-variables.mdx index 9ae154ba..fe02c0df 100644 --- a/apps/docs/content/nodejs/how-to/env-variables.mdx +++ b/apps/docs/content/nodejs/how-to/env-variables.mdx @@ -191,7 +191,7 @@ If you create a basic build env variable and a runtime env variable with the sam You can set secret variables in two ways: -### During service import +### With Import Dialog When importing a Node.js service using YAML configuration, you can define secret variables using the `envSecrets` map: From 3bb9b16e6b72fc15b20c9051b78cd81c3ca53d3a Mon Sep 17 00:00:00 2001 From: Arjun Aditya Date: Thu, 28 Nov 2024 18:54:27 +0530 Subject: [PATCH 13/16] more iteration --- apps/docs/content/features/env-variables.mdx | 24 ++++++++++--------- apps/docs/static/img/gui/env-editing.png | Bin 0 -> 54755 bytes 2 files changed, 13 insertions(+), 11 deletions(-) create mode 100644 apps/docs/static/img/gui/env-editing.png diff --git a/apps/docs/content/features/env-variables.mdx b/apps/docs/content/features/env-variables.mdx index d11c084c..079e33b3 100644 --- a/apps/docs/content/features/env-variables.mdx +++ b/apps/docs/content/features/env-variables.mdx @@ -84,17 +84,8 @@ Use secret variables to store tokens and other sensitive information that should You can add or manage secret variables in your service in two ways: -1. Add variables one by one using the "Add secret variable" button -2. Click "Edit multiple secret variables in .env format" to manage multiple variables at once using .env file format - -#### Individual editing -To configure individual variables, click the "Add secret variable" button and set values for `Key` and `Value`. To edit an existing variable, click on the menu on the right side of its row. - -#### Bulk editing -Click "Edit multiple secret variables in .env format" to open an editor where you can: -- Add new variables -- Update existing variables -- Delete variables by removing their lines +1. To add a single individual variable, click the `Add secret variable` button and set values for `Key` and `Value`. +2. Click "Edit multiple secret variables in .env format" to manage/add multiple variables at once using the editor. After making changes, click the **Commit x changes** button to apply your updates. Zerops will automatically propagate these changes to the environment variables across all containers in your project's services. @@ -102,6 +93,17 @@ After making changes, click the **Commit x changes** button to apply your update It is necessary to restart the service whenever you commit changes in environment variables. ::: +### Individual editing +

+ Secret Variables +

+ +To edit an existing variable, click on to open the edit dialog and save your preferred changes. + ## Restrictions ### Key diff --git a/apps/docs/static/img/gui/env-editing.png b/apps/docs/static/img/gui/env-editing.png new file mode 100644 index 0000000000000000000000000000000000000000..3df099903678086f28709065816c2993b2203e22 GIT binary patch literal 54755 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 cGs_-{g&PD@stfue_|)0d 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 Date: Thu, 28 Nov 2024 19:09:00 +0530 Subject: [PATCH 14/16] Update env-variables.mdx --- apps/docs/content/features/env-variables.mdx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/docs/content/features/env-variables.mdx b/apps/docs/content/features/env-variables.mdx index 079e33b3..1e489ef7 100644 --- a/apps/docs/content/features/env-variables.mdx +++ b/apps/docs/content/features/env-variables.mdx @@ -85,9 +85,9 @@ Use secret variables to store tokens and other sensitive information that should You can add or manage secret variables in your service in two ways: 1. To add a single individual variable, click the `Add secret variable` button and set values for `Key` and `Value`. -2. Click "Edit multiple secret variables in .env format" to manage/add multiple variables at once using the editor. +2. Click `Edit multiple secret variables in .env format` to manage/add multiple variables at once using the editor. -After making changes, click the **Commit x changes** button to apply your updates. Zerops will automatically propagate these changes to the environment variables across all containers in your project's services. +After you make the changes, Zerops will automatically propagate/commit these changes to the environment variables in your service. :::note It is necessary to restart the service whenever you commit changes in environment variables. @@ -176,7 +176,9 @@ run: ## Generated environment variables -Zerops automatically generates several variables when a runtime service is created, such as `hostname` and `PATH`. Some of these variables (like `hostname`) are read-only, while others (like `PATH`) can be edited. These variables cannot be deleted and are always listed at the bottom of the **Environment Variables** page. +Zerops automatically generates several variables when a runtime service is created, such as `hostname` and `PATH`. Some of these variables (like `hostname`) are read-only, while others (like `PATH`) can be edited. + +These variables cannot be deleted and are always listed at the bottom of the **Environment Variables** page. ## Runtime specific tutorials From 83f219213a02a31bdc52e7f8dd5362e601e46942 Mon Sep 17 00:00:00 2001 From: Dinesh Talwadker Date: Sun, 1 Dec 2024 08:46:54 +0530 Subject: [PATCH 15/16] chore: update env-vars as per code review --- apps/docs/content/features/env-variables.mdx | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/apps/docs/content/features/env-variables.mdx b/apps/docs/content/features/env-variables.mdx index f1387047..8341f256 100644 --- a/apps/docs/content/features/env-variables.mdx +++ b/apps/docs/content/features/env-variables.mdx @@ -23,11 +23,11 @@ You do not have to create an `.env` file. Zerops handles the environment variabl ## Types of environment variables -### Build & Runtime Variables +### Build & runtime variables These are variables defined in your `zerops.yml` file and are accessible within the build or runtime containers. -### Secret Variables +### Secret variables **Secret variables** are used to store all the sensitive data you don't want to store in your source repository, they are also useful for testing, where you need to frequently change the environment values. @@ -63,11 +63,11 @@ It is always necessary to redeploy your application when updating or creating en ## Setting secret variables -There are several ways to set secret variables to your project/services using Zerops GUI: +There are several ways to set secret variables to your services: -### With Import Dialog +### Using Import Features -When importing services/project using yaml config via Zerops dashboard, you can assign secret variables to your services in your yaml using the `envSecrets` parameter: +When importing services/project using yaml config via Zerops, you can assign secret variables to your services in your yaml using the `envSecrets` parameter: ```yaml services: @@ -79,8 +79,7 @@ services: S3_ACCESS_SECRET: 'ogFthuiLYki8XoL73opSCQ' ``` -### From Project > Services > Secrets - +### In service detail You can assign secret variables to your services from the **Project > Service > Environment variables** page. Use secret variables to store tokens and other sensitive information that shouldn't be public and assigned in `zerops.yml`. @@ -88,14 +87,14 @@ Use secret variables to store tokens and other sensitive information that should Secret Variables

You can add or manage secret variables in your service in two ways: -1. To add a single individual variable, click the `Add secret variable` button and set values for `Key` and `Value`. -2. Click `Edit multiple secret variables in .env format` to manage/add multiple variables at once using the editor. +1. To add a single individual variable, click the **Add secret variable** button and set values for **Key** and **Value**. +2. Click **Edit multiple secret variables in .env format** to manage/add multiple variables at once using the editor. After you make the changes, Zerops will automatically propagate/commit these changes to the environment variables in your service. From f245317f684a12232550cb4943fe45aec50e6474 Mon Sep 17 00:00:00 2001 From: Dinesh Talwadker Date: Sun, 1 Dec 2024 09:10:39 +0530 Subject: [PATCH 16/16] chore: reorder env var import section --- .../content/nodejs/how-to/env-variables.mdx | 41 +++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/apps/docs/content/nodejs/how-to/env-variables.mdx b/apps/docs/content/nodejs/how-to/env-variables.mdx index aea66869..367c88a9 100644 --- a/apps/docs/content/nodejs/how-to/env-variables.mdx +++ b/apps/docs/content/nodejs/how-to/env-variables.mdx @@ -81,6 +81,26 @@ DEBUG_MODE=true # Delete variables by removing their lines ``` +### Set secret env variables when importing a service + +You can set secret variables in two ways: + +### Using Import Features + +When importing a Node.js service using YAML configuration, you can define secret variables using the `envSecrets` map: +```yaml +services: + - hostname: app + type: nodejs@latest + envSecrets: + S3_ACCESS_KEY_ID: 'P8cX1vVVb' + S3_ACCESS_SECRET: 'ogFthuiLYki8XoL73opSCQ' +``` + +### In Zerops GUI + +Use secret variables to store passwords, tokens and other sensitive information that shouldn't be part of your repository and listed in zerops.yml. + ## Set basic build env variables in zerops.yml To set basic env variables for the build environment, add the `envVariables` attribute to the build section in your `zerops.yml` @@ -207,24 +227,3 @@ You can use runtime env variables in the build environment using the `RUNTIME_` If you create a secret env variable and a basic runtime env variable with the same key, Zerops saves the basic runtime env variable from your zerops.yml and ignores the secret env variable. If you create a basic build env variable and a runtime env variable with the same key, Zerops saves both because the build and runtime environments have separate sets of env variables. - -## Setting secret variables - -You can set secret variables in two ways: - -### With Import Dialog - -When importing a Node.js service using YAML configuration, you can define secret variables using the `envSecrets` map: - -```yaml -services: - - hostname: app - type: nodejs@latest - envSecrets: - S3_ACCESS_KEY_ID: 'P8cX1vVVb' - S3_ACCESS_SECRET: 'ogFthuiLYki8XoL73opSCQ' -``` - -### In Zerops GUI - -Use secret variables to store passwords, tokens and other sensitive information that shouldn't be part of your repository and listed in zerops.yml.