Previews
When do Preview Environments get removed?
We have a background garbage collection job which removes Preview Environments after the Pull Request is closed/merged. You can run it any time you like via the jx preview gc command
jx preview gc
You can also view the current previews via jx preview get:
jx preview get
and delete a preview by choosing one to delete via jx preview destroy:
jx preview destroy
How do I access the preview namespace or URL?
After the jx preview create step in a pull request pipeline you can access a number of preview environment variables.
For details see how to add additional preview steps
How do I add other services into a Preview?
see how to add resources to your previews
How do I configure Secrets in a Preview?
Previews are installed via helmfile sync unlike the usual approach for promoted environments like Dev, Staging and Production as the changes have not yet been released.
This means the usual conversion from Secret resources to ExternalSecrets is not enabled for previews.
So to add Secret resources into your preview namespace try one of the following:
- if you can use dynamically generated
Secretvalues then just use the usual helm approach to creatingSecretresources - if you need configured Secrets to access external services then you can copy them from the
jxnamespace. We copy labelled secrets by default in the preview helmfile.yaml- you just need to add the label:
secret.jenkins-x.io/replica-source=trueto yourSecretin thejxnamespace - see how to add a new Secret
- you just need to add the label:
- you can add an
ExternalSecret resourceto your previewhelmfile.yamlas a nested chart like this which will then use kubernetes external secrets to populate theSecretresources from the external secret store. - add a
Job, init-container or helmfile hook inpreview/helmfile.yamlto generate theSecretdynamically using whatever custom logic you prefer
How do I inject the Preview URL into other services?
The preview namespace and URL are available as environment variables after the preview has been created.
However if you want to pass in the preview URL to other charts included in your preview via the preview/helmfile.yaml file you can:
- use the service URL rather than ingress which is much simpler and does not depend on the namespace or domain. e.g. just use
http://my-app-name - add a
values.yaml.gotmplfile for the chart to configure its values you wish to inject the URL into and pass in whatever yaml is required to configure the preview URL using the following expression. The example below usessomeValueas the key to specify the URL but use whatever yaml keys your chart expects:
someValue: "{{ requiredEnv "APP_NAME" }}-pr{{ requiredEnv "PULL_NUMBER" }}.{{ .Values.jxRequirements.ingress.domain }}"
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.