From the app JS I want to detect whether the app is running in Testing, Staging, etc. Is this possible?
In the runtime / app editor
One way to accomplish this is to write a function in your shared JS as follows:
function sharedEnv() {
if(journey && journey.server) {
return journey.server
} else return null;
}
This will return the url of the environment, e.g. https://run-testing.journeyapps.com
.
To make this useful, you can use the following function in your view to determine if you are in e.g. testing
or staging
.
if(sharedEnv().indexOf('testing') > -1) {
//do logic or show a button for testing only
}
In CloudCode
CloudCode also exposes the environment in a variable, but directly:
export async function run() {
//returns the evironment the function is running in; testing, staging, production
console.log(`${this.env}`)
}
The above function returns the following:
What is a good way to detect the environment if I have two environments for staging? For instance, staging for development and staging for a client.
@AntonVanZyl The built-in this.backend
returns the instance ID. Perhaps you could create a map in your shared or secrets file between your instances and the common names, e.g:{'instance1id' : 'dev','instance2id' : 'staging-dev','instance3id' : 'staging-customer','instance4id' : 'production'}
Would this work for your use case?
Thanks @JasonBordelon, this is a great solution
Note that in runtime version 4.85.6 journey.env was introduced and journey.server
deprecated.
With journey.env
you can retrieve the user’s environment in the runtime as follows: journey.env.deploymentEnvironment