Continuous Integration

FlexDeploy's built-in Continuous Integration capabilities allow developers to setup various triggers for builds & deployment workflow executions. On the Project's Continuous Integration tab, click on the Create button and select Trigger Type to create triggers.

Triggers setup for Scheduled Build based on Release Snapshot Schedule configuration can not be deleted from this page.

You can use these triggers in any combination to achieve continuous integration. A few examples are provided below:

  • Poll SCM and Deploy to multiple environments
    1. Setup Poll SCM Trigger for every 30 minutes.
    2. Setup Post Build Trigger to deploy to Dev immediately after a successful build.
    3. Setup a Schedule Deploy to QA every Monday 7am (cron: *0 0 7 ? * MON ** ).
  • Scheduled Build and Deploy
    1. Setup Scheduled Build for every day at noon (cron: 0 0 12 * * ? ).
    2. Setup a Post Build Trigger to deploy to Development environment.

For any trigger, you can configure Workflow Inputs or FlexFields by clicking on Trigger Type link.

Project must be configured with build workflow & instance to create triggers, otherwise the following warning will be shown on the Continuous Integration tab.

The following trigger types can be created to achieve Continuous Integration and Continuous Delivery.

Poll SCM Trigger

Use this trigger type to poll source control system and build automatically if any change is found.

  • Select the Build Environment, Stream and specify the interval minutes to Poll SCM for changes.
  • Polling from SCM is supported for Subversion, Git, Microsoft TFS, Perforce, PVCS, and CVS SCM Types.

    For Git, the Git executable must be installed on FlexDeploy server and it must be accessible in PATH. The Git executable version must be 1.7.9 or higher.

    How do you determine if the Git executable is installed and accessible? For version you can just do "git --version" on the command line.

    • If FlexDeploy is installed on Windows
      • Do not install "Git Credential Manager".
      • If "Git Credential Manager" is already installed, then update global configuration using command - "git config --system --unset credential.helper".
  • Triggers for a release cannot be set here. They can be set on a release as a Snapshot Schedule.
  • Click the Save button to save the changes.

FlexDeploy will automatically initiate build request when change is found in SCM Repository in comparison to previous version of the same project stream. If build workflow requires inputs, you can configure inputs as well on this screen.

Scheduled Build

Use this trigger type to schedule builds at a certain time using cron expression. Select Build Environment, Stream & enter values for cron expression, project build workflow inputs (if any). Just like when a build is initiated manually, this trigger will initiate a build and only complete the build if changes were found in SCM. This trigger type is useful if you have a requirement to schedule builds at a certain time of day, like 7:00 am.

  • Use plus icon button to utilize sample cron expressions. Clear the contents of the Cron Expression input before using a sample expression. Multiple cron expressions can be provided and must be separated by semicolon.
  • If Release is selected and that specific Release is in Started mode, at the end of successful build due to Scheduled Build trigger, it will trigger creation of new release snapshot. You cannot select a release from the project screen. This is managed from the release based on the configured Snapshot Schedule.
  • Click the Save button to save the changes.

Multiple Cron Expressions can be specified using semicolon as a delimeter. For example, 

0 0 11 ? * *;0 0 12 ? * *

is equivalent to

0 0 11-12 ? * *

A new Admin Screen was added to test expressions in the Administration Menu on the Admin Operations Screen.

For details on Cron Expression Syntax see http://www.quartz-scheduler.org/documentation/quartz-2.2.2/tutorials/crontrigger.html#crontrigger-tutorial

Scheduled Deploy

Use this trigger type to schedule deployments of the latest project version to an environment at a certain time(s) using a cron expression. Select the Deploy Environment, Stream & enter values for cron expression, project deploy workflow inputs (if any) and Flexfields (if any). This trigger type is useful if you have requirement to deploy at certain time of day, like 8:00 pm, to a Development environment.

  • Use plus icon button to utilize sample cron expressions, clear the contents of the Cron Expression input before using a sample expression. Multiple cron expressions can be provided and must be separated by semicolon.
  • Click the Save button to save the changes.

Multiple Cron Expressions can be specified using semicolon as a delimeter. For example, 

0 0 11 ? * *;0 0 12 ? * *

is equivalent to

0 0 11-12 ? * *

A new Admin Screen was added to test expressions in the Administration Menu on the Admin Operations Screen.

For details on Cron Expression Syntax see http://www.quartz-scheduler.org/documentation/quartz-2.2.2/tutorials/crontrigger.html#crontrigger-tutorial

Scheduled Execution

Use this trigger type to schedule executions to an environment at a certain time(s) using a cron expression. Available only for utility projects. Select the Environment & enter values for cron expression, project deploy workflow inputs (if any) and Flexfields (if any). This trigger type is useful if you have requirement to execute a utility at certain time of day, like 8:00 pm, to a Development environment.

  • Use plus icon button to utilize sample cron expressions, clear the contents of the Cron Expression input before using a sample expression.  Multiple cron expressions can be provided and must be separated by semicolon.
  • Click the Save button to save the changes.

Multiple Cron Expressions can be specified using semicolon as a delimeter. For example, 

0 0 11 ? * *;0 0 12 ? * *

is equivalent to

0 0 11-12 ? * *

A new Admin Screen was added to test expressions in the Administration Menu on the Admin Operations Screen.

For details on Cron Expression Syntax see http://www.quartz-scheduler.org/documentation/quartz-2.2.2/tutorials/crontrigger.html#crontrigger-tutorial

Post Build Trigger

Use this trigger type to trigger a Deployment immediately after any successful Build of this project. This trigger works with any kind of build, so it can be used along-side a manual build, scheduled build, build triggered from webhook, etc.

  • Select the Deploy Environment, Stream & enter values for project deploy workflow inputs (if any) and Flexfields (if any).
  • Click the Save button to save the changes.

Populate Trigger

Use this trigger type to automate Populate from SCM or Backend for partial deployment projects. The schedule for this trigger is set using a cron expression, which will allow for populate to occur at a specific interval or time of day. Select the Environment, Stream, Package Name,  Salesforce Account Code (if necessary), & enter values for cron expression. For example, if developers are adding new files to SCM, this will allow for files to be discovered automatically and save manual action. This is the same action as the populate from SCM button on the project files screen.

For Salesforce projects this trigger will automatically pull changes from Salesforce and commit them to the specified SCM repository. This is the same action that is done through the Salesforce configuration screen on a project. The account code that is provided will be the Salesforce account that the changes are pulled from. If the account code is not provided, then this trigger will populate files from the GIT repository. If a package name is provided any new or modified files will be added to the package. You can find more information on this process on the Salesforce page.

  • Use plus icon button to utilize sample cron expressions, clear the contents of the Cron Expression input before using a sample expression. Multiple cron expressions can be provided and must be separated by semicolon.
  • Click the Save button to save the changes.

Multiple Cron Expressions can be specified using semicolon as a delimeter. For example, 

0 0 11 ? * *;0 0 12 ? * *

is equivalent to

0 0 11-12 ? * *

A new Admin Screen was added to test expressions in the Administration Menu on the Admin Operations Screen.

For details on Cron Expression Syntax see http://www.quartz-scheduler.org/documentation/quartz-2.2.2/tutorials/crontrigger.html#crontrigger-tutorial

Populate Metadata Trigger

Use this trigger type to automatically generate Salesforce metadata to be used in Salesforce operations. Schedule for this trigger is set using a cron expression, which will allow for populate to occur on specific interval or time of day. Select the Salesforce Account Code & enter values for cron expression. For example, if you are using the Populate Trigger to automatically populate new and modified files from Salesforce you can use this trigger to automatically update the package.xml metadata that is used in this process. This metadata is cached and can be used with the Populate trigger or the Salesforce project screen.

  • Use plus icon button to utilize sample cron expressions, clear the contents of the Cron Expression input before using a sample expression. Multiple cron expressions can be provided and must be separated by semicolon.
  • Click the Save button to save the changes.

Multiple Cron Expressions can be specified using semicolon as a delimeter. For example, 

0 0 11 ? * *;0 0 12 ? * *

is equivalent to

0 0 11-12 ? * *

A new Admin Screen was added to test expressions in the Administration Menu on the Admin Operations Screen.

For details on Cron Expression Syntax see http://www.quartz-scheduler.org/documentation/quartz-2.2.2/tutorials/crontrigger.html#crontrigger-tutorial

Webhook Trigger

Use this trigger type to initiate a build upon receiving a webhook. When a webhook is received and a function script uses buildProject or buildPackage methods, it will first verify a webhook trigger exists for the desired stream and build environment on the project before initiating the build.

  • Check the Webhooks Enabled checkbox next to the Create dropdown. This will automatically create a webhook trigger for every active stream on the project. They can be deleted as needed.
  • If webhooks are enabled, newly created streams on the project will automatically get webhook triggers.
  • Select the Build Environment, Stream & enter values for project build workflow inputs (if any).
  • Click the Save button to save the changes.