Nav
You are viewing an older version of this section. Click here to navigate to the latest version.

Deploying to Multiple Environments

Throughout the different phases in the development lifecycle you may wish to deploy an application to multiple different environments, such as Production, QA and Test. You can configure your Mule application to facilitate deployment to one of many different environments, both on-premise and in the cloud. To do so, you must complete the following macro steps:

  1. In your application, create a properties file for each environment.

  2. Configure a property placeholder in your application to look for the deployment environment upon launch.

  3. Configure an environment variable to point to a  specific environment during application deployment.

Consider externalizing other aspects of your configuration, like time-out values, polling frequencies, etc…​ even if they don’t vary between environments. This will facilitate tuning and experimenting as the whole Mule application would become configurable through a single properties file.

Assumptions

This document assumes that you are familiar with the exercise of building and deploying Mule applications in Mule Studio. Consider reading the Mule Fundamentals and Anypoint Fundamentals for more information.

Configuring an Application to Deploy in Multiple Environments

  1. Define a list of environments you wish to support in your application. For example, one common use case involves configuring the application to support both Production and a QA environments.

  2. Right-click the  src/main/resources  folder, then select  New  >  File   to create a properties file for each environment you wish to support. For example:

    • qa.properties

    • production.properties

      properties_files

  3. Double-click each of these new files to open them in new tabs in Studio. By editing hem, you can configure the properties of the environment that correspond to the filename. For example, in production.properties, you may wish to add the properties as per the image below.  Keep in mind that you can use these properties anywhere in your application.

    properties

    Learn how to encrypt a properties file using the Mule Credentials Vault.

  4. Close the properties files.

  5. Click in the Global Elements tab of your Studio project, below the canvas.

  6. Create a new global element.  When selecting the element type, pick Property Placeholder  under Component Configurations.

  7. Set the value of the Location field to  ${mule.env}.properties

  8. To configure Studio to use a specific environment when  deploying on-premise , debugging  or  using DataSense  to retrieve metadata from a SaaS provider, double-click to open your application’s  mule-project.xml file, located in the root directory of your project.

    If you deploy your application to the cloud, in Studio select Deploy to Anypoint Platform -> Cloud. Studio allows you to specify your environment variables prior to deployment, effectively enabling you to choose your deployment environment at runtime.

  9. Add an environment variable named mule.env with a value that matches the environment to which you wish to deploy by default (in the image below, the value is qa).

    runtime_env

  10. Close the mule-project.xml file, then save your application. When you debug your application or deploy it on-premise, Studio deploys to the environment you specified in the mule-project.xml file. 

  11. To change the default deployment environment at any time, change the value of the environment variable key. For example, to deploy to a test environment – assuming you have a test.properties file in your application– change the value to test.

  1. Define a list of environments you wish to support in your application. For example, one common use case involves configuring the application to support both Production and a QA environments.

  2. Right-click the  src/main/resources  folder, then select  New  >  File   to create a properties file for each environment you wish to support. For example:

    • qa.properties

    • production.properties

      properties_files

  3. Double-click each of these new files to open them in new tabs in Studio. By editing hem, you can configure the properties of the environment that correspond to the filename. For example, in production.properties, you may wish to add the properties as per the image below.  Keep in mind that you can use these properties anywhere in your application.

    properties

    Learn how to encrypt a properties file using the Mule Credentials Vault.

  4. Close the properties files.

  5. At the top of your XML config, above all other flows, add a  <context: property-placeholder/> element with a resources attribute configured as per below.

    
           
                   
                
    1
    
    &lt;context:property-placeholder resources="$mule.env.properties"/&gt;
  6. To configure Studio to use a specific environment when  deploying on-premise , debugging  or  using DataSense  to retrieve metadata from a SaaS provider, double-click to open your application’s  mule-project.xml file, located in the root directory of your project.

    If you deploy your application to the cloud, right click on your project in the package explorer and select Deploy to Anypoint Platform -> Cloud. Studio allows you to specify your environment variables prior to deployment, effectively enabling you to choose your deployment environment at runtime.

  7. Add an environment variable named mule.env with a value that matches the environment to which you wish to deploy by default (in the image below, the value is qa).

    runtime_env

  8. Close the mule-project.xml file, then save your application. When you debug your application or deploy it on-premise, Studio deploys to the environment you specified in the mule-project.xml file. 

  9. To change the default deployment environment at any time, change the value of the environment variable key. For example, to deploy to a test environment – assuming you have a test.properties file in your application– change the value to test.

Deploying to a Specific Environment

Use the procedures below to deploy an application to a specific environment – production, qa, test, etc. – from Studio.

Studio

  1. In the Package Explorer, right-click the filename of the project you wish to deploy, then select Run As > Mule Application.

  2. Studio automatically deploys your application according the environment variable you specified in the mule-project.xml file in the procedure above.

Standalone

Identify the the environment in which to deploy your application at runtime with an environment variable. Execute the command to run your mule application as per the example below.


     
             
          
1
/.bin/mule -M-Dmule.env=production

     
             
          
1
$ mule -M-Dmule.env=production
  1. In the Package Explorer, right-click the filename of the project you wish to deploy, then select Deploy to Anypoint Platform -> Cloud.

  2. Then enter your Anypoint Platform credentials and domain particulars

  3. Click the plus sign under "environment variables" to add a new environment variable. Set the Key of this new variable to mule.env and it’s value to the environment you wish to deploy to (QA in this example).

    deploy_cloudhub

  4. Click Finish to deploy.

    To learn more about deploying to test environments in CloudHub, access the CloudHub Sandbox Environments documentation.

See Also

  • Learn more about encrypting a properties file using the Mule Credentials Vault.

  • To learn more about deploying to test environments in CloudHub, access the CloudHub Sandbox Environments documentation.

  • Learn more about Properties Placeholders in Mule.