Custom Step

The Custom step executes provided Groovy script to determine status of step. This can be very useful to integrate additional tools in pipeline. You can write code to invoke external systems.

Pipeline will execute RUNNING step at regular interval, and step will be considered complete only when it returns SUCCESSFUL or FAILED.

Field

Description

Step Name

The name of the step.

Description

An optional description for the step.

Groovy Script

Groovy script to provide implementation of Step. Return SUCCESSFUL, RUNNING or FAILED to indicate status of Step. This can be used to provide customized implementation in pipeline to interface with external system or do any other programmatic checks.  If no status is returned SUCCESSFUL is implied by default.

The script has access to variables and methods listed in Pipeline Groovy Variables and Methods.

Precondition

An optional Groovy script which determines whether the gate or step is applicable during execution. The script has access to variables and methods listed in Pipeline Groovy Variables and Methods. You can find these variables methods using Variable Lookup help.

The script must return true if the gate is applicable, or false otherwise.  If no script is provided, the default is to return true (applicable).

ContinueIf checked, any failure will be ignored, and the pipeline execution will continue.
Notify Pipeline RolesSelects one or more roles from the pipeline definition to notify in case of error.  Default role members are defined on the pipeline, and optional overridden for each release.

Script Variables

Groovy script can be written for many configuration values on specific step or gate. Additionally, gate or step can be skipped by providing Precondition groovy script as well. All such groovy script has access to various variables and methods listed below on this page.

FlexDeploy allows for finding such variables and methods using Variable Lookup help. Prior versions allowed such help with use of  drop-down next to script input.


Variable

Description

ReleaseName

Name of the release provided when created
SnapshotIdInternal id value of Snapshot.
SnapshotNameName of the snapshot (auto generated by date and time when created)
SnapshotDuplicateFilesFlagTrue if there are duplicate files in the snapshot
SnapshotDescriptionDescription of the snapshot
StageExecutionId

ID of the execution

PipelineDefinitionIdPipeline Id.
PipelineNamePipeline name.
stgexec

Allows access to execution details for Gate, Step, Deploy or Utility workflows.

This variable was previously called FD_Release, which will continue to work but is deprecated now.

stgexecinfo

Allows access to details entered by user on Stage Execution Info.

It will not show any default values or FlexFields or WorkFlowInputs that are not set in the Stage Execution Info popup (The Paper Clip on the release dashboard screen)

topologyAllows access to properties within Topology Integration Accounts such as Source Control, Change Management, Cloud, or other tools. 
releaseReturns Release object with methods - getReleaseName(), getReleaseDefinitionId(), getDescription(). These are details of the Release.
snapshotReturns Snapshot object with methods - getSnapshotId(), getReleaseDefinitionId(), getSnapshotName(), getDescription(), getDuplicateFilesFlag(), getCreatedBy(). These are details of the Snapshot being executed. getCreatedBy was added as part of 5.4.0.1.
<Release Property Code>All release properties are exposed as variables.
<Snapshot Variable Code>All release snapshot variables are exposed as variables.

Methods for stgexec variable.

Method

Description

stgexec.getEnvironmentCode()

returns environment code

e.g. "DEV"

stgexec.getReleaseName()

returns the name of the release

e.g "December Release"

stgexec.getSnapshotName()

returns the name of the snapshot

e.g. 12-04-2019 16:21:18

stgexec.getProjectStageExecution(projectId, packageName)returns ProjectStageExecution object for given a project id and package name. Both project id and package name must match.
stgexec.getProjectStageExecution(projectName, packageName)returns ProjectStageExecution object for given a project name and package name. Both project name and package name must match.
stgexec.getSnapshotProjects()

returns list of ReleaseProjectVersion objects in the snapshot.

stgexec.getSnapshotProjectsAsString()returns all projects in snapshot concatenated in the format "ProjectName,PartialProjectName (PackageName),..."
stgexec.getSnapshotDeployedProjects()

returns list of ReleaseProjectVersion objects in the snapshot which were deployed successfully.

stgexec.getSnapshotDeployedProjectsAsString()returns all successfully deployed projects concatenated in the format "ProjectName,PartialProjectName (PackageName),..."
stgexec.getSnapshotFailedProjects()

returns list of ReleaseProjectVersion objects in the snapshot which failed to deploy.

stgexec.getSnapshotFailedProjectsAsString()returns all failed projects concatenated in the format "ProjectName,PartialProjectName (PackageName),..."
stgexec.getSnapshotSkippedProjects()

returns list of ReleaseProjectVersion objects in the snapshot which were skipped.

stgexec.getSnapshotSkippedProjectsAsString()

returns all skipped projects concatenated in the format "ProjectName,PartialProjectName (PackageName),..."

stgexec.getSnapshotNotAttemptedProjects()

returns list of ReleaseProjectVersion objects in the snapshot which were not attempted.

stgexec.getSnapshotNotAttemptedProjectsAsString()returns all not attempted projects concatenated in the format "ProjectName,PartialProjectName (PackageName),..."
stgexec.isAnyDeployFailed()returns true if any projects failed to deploy or submit.
stgexec.isAnyDeployFailed(groupName)

returns true if any projects in a specific group of projects failed to deploy or submit.

returns false if the group doesn't exist or if the group doesn't have any failed project deployments.

stgexec.isAnyDeployOrUtilityFailed()returns true if any deploy or utility workflows failed.
stgexec.isAnyDeployOrUtilityFailed(groupName)

returns true if any deploy or utility workflows in a specific group failed.

returns false if the group doesn't exist or if the group doesn't have any failed projects.

stgexec.isAnyUtilityFailed()returns true if any utility workflows failed.
stgexec.isAnyUtilityFailed(groupName)

returns true if any utility workflows in a specific group failed.

returns false if the group doesn't exist or if the group doesn't have any failed utility projects.

stgexec.isProjectDeployed(projectId)returns true only if project was deployed successfully. If partial deployment project, then if any package failed, this will return false, but if some packages were skipped and some deployed successfully this will still return true.
stgexec.isProjectDeployed(projectId, packageName)returns true if a project is deployed, given the project id and package name. If package name is not supplied, this will behave same as stgexec.isProjectDeployed(projectId) method.
stgexec.isProjectDeployed(projectName)returns true only if project was deployed successfully. If partial deployment project, then if any package failed, this will return false, but if some packages were skipped and some deployed successfully this will still return true.
stgexec.isProjectDeployed(projectName, packageName)

returns true if a project is deployed, given the project name and package name. If package name is not supplied, this will behave same as stgexec.isProjectDeployed(projectName) method.

stgexec.isProjectFailed(projectId)returns true if a project failed to deploy or submit. if skipped or not attempted, this will return false. If partial deployment project, then if any package failed, this will return true.
stgexec.isProjectFailed(projectId, packageName)

returns true if a project failed to deploy, given the project id and package name. If package name is not supplied, this will behave same as stgexec.isProjectFailed(projectId).

stgexec.isProjectFailed(projectName)returns true if a project failed to deploy or submit. if skipped or not attempted, this will return false. If partial deployment project, then if any package failed, this will return true.
stgexec.isProjectFailed(projectName, packageName)returns true if a project failed to deploy, given the project name and package name. If package name is not supplied, this will behave same as stgexec.isProjectFailed(projectName).
stgexec.isProjectSkipped(projectId)returns true if project is skipped. If partial deployment project, then if any package is skipped, this method will return true.
stgexec.isProjectSkipped(projectId, packageName)

returns true if a project is skipped, given the project id and package name. If package name is not supplied then this method will behave same as stgexec.isProjectSkipped(projectId).

stgexec.isProjectSkipped(projectName)returns true if project is skipped. If partial deployment project, then if any package is skipped, this method will return true.
stgexec.isProjectSkipped(projectName, packageName)

returns true if a project is skipped, given the project name and package name. If package name is not supplied then this method will behave same as stgexec.isProjectSkipped(projectName).

stgexec.isProjectNotAttempted(projectId)returns true if project was not attempted. If partial deployment project, then if any package is not attempted, this method will return true.
stgexec.isProjectNotAttempted(projectId, packageName)

returns true if a project was not attempted, given the project id and package name. If package name is not supplied then this method will behave same as stgexec.isProjectNotAttempted(projectId).

stgexec.isProjectNotAttempted(projectName)returns true if project was not attempted. If partial deployment project, then if any package is not attempted, this method will return true.
stgexec.isProjectNotAttempted(projectName, packageName)returns true if a project was not attempted, given the project name and package name. If package name is not supplied then this method will behave same as stgexec.isProjectNotAttempted(projectName).
stgexec.getGateStatus(gateName)

returns gate status String, "SUCCESSFUL", "RUNNING", "FAILED" or null if the gate name doesn't match or doesn't yet have a status.

note that Skipped steps that were FAILED will still return FAILED.

If an invalid gate name is given or the gate hasn't run yet, the status will be null.

isGateSuccessful(gateName)returns true if gate status is SUCCESSFUL.
isGateFailed(gateName)returns true if gate status is FAILED.
isGateSkipped(gateName)returns true if gate status is PRECOND_SKIPPED.
isAnyGateFailed()returns true if any gate failed.
isAnyGateSkipped()returns true if any gate was skipped.
stgexec.getStepStatus(stepName)

returns step status String, "SUCCESSFUL", "RUNNING", "FAILED" or null if the gate name doesn't match or doesn't yet have a status.

If an invalid step name is given or the step hasn't run yet, the status will be null.

isStepSuccessful(stepName)returns true if step status is SUCCESSFUL.
isStepFailed(stepName)returns true if step status is FAILED.
isStepSkipped(stepName)returns true if step status is PRECOND_SKIPPED.
isAnyStepFailed()returns true if any step failed.
isAnyStepSkipped()return true if any step was skipped.
stgexec.getProjectWorkflowOutputValues(outputName)

returns an array of output values with the given output name irrespective of project.

e.g. [1234123]

Note that any encrypted workflow outputs will return as "******"

stgexec.getProjectWorkflowOutputValues(projectName, outputName)

returns an array of output values with the given output name for the given project name.

e.g. [1234123]

Note that any encrypted workflow outputs will return as "******"

stgexec.getProjectWorkflowOutputMap(projectId)

returns a map of output values for the given project id. Key of map is output name and value is list of output values.

e.g. [OP1:[1,3], ENCOP2:[******, ******], BOP3:[false], DBOP4:[123.456], INOP5:[1234,123]]

Note that any encrypted workflow outputs will return as "******"

stgexec.getProjectWorkflowOutputMap(projectName)

returns a map of output values for the given project name. Key of map is output name and value is list of output values.

e.g. [OP1:[1,3], ENCOP2:[******, ******], BOP3:[false], DBOP4:[123.456], INOP5:[1234,123]]

Note that any encrypted workflow outputs will return as "******"

stgexec.getGateTaskUserInfo(gateName)Returns TaskUserInfo object for a given Manual or Externa gate  name.
stgexec.getStepTaskUserInfo(stepName)Returns TaskUserInfo object for a given Manual task step name.
stgexec.getExecutedApprovalGateNames()Returns List of String objects. Names of executed approval gates. @since 5.4.0.3
stgexec.getExecutedGateNames(gateType)Returns list of String objects. Names of executed gates of specific type. @since 5.4.0.3
stgexec.getExecutedStepNames(stepType)Returns list of String objects. Names of executed steps of specific type. @since 5.4.0.3

Methods for stgexecinfo variable.

Method

Description

getRelatedTicket()returns related ticket associated to the stage.
getRelatedTicket(projectId)returns related ticket associated to snapshot project or the stage.  If not found, related ticket is returned from the stage.
getRelatedTicket(projectId, packageName)returns related ticket associated to the snapshot project and package.  If not found, related ticket is returned from the stage.
setRelatedTicket(ticketNumber)sets the related ticket field on stage.
setRelatedTicket(projectId, ticketNumber)sets the related ticket field for the snapshot project on the stage.
setRelatedTicket(projectId, packageName)sets the related ticket field for the snapshot project and package on the stage.
getWorkflowInputs(inputName)returns list of workflow inputs for input name irrespective of project.
getWorkflowInputMap(projectName)

returns a map of workflow input values for the given project name. Key of map is input name and value is list of input values.

getWorkflowInputMap(projectId)returns a map of workflow input values for the given project id. Key of map is input name and value is list of input values.
getWorkflowInputMap(projectId, packageName)returns a map of workflow input values for the given project id and package name. Key of map is input name and value is list of input values.
getWorkflowInputMap(projectName, packageName)returns a map of workflow input values for the given project name and package name. Key of map is input name and value is list of input values.
getFlexFields(flexfieldCode)returns list of flex field values for code irrespective of project.
getFlexFieldMap(projectId)returns a map of flex field values for the given project id. Key of map is flex field code and value is list of flex field values.
getFlexFieldMap(projectName)returns a map of flex field values for the given project name. Key of map is flex field code and value is list of flex field values.
getFlexFieldMap(projectId, packageName)returns a map of flex field values for the given project id and package name. Key of map is flex field code and value is list of flex field values.
getFlexFieldMap(projectName, packageName)

returns a map of flex field values for the given project name and package name. Key of map is flex field code and value is list of flex field values.

isUserNoOverride(projectId)returns true if the deploy override option is No Override for the snapshot project on the stage. @Since 5.4.0.1
isUserNoOverride(projectId, packageName)returns true if the deploy override option is No Override for the snapshot project and package on the stage. @Since 5.4.0.1
isUserForceDeploy(projectI)returns true if the deploy override option is Force for the snapshot project on the stage. @Since 5.4.0.1
isUserForceDeploy(projectId, packageName)returns true if the deploy override option is Force for the snapshot project and package on the stage. @Since 5.4.0.1
isUserSkipDeploy(projectId)returns true if the deploy override option is Skip for the snapshot project on the stage. @Since 5.4.0.1
isUserSkipDeploy(projectId, packageName)returns true if the deploy override option is Skip for the snapshot project and package on the stage. @Since 5.4.0.1
setUserNoOverride(projectId)removes any previously set deploy option override for the snapshot project on the stage. @Since 5.4.0.1
setUserNoOverride(projectId, packageName)removes any previously set deploy option override for the snapshot project and package on the stage. @Since 5.4.0.1
setUserForceDeploy(projectId)force deploy the snapshot project on the stage. @Since 5.4.0.1
setUserForceDeploy(projectId, packageName)force deploy the snapshot project and package on the stage. @Since 5.4.0.1
setUserSkipDeploy(projectId)skip the deployment for the snapshot project on the stage. @Since 5.4.0.1
setUserSkipDeploy(projectId, packageName)skip the deployment for the snapshot project and package on the stage. @Since 5.4.0.1
setFlexField(projectId, code, value)Set the value of the flex field for the snapshot project on the stage. @Since 5.4.0.2
setFlexField(projectId, packageName, code, value)Set the value of the flex field for the snapshot project and package on the stage. If package name is null, all the release projects with the matching projectid will be updated with the same value. @Since 5.4.0.2
setWorkflowInput(projectId, code, value)Set the value of the workflow inputs for the snapshot project on the stage. @Since 5.4.0.2
setWorkflowInput(projectId, packageName, code, value)Set the value of the workflow inputs for the snapshot project and package on the stage. If package name is null, all the release projects with the matching projectid will be updated with the same value. @Since 5.4.0.2

Methods for ProjectStageExecution object.

Method

Description

getProjectName()returns the String project name for the current project.
getDeployPriority()returns the Integer deploy priority for the current release project.
isPartialDeploy()returns the boolean isPartialDeploy flag if the isPartialDeploy instance variable is not null.
getIsPartialDeploy()returns the boolean isPartialDeploy flag for the current release project.
getPackageName()returns the String package name for the current release project.
getProjectGroupNames()returns a list of project group names for the current release project.
getProjectId()returns the Long project Id for the current release project.
getProjectStreamId()returns the Long project stream Id for the current release project.
getProjectStreamName()returns the String project stream name for the current release project.
getProjectTypeEnum()

returns a ProjectTypeEnum object for the current project.

Possible Values:  GENERAL, EBS, PARTIAL_FILE, PARTIAL_JDBC, OracleForms, ORACLE_DB, ORACLE_BI, ORACLE_APEX, MFT, SALESFORCE, UTILITY, MDS, SAP, and GENERIC

getProjectType()

returns a ProjectType as String for the current release project.

Possible Values: GENERAL, EBS, PARTIAL_FILE, PARTIAL_JDBC, OracleForms, ORACLE_DB, ORACLE_BI, ORACLE_APEX, MFT, SALESFORCE, UTILITY, MDS, SAP, and GENERIC

getProjectVersionId()returns the Long project version id for the current release project.
getProjectVersionName()returns the String project version name for the current release project.
getRequestAllFiles()returns the String request all files for the current release project.
getWorkflowId()Returns deploy or utility workflow id configured on project.
getWorkflowName()Returns deploy or utility workflow name configured on project.
getInstances()Returns deploy or utility instances configured on project. This returns Instance object with methods like getInstanceID(), getCode(), getName() for topology instance.
getFolderPath()Returns folder path where project is configured on project explorer.
findProjectWorkflowExecutionData(workflowExecutionId)returns a ProjectWorkflowExecutionData object for the given workflowExecutionId.
getRequestStatus()returns the String request status for the current project.
getRequestStatusEnum()

returns a RequestStatusEnum object for the current project.

Possible Values:  INITIATED("Initiated"), PENDING_APPROVAL("Pending Approval"), SCHEDULED("Scheduled"), REJECTED("Rejected"), READY("Ready"), SUBMITTED("Submitted"), COMPLETED("Completed"), ABORTED("Aborted"), and FAILED("Failed");

getSubmitStatus()

returns a WorkflowRequestSubmitStatus object for the current project.

Possible Values: SUBMITFAILED, SUBMITTED, SKIPPED, PENDING

getWasForced()returns the boolean wasForced flag for the current project.
getWorkflowExecutionData()

returns a map of output values for the given workflow execution name. Key of map is instance code and value is a ProjectWorkflowExecutionData object.

getWorkflowType()returns the String workflow type for the current project.
isDeployed()returns the boolean isDeployed flag for the current project.
isDeployWorkflow()returns the boolean isDeployWorkflow flag depending on if the workflow type is a deploy workflow for the current project.
isFailed()returns the boolean isFailed flag depending on if the workflow is a deploy workflow and the submission or request to deploy has failed or not.
isNotAttempted()returns the boolean isNotAttempted flag depending on if the request status and submission status is null.
IsPartialDeploy()returns the boolean isPartialDeploy flag for the current project.
isRequestAborted()returns the boolean isRequestAborted flag depending on if the requestStatus is equal to RequestStatusEnum.ABORTED.
isRequestFailed()returns the boolean isRequestFailed flag depending on if the requestStatus is equal to RequestStatusEnum.ABORTED or RequestStatusEnum.FAILED.
isRequestOrSubmitFailed()returns the boolean isRequestOrSubmitFailed flag depending on the result of isSubmitFailed() OR isRequestFailed().
isRequestSuccess()returns the boolean isRequestAborted flag depending on if the requestStatus is equal to RequestStatusEnum.COMPLETED
isSkipped()returns the boolean isSkipped flag depending on the result of isDeployWorkflow() AND isSubmitSkipped().
isSubmitFailed()returns the boolean isSubmitFailed flag depending on if the submitStatus is equal to WorkflowRequestSubmitStatus.SUBMITFAILED
isSubmitSkipped()returns the boolean isSubmitSkipped flag depending on if the submitStatus is equal to WorkflowRequestSubmitStatus.SKIPPED
isTestWorkflow()returns the boolean isTestWorkflow flag depending on if the project workflow type is "TEST".
isUtilityWorkflow()returns the boolean isUtilityWorkflow flag depending on if the project workflow type is "UTILITY".

Methods for ProjectWorkflowExecutionData object. This has details of execution, so it would not be available till deploy execution is completed.

Method

Description

getInstanceCode()returns the String instance code for the current project stage execution.
getInstanceid()returns the Long instance id for the current project stage execution.
getOutputValues()

returns a map of output values. Key of map is output name and value is the description. 

getWorkflowExecutionId()returns the Long workflow execution id for the current project stage execution..

Methods for ReleaseProjectVersion object.

Method

Description

getProjectName()returns the String project name for the current project.
getDeployPriority()returns the Integer deploy priority for the current release project.
getIsPartialDeploy()returns the Boolean isPartialDeploy flag for the current release project.
getPackageName()returns the String package name for the current release project.
getProjectGroupNames()returns a list of project group names for the current release project.
getProjectId()returns the Long project Id for the current release project.
getProjectStreamId()returns the Long project stream Id for the current release project.
getProjectStreamName()returns the String project stream name for the current release project.
getProjectType()

returns a ProjectTypeEnum object for the current release project.

Possible Values: GENERAL, EBS, PARTIAL_FILE, PARTIAL_JDBC, OracleForms, ORACLE_DB, ORACLE_BI, ORACLE_APEX, MFT, SALESFORCE, UTILITY, MDS, SAP, and GENERIC

getProjectVersionId()returns the Long project version id for the current release project.
getProjectVersionName()returns the String project version name for the current release project.
getRequestAllFiles()returns the String request all files for the current release project.
isMatch(projectId, packageName)returns the boolean isMatch flag depending on if the passed projectId and packageName match this release project's projectId and packageName. 
isMatch(projectName, packageName)returns the boolean isMatch flag depending on if the passed projectName and packageName match this release project's projectName and packageName. 
isPartialDeploy()returns the boolean isPartialDeploy flag if the isPartialDeploy instance variable is not null.
getWorkflowId()Returns deploy or utility workflow id configured on project.
getWorkflowName()Returns deploy or utility workflow name configured on project.
getInstances()Returns deploy or utility instances configured on project. This returns Instance object with methods like getInstanceID(), getCode(), getName() for topology instance.
getFolderPath()Returns folder path where project is configured on project explorer.

Methods for TaskUserInfo object.

Method

Description

getActionByUserName()returns the user name of the person approved the gate/step.
getActionByFirstName()returns the first name of the the person approved the gate/step.
getActionByLastName()returns the last name of the person approved the gate/step.
getActionByEmailAddress()returns the email address of the person approved the gate/step.

Methods for topology object.

Method

Description

topology.getInstanceProperties(instanceCode)

returns a Map<String, Object> containing all the properties for the integration account matching the passed instance code. Key of map is a property code and value is the primitive value for that property.

e.g. Git SCM Account [FDGIT_URL: https://github.com/flexagon9/flextest.git, FDGIT_USER: flexagon9, FDGIT_PASSWORD: password123, FDGIT_TIMEOUT: null]

topology.getMappedInstances()returns list of instance codes that are mapped to current stage(environment)
topology.isMappedToCurrentEnvironment(instanceCode)returns true or false to indicate whether provided instanceCode is mapped to current stage(environment)

Methods for release object

MethodDescription
release.getReleaseName()returns the name of the release
release.getReleaseDefinitionId()returns the internal id of the release
release.getDescription()returns the description for the release

Methods for snapshot object

MethodDescription
snapshot.getSnapshotId()returns the internal id of the snapshot
snapshot.getReleaseDeinitionId()returns the internal id of the snapshot's release
snapshot.getSnapshotName()returns the snapshot name
snapshot.getDescription()returns the snapshot description
snapshot.getDuplicateFilesFlag()returns whether the snapshot packages have duplicate files which may have conflicting revisions

The following macros are not currently supported in the footer:
  • style