diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 000000000..da80a492c --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,6 @@ +variables: + SONAR_PROJECT_KEY: 'RED_persistence-service' +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 d35f6765d..000000000 --- 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 122953354..000000000 --- a/bamboo-specs/src/main/java/buildjob/PlanSpec.java +++ /dev/null @@ -1,126 +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 = "persistence-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 buildPlan = new PlanSpec().createPlanBuild(); - bambooServer.publish(buildPlan); - PlanPermissions buildPlanPermission = new PlanSpec().createPlanPermission(buildPlan.getIdentifier()); - bambooServer.publish(buildPlanPermission); - - 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 createPlanBuild() { - - return new Plan(project(), SERVICE_NAME, new BambooKey(SERVICE_KEY)).description("Build Plan for Persitence Service") - .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") - .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 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").cleanCheckout(true).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.8.4-openjdk-17-slim") - .dockerRunArguments("--net=host") - .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 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 1180a4d62..000000000 --- a/bamboo-specs/src/main/resources/scripts/build-java.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash -set -e - -SERVICE_NAME=$1 -set SERVER_PORT=$(shuf -i 20000-65000 -n 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)" -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)" -elif [[ "${bamboo_version_tag}" != "dev" ]] -then - newVersion="${bamboo_version_tag}" -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 "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 56129adcd..000000000 --- a/bamboo-specs/src/main/resources/scripts/sonar-java.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash -set -e - -SERVICE_NAME=$1 -set SERVER_PORT=$(shuf -i 20000-65000 -n 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 - -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 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 3d4e892fe..000000000 --- a/bamboo-specs/src/test/java/buildjob/PlanSpecTest.java +++ /dev/null @@ -1,21 +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 buildPlan = new PlanSpec().createPlanBuild(); - EntityPropertiesBuilders.build(buildPlan); - - Plan secPlan = new PlanSpec().createSecBuild(); - EntityPropertiesBuilders.build(secPlan); - } - -} \ No newline at end of file