automate releases

This commit is contained in:
cschabert 2022-04-01 13:47:26 +02:00
parent 02d9ebc24c
commit f05f2b21a4
4 changed files with 77 additions and 70 deletions

View File

@ -5,7 +5,7 @@
<parent> <parent>
<groupId>com.atlassian.bamboo</groupId> <groupId>com.atlassian.bamboo</groupId>
<artifactId>bamboo-specs-parent</artifactId> <artifactId>bamboo-specs-parent</artifactId>
<version>8.0.3</version> <version>8.1.3</version>
<relativePath/> <relativePath/>
</parent> </parent>

View File

@ -17,6 +17,7 @@ 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.plan.branches.PlanBranchManagement;
import com.atlassian.bamboo.specs.api.builders.project.Project; import com.atlassian.bamboo.specs.api.builders.project.Project;
import com.atlassian.bamboo.specs.builders.task.CheckoutItem; import com.atlassian.bamboo.specs.builders.task.CheckoutItem;
import com.atlassian.bamboo.specs.api.builders.Variable;
import com.atlassian.bamboo.specs.builders.task.InjectVariablesTask; import com.atlassian.bamboo.specs.builders.task.InjectVariablesTask;
import com.atlassian.bamboo.specs.builders.task.ScriptTask; import com.atlassian.bamboo.specs.builders.task.ScriptTask;
import com.atlassian.bamboo.specs.builders.task.VcsCheckoutTask; import com.atlassian.bamboo.specs.builders.task.VcsCheckoutTask;
@ -83,6 +84,7 @@ public class PlanSpec {
project(), project(),
SERVICE_NAME, new BambooKey(SERVICE_KEY)) SERVICE_NAME, new BambooKey(SERVICE_KEY))
.description("Plan created from (enter repository url of your plan)") .description("Plan created from (enter repository url of your plan)")
.variables(new Variable("maven_add_param", ""))
.stages(new Stage("Default Stage") .stages(new Stage("Default Stage")
.jobs(new Job("Default Job", .jobs(new Job("Default Job",
new BambooKey("JOB1")) new BambooKey("JOB1"))
@ -94,6 +96,7 @@ public class PlanSpec {
"rm -rf ./*"), "rm -rf ./*"),
new VcsCheckoutTask() new VcsCheckoutTask()
.description("Checkout Default Repository") .description("Checkout Default Repository")
.cleanCheckout(true)
.checkoutItems(new CheckoutItem().defaultRepository()), .checkoutItems(new CheckoutItem().defaultRepository()),
new ScriptTask() new ScriptTask()
.description("Build") .description("Build")
@ -115,7 +118,7 @@ public class PlanSpec {
.defaultRepository()) .defaultRepository())
.dockerConfiguration( .dockerConfiguration(
new DockerConfiguration() new DockerConfiguration()
.image("nexus.iqser.com:5001/infra/maven:3.6.2-jdk-13-3.0.0") .image("nexus.iqser.com:5001/infra/maven:3.8.4-openjdk-17-slim")
.volume("/etc/maven/settings.xml", "/usr/share/maven/ref/settings.xml") .volume("/etc/maven/settings.xml", "/usr/share/maven/ref/settings.xml")
.volume("/var/run/docker.sock", "/var/run/docker.sock") .volume("/var/run/docker.sock", "/var/run/docker.sock")
) )
@ -147,6 +150,7 @@ public class PlanSpec {
"rm -rf ./*"), "rm -rf ./*"),
new VcsCheckoutTask() new VcsCheckoutTask()
.description("Checkout Default Repository") .description("Checkout Default Repository")
.cleanCheckout(true)
.checkoutItems(new CheckoutItem().defaultRepository()), .checkoutItems(new CheckoutItem().defaultRepository()),
new ScriptTask() new ScriptTask()
.description("Sonar") .description("Sonar")
@ -155,9 +159,9 @@ public class PlanSpec {
.argument(SERVICE_NAME)) .argument(SERVICE_NAME))
.dockerConfiguration( .dockerConfiguration(
new DockerConfiguration() new DockerConfiguration()
.image("nexus.iqser.com:5001/infra/maven:3.6.2-jdk-13-3.0.0") .image("nexus.iqser.com:5001/infra/maven:3.8.4-openjdk-17-slim")
.dockerRunArguments("--net=host") .dockerRunArguments("--net=host")
.volume("/etc/maven/settings.xml", "/usr/share/maven/ref/settings.xml") .volume("/etc/maven/settings.xml", "/usr/share/maven/conf/settings.xml")
.volume("/var/run/docker.sock", "/var/run/docker.sock") .volume("/var/run/docker.sock", "/var/run/docker.sock")
) )
) )
@ -165,8 +169,7 @@ public class PlanSpec {
.linkedRepositories("RED / " + SERVICE_NAME) .linkedRepositories("RED / " + SERVICE_NAME)
.triggers( .triggers(
new ScheduledTrigger() new ScheduledTrigger()
.scheduleOnceDaily(LocalTime.of(12, 00)), .scheduleOnceDaily(LocalTime.of(23, 00)))
new BitbucketServerTrigger())
.planBranchManagement(new PlanBranchManagement() .planBranchManagement(new PlanBranchManagement()
.createForVcsBranchMatching("release.*") .createForVcsBranchMatching("release.*")
.notificationForCommitters()); .notificationForCommitters());

View File

@ -3,49 +3,57 @@ set -e
SERVICE_NAME=$1 SERVICE_NAME=$1
if [[ "${bamboo_version_tag}" = "dev" ]] if [[ "$bamboo_planRepository_branchName" == "master" ]]
then then
${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \ branchVersion=$(cat pom.xml | grep -Eo "<version>.*" | sed -s 's|<version>\(.*\)\..*\(-*.*\)</version>|\1|')
-f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \ 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 \ --no-transfer-progress \
${bamboo_maven_add_param} \
clean install \ clean install \
-Djava.security.egd=file:/dev/./urandomelse -Djava.security.egd=file:/dev/./urandomelse
else echo "gitTag=${bamboo_planRepository_1_branch}_${bamboo_buildNumber}" > git.tag
${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \ exit 0
--no-transfer-progress \
-f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
versions:set \
-DnewVersion=${bamboo_version_tag}
${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \
--no-transfer-progress \
-f ${bamboo_build_working_directory}/$SERVICE_NAME-image-v1/pom.xml \
versions:set \
-DnewVersion=${bamboo_version_tag}
${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \
-f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
--no-transfer-progress \
clean deploy \
-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.iqser.com/repository/red-platform-releases
fi fi
${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \ 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 \ --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.iqser.com/repository/red-platform-releases
mvn --no-transfer-progress \
-f ${bamboo_build_working_directory}/$SERVICE_NAME-image-v1/pom.xml \ -f ${bamboo_build_working_directory}/$SERVICE_NAME-image-v1/pom.xml \
package package
${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \ mvn --no-transfer-progress \
--no-transfer-progress \
-f ${bamboo_build_working_directory}/$SERVICE_NAME-image-v1/pom.xml \ -f ${bamboo_build_working_directory}/$SERVICE_NAME-image-v1/pom.xml \
docker:push docker:push
if [[ "${bamboo_version_tag}" = "dev" ]]
then
echo "gitTag=${bamboo_planRepository_1_branch}_${bamboo_buildNumber}" > git.tag
else
echo "gitTag=${bamboo_version_tag}" > git.tag
fi

View File

@ -3,46 +3,42 @@ set -e
SERVICE_NAME=$1 SERVICE_NAME=$1
${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \ echo "build jar binaries"
-f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \ mvn -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
--no-transfer-progress \ --no-transfer-progress \
clean install \ clean install \
-Djava.security.egd=file:/dev/./urandomelse -Djava.security.egd=file:/dev/./urandomelse
echo "dependency-check:aggregate" echo "dependency-check:aggregate"
${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \ mvn --no-transfer-progress \
--no-transfer-progress \
-f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \ -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
org.owasp:dependency-check-maven:aggregate org.owasp:dependency-check-maven:aggregate
if [[ -z "${bamboo_repository_pr_key}" ]] if [[ -z "${bamboo_repository_pr_key}" ]]
then then
echo "Sonar Scan for branch: ${bamboo_planRepository_1_branch}" echo "Sonar Scan for branch: ${bamboo_planRepository_1_branch}"
${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \ mvn --no-transfer-progress \
--no-transfer-progress \ -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
-f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \ sonar:sonar \
sonar:sonar \ -Dsonar.projectKey=RED_$SERVICE_NAME \
-Dsonar.projectKey=RED_$SERVICE_NAME \ -Dsonar.host.url=https://sonarqube.iqser.com \
-Dsonar.host.url=https://sonarqube.iqser.com \ -Dsonar.login=${bamboo_sonarqube_api_token_secret} \
-Dsonar.login=${bamboo_sonarqube_api_token_secret} \ -Dsonar.branch.name=${bamboo_planRepository_1_branch} \
-Dsonar.branch.name=${bamboo_planRepository_1_branch} \ -Dsonar.dependencyCheck.jsonReportPath=target/dependency-check-report.json \
-Dsonar.dependencyCheck.jsonReportPath=target/dependency-check-report.json \ -Dsonar.dependencyCheck.xmlReportPath=target/dependency-check-report.xml \
-Dsonar.dependencyCheck.xmlReportPath=target/dependency-check-report.xml \ -Dsonar.dependencyCheck.htmlReportPath=target/dependency-check-report.html
-Dsonar.dependencyCheck.htmlReportPath=target/dependency-check-report.html
else else
echo "Sonar Scan for PR with key1: ${bamboo_repository_pr_key}" echo "Sonar Scan for PR with key1: ${bamboo_repository_pr_key}"
${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \ mvn --no-transfer-progress \
--no-transfer-progress \ -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
-f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \ sonar:sonar \
sonar:sonar \ -Dsonar.projectKey=RED_$SERVICE_NAME \
-Dsonar.projectKey=RED_$SERVICE_NAME \ -Dsonar.host.url=https://sonarqube.iqser.com \
-Dsonar.host.url=https://sonarqube.iqser.com \ -Dsonar.login=${bamboo_sonarqube_api_token_secret} \
-Dsonar.login=${bamboo_sonarqube_api_token_secret} \ -Dsonar.pullrequest.key=${bamboo_repository_pr_key} \
-Dsonar.pullrequest.key=${bamboo_repository_pr_key} \ -Dsonar.pullrequest.branch=${bamboo_repository_pr_sourceBranch} \
-Dsonar.pullrequest.branch=${bamboo_repository_pr_sourceBranch} \ -Dsonar.pullrequest.base=${bamboo_repository_pr_targetBranch} \
-Dsonar.pullrequest.base=${bamboo_repository_pr_targetBranch} \ -Dsonar.dependencyCheck.jsonReportPath=target/dependency-check-report.json \
-Dsonar.dependencyCheck.jsonReportPath=target/dependency-check-report.json \ -Dsonar.dependencyCheck.xmlReportPath=target/dependency-check-report.xml \
-Dsonar.dependencyCheck.xmlReportPath=target/dependency-check-report.xml \ -Dsonar.dependencyCheck.htmlReportPath=target/dependency-check-report.html
-Dsonar.dependencyCheck.htmlReportPath=target/dependency-check-report.html fi
fi