128 lines
7.2 KiB
Java
128 lines
7.2 KiB
Java
package buildjob;
|
|
|
|
import static com.atlassian.bamboo.specs.builders.task.TestParserTask.createJUnitParserTask;
|
|
|
|
import com.atlassian.bamboo.specs.api.BambooSpec;
|
|
import com.atlassian.bamboo.specs.api.builders.BambooKey;
|
|
import com.atlassian.bamboo.specs.api.builders.docker.DockerConfiguration;
|
|
import com.atlassian.bamboo.specs.api.builders.permission.PermissionType;
|
|
import com.atlassian.bamboo.specs.api.builders.permission.Permissions;
|
|
import com.atlassian.bamboo.specs.api.builders.permission.PlanPermissions;
|
|
import com.atlassian.bamboo.specs.api.builders.plan.Job;
|
|
import com.atlassian.bamboo.specs.api.builders.plan.Plan;
|
|
import com.atlassian.bamboo.specs.api.builders.plan.PlanIdentifier;
|
|
import com.atlassian.bamboo.specs.api.builders.plan.Stage;
|
|
import com.atlassian.bamboo.specs.api.builders.plan.branches.BranchCleanup;
|
|
import com.atlassian.bamboo.specs.api.builders.plan.branches.PlanBranchManagement;
|
|
import com.atlassian.bamboo.specs.api.builders.project.Project;
|
|
import com.atlassian.bamboo.specs.api.builders.Variable;
|
|
import com.atlassian.bamboo.specs.builders.task.CheckoutItem;
|
|
import com.atlassian.bamboo.specs.builders.task.InjectVariablesTask;
|
|
import com.atlassian.bamboo.specs.builders.task.ScriptTask;
|
|
import com.atlassian.bamboo.specs.builders.task.VcsCheckoutTask;
|
|
import com.atlassian.bamboo.specs.builders.task.VcsTagTask;
|
|
import com.atlassian.bamboo.specs.builders.trigger.BitbucketServerTrigger;
|
|
import com.atlassian.bamboo.specs.model.task.InjectVariablesScope;
|
|
import com.atlassian.bamboo.specs.util.BambooServer;
|
|
import com.atlassian.bamboo.specs.model.task.ScriptTaskProperties.Location;
|
|
|
|
/**
|
|
* Plan configuration for Bamboo.
|
|
* Learn more on: <a href="https://confluence.atlassian.com/display/BAMBOO/Bamboo+Specs">https://confluence.atlassian.com/display/BAMBOO/Bamboo+Specs</a>
|
|
*/
|
|
@BambooSpec
|
|
public class PlanSpec {
|
|
|
|
private static final String SERVICE_NAME = "pdftron-logic-commons";
|
|
|
|
private static final String SERVICE_KEY = SERVICE_NAME.toUpperCase().replaceAll("-", "");
|
|
|
|
/**
|
|
* Run main to publish plan on Bamboo
|
|
*/
|
|
public static void main(final String[] args) throws Exception {
|
|
//By default credentials are read from the '.credentials' file.
|
|
BambooServer bambooServer = new BambooServer("http://localhost:8085");
|
|
|
|
Plan plan = new PlanSpec().createPlan();
|
|
bambooServer.publish(plan);
|
|
PlanPermissions planPermission = new PlanSpec().createPlanPermission(plan.getIdentifier());
|
|
bambooServer.publish(planPermission);
|
|
}
|
|
|
|
private PlanPermissions createPlanPermission(PlanIdentifier planIdentifier) {
|
|
Permissions permission = new Permissions()
|
|
.userPermissions("atlbamboo", PermissionType.EDIT, PermissionType.VIEW, PermissionType.ADMIN, PermissionType.CLONE, PermissionType.BUILD)
|
|
.groupPermissions("development", PermissionType.EDIT, PermissionType.VIEW, PermissionType.CLONE, PermissionType.BUILD)
|
|
.groupPermissions("devplant", PermissionType.EDIT, PermissionType.VIEW, PermissionType.CLONE, PermissionType.BUILD)
|
|
.loggedInUserPermissions(PermissionType.VIEW)
|
|
.anonymousUserPermissionView();
|
|
return new PlanPermissions(planIdentifier.getProjectKey(), planIdentifier.getPlanKey()).permissions(permission);
|
|
}
|
|
|
|
private Project project() {
|
|
return new Project()
|
|
.name("RED")
|
|
.key(new BambooKey("RED"));
|
|
}
|
|
|
|
public Plan createPlan() {
|
|
return new Plan(
|
|
project(),
|
|
SERVICE_NAME, new BambooKey(SERVICE_KEY))
|
|
.description("Plan created from (enter repository url of your plan)")
|
|
.variables(new Variable("maven_add_param", ""))
|
|
.stages(new Stage("Default Stage")
|
|
.jobs(new Job("Default Job",
|
|
new BambooKey("JOB1"))
|
|
.tasks(
|
|
new ScriptTask()
|
|
.description("Clean")
|
|
.inlineBody("#!/bin/bash\n" +
|
|
"set -e\n" +
|
|
"rm -rf ./*"),
|
|
new VcsCheckoutTask()
|
|
.description("Checkout Default Repository")
|
|
.checkoutItems(new CheckoutItem().defaultRepository()),
|
|
new ScriptTask()
|
|
.description("Build")
|
|
.location(Location.FILE)
|
|
.fileFromPath("bamboo-specs/src/main/resources/scripts/build-java.sh")
|
|
.argument(SERVICE_NAME),
|
|
createJUnitParserTask()
|
|
.description("Resultparser")
|
|
.resultDirectories("**/test-reports/*.xml, **/target/surefire-reports/*.xml, **/target/failsafe-reports/*.xml")
|
|
.enabled(true),
|
|
new ScriptTask()
|
|
.description("Sonar")
|
|
.location(Location.FILE)
|
|
.fileFromPath("bamboo-specs/src/main/resources/scripts/sonar-java.sh")
|
|
.argument(SERVICE_NAME),
|
|
new InjectVariablesTask()
|
|
.description("Inject git Tag")
|
|
.path("git.tag")
|
|
.namespace("g")
|
|
.scope(InjectVariablesScope.LOCAL),
|
|
new VcsTagTask()
|
|
.description("${bamboo.g.gitTag}")
|
|
.tagName("${bamboo.g.gitTag}")
|
|
.defaultRepository())
|
|
.dockerConfiguration(
|
|
new DockerConfiguration()
|
|
.image("nexus.iqser.com:5001/infra/maven:3.8.4-openjdk-17-slim")
|
|
.volume("/etc/maven/settings.xml", "/usr/share/maven/conf/settings.xml")
|
|
.dockerRunArguments("--net=host")
|
|
.volume("/var/run/docker.sock", "/var/run/docker.sock")
|
|
)
|
|
)
|
|
)
|
|
.linkedRepositories("RED / " + SERVICE_NAME)
|
|
.triggers(new BitbucketServerTrigger())
|
|
.planBranchManagement(new PlanBranchManagement()
|
|
.createForVcsBranch()
|
|
.delete(new BranchCleanup()
|
|
.whenInactiveInRepositoryAfterDays(14))
|
|
.notificationForCommitters());
|
|
}
|
|
}
|