A groovy script can be used in custom gates and steps, as well as for many configuration values on specific steps or gates. Additionally, a gate or step can be skipped by providing a Precondition groovy script. This page includes some sample scripts for these scenarios. See Pipeline Groovy Variables and Methods for a full listing of the accessible variables and methods in these groovy scripts.
Custom Gates and Steps
Override Deploy Instance on All Projects with Plugin Suffix in Name
...
Code Block |
---|
language | groovy |
---|
theme | RDark |
---|
title | Override deploy instance on all projects with Plugin suffix in name |
---|
|
snapshotProjects=stgexec.getSnapshotProjects();
for(snapshotProject in snapshotProjects)
{
if(snapshotProject.getProjectName().endsWith("Plugin"))
{
stgexecinfo.setInstanceOverride(snapshotProject.getProjectId(), "WEBLOGIC")
}
} |
Custom Steps
Override Deploy Instance Based on Project Type
...
Code Block |
---|
|
def projects = stgexec.getSnapshotProjects();
for (def project in projects)
{
if (project.getProjectType() != null)
{
if ('EBS'.equals(project.getProjectType()))
{
stgexecinfo.setInstanceOverride(project.getProjectId(), project.getPackageName(), 'EBS');
}
}
} |
Validate Snapshot Contents
A pipeline can prevent deployments of any unexpected projects in the snapshot with a script similar to the following. This would best be implemented as a custom gate in the first stage of the pipeline.
Code Block |
---|
|
expectedProjects = "HRWLSConfigurations,HRMDSObjects,HRSOAService,HRJavaApp,ValidatePaymentSB".split(",");
for (p in stgexec.getSnapshotProjects())
{
if (!expectedProjects.contains(p.getProjectName()))
{
return "FAILED";
}
}
return "SUCCESSFUL"; |
Precondition Scripts
Execute Step Only for Specific Object Type
This could be used to conditionally call a Restart OACore or Generate Jar utility workflow only if OAF_JAVA files are deployed.
Code Block |
---|
|
def deployedTypes = stgexec.getProjectWorkflowOutputValues("DeployedTypes");
for (String listItem : deployedTypes)
{
if (listItem.contains('OAF_JAVA'))
{
return true;
}
}
return false; |
Execute Gate only if Snapshot Projects contain a specific Project Group
This is useful when you could want technology/team specific approvals which would only make sense to do when that particular Project Group/Technology is included in the snapshot.
Code Block |
---|
|
def projectGroup = "Oracle Integrations"
return stgexec.getSnapshotProjects().findIndexOf {
projectGroup in it.getProjectGroupNames()
} != -1 |