How to keep your pipelines DRY
After creating several pipelines in Codefresh you will start to notice several common values between them. Common examples are access tokens, environment URLs, configuration properties etc.
Codefresh allows you to create those shared values in a central place and then reuse them in your pipelines avoiding the use of copy-paste.
You can share:
- Environment parameters (easy)
- Helm values (easy)
- Any kind of YAML data (advanced)
Creating shared configuration
From the left sidebar click Account settings to enter your global settings. Then choose Shared Configuration from the left menu.
You can create four types of shared configuration:
- Shared Configuration: for environment variables
- Shared Secret: for encrypted environment variables of sensitive data (access tokens, etc.)
- YAML: for Helm values or any other generic information
- Secret YAML: for above, but encrypts the contents
You can create as many shared snippets as you want (with unique names).
Using shared environment variables
Each pipeline has a set of environment variables that can be defined in the Workflow screen. To import a shared configuration open the pipeline editor, and from the tabs on the right side select VARIABLES. Then click the gear icon to Open Advanced Options:
To use your shared configuration, click the Import from shared configuration button and select the snippet from the list:
Once you click Add the values from the shared configuration will be appended to the ones you have in your pipelines. In case of similar values the shared configuration will follow the precedence rules.
Using shared Helm values
To use a shared YAML snippet for Helm values you can install a new Helm chart either from:
In both cases, when you see the Helm installation dialog you can import any of your YAML snippets to override the default chart values.
From the same dialog you can also create a brand-new shared configuration snippet of type YAML. Not only it will be used for this Helm chart, but it will be added in your global shared configuration as well.
Sharing any kind of YAML data in pipelines
All the snippets from shared configuration are also available as context in the Codefresh CLI
This means that you can manipulate them programmatically and read their values in the pipeline in any way you see fit.
If for example you have a shared configuration named
my-global-config you can easily read its contents programmatically using the CLI:
Example - custom value manipulation
Let’s say that you have a YAML segment with the following contents:
Here is a pipeline step that is reading the yaml snippet and extracts a value
Once the pipeline runs, you will see in the logs:
I love eating pizza
Manipulating shared configuration programmatically
See the context section in the CLI documentation.