diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..d292cb6 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,4 @@ +include: + - project: 'gitlab/gitlab' + ref: 'main' + file: 'ci-templates/maven_java.yml' diff --git a/bamboo-specs/pom.xml b/bamboo-specs/pom.xml deleted file mode 100644 index d35f676..0000000 --- a/bamboo-specs/pom.xml +++ /dev/null @@ -1,37 +0,0 @@ - - 4.0.0 - - - com.atlassian.bamboo - bamboo-specs-parent - 8.1.3 - - - - bamboo-specs - 1.0.0-SNAPSHOT - jar - - - - com.atlassian.bamboo - bamboo-specs-api - - - com.atlassian.bamboo - bamboo-specs - - - - - junit - junit - test - - - - - - - diff --git a/bamboo-specs/src/main/java/buildjob/PlanSpec.java b/bamboo-specs/src/main/java/buildjob/PlanSpec.java deleted file mode 100644 index b401360..0000000 --- a/bamboo-specs/src/main/java/buildjob/PlanSpec.java +++ /dev/null @@ -1,125 +0,0 @@ -package buildjob; - -import static com.atlassian.bamboo.specs.builders.task.TestParserTask.createJUnitParserTask; - -import java.time.LocalTime; - -import com.atlassian.bamboo.specs.api.BambooSpec; -import com.atlassian.bamboo.specs.api.builders.BambooKey; -import com.atlassian.bamboo.specs.api.builders.Variable; -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.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.builders.trigger.ScheduledTrigger; -import com.atlassian.bamboo.specs.model.task.InjectVariablesScope; -import com.atlassian.bamboo.specs.model.task.ScriptTaskProperties.Location; -import com.atlassian.bamboo.specs.util.BambooServer; - -/** - * Plan configuration for Bamboo. - * Learn more on: https://confluence.atlassian.com/display/BAMBOO/Bamboo+Specs - */ -@BambooSpec -public class PlanSpec { - - private static final String SERVICE_NAME = "ocr-service"; - - 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); - - Plan secPlan = new PlanSpec().createSecBuild(); - bambooServer.publish(secPlan); - PlanPermissions secPlanPermission = new PlanSpec().createPlanPermission(secPlan.getIdentifier()); - bambooServer.publish(secPlanPermission); - } - - - 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").cleanCheckout(true).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 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.knecon.com:5001/infra/maven:3.8.4-openjdk-17-slim") - .volume("/etc/maven/settings.xml", "/usr/share/maven/conf/settings.xml") - .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()); - } - - - public Plan createSecBuild() { - - return new Plan(project(), SERVICE_NAME + "-Sec", new BambooKey(SERVICE_KEY + "SEC")).description("Security Analysis Plan") - .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("Sonar").location(Location.FILE).fileFromPath("bamboo-specs/src/main/resources/scripts/sonar-java.sh").argument(SERVICE_NAME)) - .dockerConfiguration(new DockerConfiguration().image("nexus.knecon.com:5001/infra/maven:3.6.2-jdk-13-3.0.0") - .dockerRunArguments("--net=host") - .volume("/etc/maven/settings.xml", "/usr/share/maven/ref/settings.xml") - .volume("/var/run/docker.sock", "/var/run/docker.sock")))) - .linkedRepositories("RED / " + SERVICE_NAME) - .triggers(new ScheduledTrigger().scheduleOnceDaily(LocalTime.of(23, 00))) - .planBranchManagement(new PlanBranchManagement().createForVcsBranchMatching("release.*").notificationForCommitters()); - } - -} diff --git a/bamboo-specs/src/main/resources/scripts/build-java.sh b/bamboo-specs/src/main/resources/scripts/build-java.sh deleted file mode 100755 index 29f86b1..0000000 --- a/bamboo-specs/src/main/resources/scripts/build-java.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/bash -set -e - -SERVICE_NAME=$1 - -if [[ "$bamboo_planRepository_branchName" == "master" ]] -then - branchVersion=$(cat pom.xml | grep -Eo " .*-SNAPSHOT" | sed -s 's|\(.*\)\..*\(-*.*\)|\1|' | tr -d ' ') - latestVersion=$( semver $(git tag -l "${branchVersion}.*" ) | tail -n1 ) - newVersion="$(semver $latestVersion -p -i minor)" - echo "new release on master with version $newVersion" -elif [[ "$bamboo_planRepository_branchName" == release* ]] -then - branchVersion=$(echo $bamboo_planRepository_branchName | sed -s 's|release\/\([0-9]\+\.[0-9]\+\)\.x|\1|') - latestVersion=$( semver $(git tag -l "${branchVersion}.*" ) | tail -n1 ) - newVersion="$(semver $latestVersion -p -i patch)" - echo "new release on $bamboo_planRepository_branchName with version $newVersion" -elif [[ "${bamboo_version_tag}" != "dev" ]] -then - newVersion="${bamboo_version_tag}" - echo "new special version bild with $newVersion" -else - mvn -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \ - --no-transfer-progress \ - ${bamboo_maven_add_param} \ - clean install \ - -Djava.security.egd=file:/dev/./urandomelse - echo "dev build with tag ${bamboo_planRepository_1_branch}_${bamboo_buildNumber}" - echo "gitTag=${bamboo_planRepository_1_branch}_${bamboo_buildNumber}" > git.tag - exit 0 -fi - -echo "gitTag=${newVersion}" > git.tag - -mvn --no-transfer-progress \ - -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \ - versions:set \ - -DnewVersion=${newVersion} - -mvn --no-transfer-progress \ - -f ${bamboo_build_working_directory}/$SERVICE_NAME-image-v1/pom.xml \ - versions:set \ - -DnewVersion=${newVersion} - -mvn -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \ - --no-transfer-progress \ - clean deploy \ - ${bamboo_maven_add_param} \ - -e \ - -DdeployAtEnd=true \ - -Dmaven.wagon.http.ssl.insecure=true \ - -Dmaven.wagon.http.ssl.allowall=true \ - -Dmaven.wagon.http.ssl.ignore.validity.dates=true \ - -DaltDeploymentRepository=iqser_release::default::https://nexus.knecon.com/repository/red-platform-releases - -mvn --no-transfer-progress \ - -f ${bamboo_build_working_directory}/$SERVICE_NAME-image-v1/pom.xml \ - package - -mvn --no-transfer-progress \ - -f ${bamboo_build_working_directory}/$SERVICE_NAME-image-v1/pom.xml \ - docker:push diff --git a/bamboo-specs/src/main/resources/scripts/sonar-java.sh b/bamboo-specs/src/main/resources/scripts/sonar-java.sh deleted file mode 100755 index ba0b1de..0000000 --- a/bamboo-specs/src/main/resources/scripts/sonar-java.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash -set -e - -SERVICE_NAME=$1 - -echo "build jar binaries" -mvn -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \ - --no-transfer-progress \ - clean install \ - -Djava.security.egd=file:/dev/./urandomelse - -echo "dependency-check:aggregate" -mvn --no-transfer-progress \ - -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \ - org.owasp:dependency-check-maven:aggregate \ - -DknownExploitedEnabled=false - -if [[ -z "${bamboo_repository_pr_key}" ]] -then - echo "Sonar Scan for branch: ${bamboo_planRepository_1_branch}" - mvn --no-transfer-progress \ - -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \ - sonar:sonar \ - -Dsonar.projectKey=RED_$SERVICE_NAME \ - -Dsonar.host.url=https://sonarqube.knecon.com \ - -Dsonar.login=${bamboo_sonarqube_api_token_secret} \ - -Dsonar.branch.name=${bamboo_planRepository_1_branch} \ - -Dsonar.dependencyCheck.jsonReportPath=target/dependency-check-report.json \ - -Dsonar.dependencyCheck.xmlReportPath=target/dependency-check-report.xml \ - -Dsonar.dependencyCheck.htmlReportPath=target/dependency-check-report.html -else - echo "Sonar Scan for PR with key1: ${bamboo_repository_pr_key}" - mvn --no-transfer-progress \ - -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \ - sonar:sonar \ - -Dsonar.projectKey=RED_$SERVICE_NAME \ - -Dsonar.host.url=https://sonarqube.knecon.com \ - -Dsonar.login=${bamboo_sonarqube_api_token_secret} \ - -Dsonar.pullrequest.key=${bamboo_repository_pr_key} \ - -Dsonar.pullrequest.branch=${bamboo_repository_pr_sourceBranch} \ - -Dsonar.pullrequest.base=${bamboo_repository_pr_targetBranch} \ - -Dsonar.dependencyCheck.jsonReportPath=target/dependency-check-report.json \ - -Dsonar.dependencyCheck.xmlReportPath=target/dependency-check-report.xml \ - -Dsonar.dependencyCheck.htmlReportPath=target/dependency-check-report.html -fi \ No newline at end of file diff --git a/bamboo-specs/src/test/java/buildjob/PlanSpecTest.java b/bamboo-specs/src/test/java/buildjob/PlanSpecTest.java deleted file mode 100644 index 6e1b615..0000000 --- a/bamboo-specs/src/test/java/buildjob/PlanSpecTest.java +++ /dev/null @@ -1,22 +0,0 @@ -package buildjob; - -import org.junit.Test; - -import com.atlassian.bamboo.specs.api.builders.plan.Plan; -import com.atlassian.bamboo.specs.api.exceptions.PropertiesValidationException; -import com.atlassian.bamboo.specs.api.util.EntityPropertiesBuilders; - -public class PlanSpecTest { - - @Test - public void checkYourPlanOffline() throws PropertiesValidationException { - - Plan plan = new PlanSpec().createPlan(); - EntityPropertiesBuilders.build(plan); - - Plan secPlan = new PlanSpec().createSecBuild(); - EntityPropertiesBuilders.build(secPlan); - - } - -} \ No newline at end of file