From 723b6ad3da7c662dcee6b340fdb5db81c8d49665 Mon Sep 17 00:00:00 2001 From: Carmine Vassallo Date: Wed, 22 Jan 2025 11:41:54 +0100 Subject: [PATCH 1/3] fix ci version --- .cirrus/tasks.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.cirrus/tasks.yml b/.cirrus/tasks.yml index ac8663fc9..6ffcbe6f1 100644 --- a/.cirrus/tasks.yml +++ b/.cirrus/tasks.yml @@ -16,8 +16,8 @@ env: GCLOUD_STAGING_REGISTRY: gcr.io/sonarqube-marketplace-provider GCLOUD_STAGING_PRODUCT_NAME: sonarqube-dce-staging CURRENT_LTA_VERSION: 9.9.8 - CURRENT_VERSION: 2025.1 - NEXT_VERSION: 2025.1 + CURRENT_VERSION: 2025.1.0 + NEXT_VERSION: 2025.1.0 # Must be in the format YY.MM.0.###### where ###### is the build number COMMUNITY_BUILD_VERSION: 25.1.0.102122 From 5f782965494c7626789ad03890013119a1a67c0c Mon Sep 17 00:00:00 2001 From: Carmine Vassallo Date: Wed, 22 Jan 2025 17:00:10 +0100 Subject: [PATCH 2/3] Add GCP required annotation when pushing to GCP staging and prod --- .cirrus/multi-arch-build.sh | 2 +- .cirrus/tasks.yml | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/.cirrus/multi-arch-build.sh b/.cirrus/multi-arch-build.sh index ad2bad048..43037c2ad 100755 --- a/.cirrus/multi-arch-build.sh +++ b/.cirrus/multi-arch-build.sh @@ -2,7 +2,7 @@ export DOCKER_BUILDKIT=1 for i in $(seq 1 3); do - if docker buildx build --platform linux/amd64,linux/arm64 --tag "$1:$2" --push $3; then + if docker buildx build --platform linux/amd64,linux/arm64 --tag "$1:$2" --label "com.googleapis.cloudmarketplace.product.service.name=services/sonarqube-dce" --push $3; then echo "[Success]: Buildx, attempt ${i}" exit 0 fi diff --git a/.cirrus/tasks.yml b/.cirrus/tasks.yml index 6ffcbe6f1..de93ca1fc 100644 --- a/.cirrus/tasks.yml +++ b/.cirrus/tasks.yml @@ -51,13 +51,21 @@ multi_arch_build_gcp_prod_task: - echo "Promote the ${PUBLIC_IMAGE_NAME}:${CURRENT_VERSION}-datacenter-app images supporting two architectures (linux/amd64 and linux/arm64) to the GCP registry ${GCLOUD_REGISTRY}" - docker tag "${PUBLIC_IMAGE_NAME}:${CURRENT_VERSION}-datacenter-app" "${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}:${CURRENT_VERSION}" - docker tag "${PUBLIC_IMAGE_NAME}:${CURRENT_VERSION}-datacenter-app" "${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}:${CURRENT_MINOR_VERSION}" + - echo -e "FROM ${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}:${CURRENT_VERSION}\nLABEL com.googleapis.cloudmarketplace.product.service.name=services/sonarqube-dce" | docker build -t ${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}:${CURRENT_VERSION} - + - echo -e "FROM ${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}:${CURRENT_MINOR_VERSION}\nLABEL com.googleapis.cloudmarketplace.product.service.name=services/sonarqube-dce" | docker build -t ${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}:${CURRENT_MINOR_VERSION} - - docker push "${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}:${CURRENT_VERSION}" - docker push "${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}:${CURRENT_MINOR_VERSION}" - echo "Promote the ${PUBLIC_IMAGE_NAME}:${CURRENT_VERSION}-datacenter-search images supporting two architectures (linux/amd64 and linux/arm64) to the GCP registry ${GCLOUD_REGISTRY}" - docker tag "${PUBLIC_IMAGE_NAME}:${CURRENT_VERSION}-datacenter-search" "${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/sonarqube-dce-search:${CURRENT_VERSION}" - docker tag "${PUBLIC_IMAGE_NAME}:${CURRENT_VERSION}-datacenter-search" "${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/sonarqube-dce-search:${CURRENT_MINOR_VERSION}" + - echo -e "FROM ${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/sonarqube-dce-search:${CURRENT_VERSION}\nLABEL com.googleapis.cloudmarketplace.product.service.name=services/sonarqube-dce" | docker build -t ${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/sonarqube-dce-search:${CURRENT_VERSION} - + - echo -e "FROM ${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/sonarqube-dce-search:${CURRENT_MINOR_VERSION}\nLABEL com.googleapis.cloudmarketplace.product.service.name=services/sonarqube-dce" | docker build -t ${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/sonarqube-dce-search:${CURRENT_MINOR_VERSION} - - docker push "${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/sonarqube-dce-search:${CURRENT_VERSION}" - docker push "${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/sonarqube-dce-search:${CURRENT_MINOR_VERSION}" + - docker inspect "${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}:${CURRENT_VERSION}" + - docker inspect "${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}:${CURRENT_MINOR_VERSION}" + - docker inspect "${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/sonarqube-dce-search:${CURRENT_VERSION}" + - docker inspect "${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/sonarqube-dce-search:${CURRENT_MINOR_VERSION}" multi_arch_build_gcp_staging_task: only_if: $CIRRUS_CRON == 'nightly-mend-scan' || $TRIGGER == 'PUSH_GCP_STAGING_IMAGES' @@ -82,6 +90,8 @@ multi_arch_build_gcp_staging_task: - echo "Build and promote the ${STAGING_IMAGE_NAME}:${NEXT_VERSION} and ${STAGING_IMAGE_NAME}:${NEXT_MINOR_VERSION} image supporting two architectures, linux/amd64 and linux/arm64" - .cirrus/multi-arch-build.sh ${STAGING_IMAGE_NAME} $NEXT_VERSION ${version} - .cirrus/multi-arch-build.sh ${STAGING_IMAGE_NAME} $NEXT_MINOR_VERSION ${version} + - docker inspect ${STAGING_IMAGE_NAME}:${NEXT_VERSION} + - docker inspect ${STAGING_IMAGE_NAME}:${NEXT_MINOR_VERSION} multi_arch_build_task_template: &multi_arch_build_task_template ec2_instance: @@ -128,6 +138,20 @@ multi_arch_build_2025_x_task: - version: ${NEXT_VERSION}/datacenter/search tag: ${NEXT_VERSION}-datacenter-search +multi_arch_build_task_template: &multi_arch_build_task_template + ec2_instance: + <<: *VM_TEMPLATE + login_script: + - docker login --username $DOCKER_USERNAME --password $DOCKER_PASSWORD + setup_script: + - docker run -t --rm --privileged tonistiigi/binfmt --install all + - docker buildx create --name multibuilder --driver docker-container + - docker buildx use multibuilder + - docker buildx inspect --bootstrap + build_script: + - echo "Build the ${STAGING_IMAGE_NAME}:${tag} image supporting two architectures, linux/amd64 and linux/arm64" + - .cirrus/multi-arch-build.sh ${STAGING_IMAGE_NAME} ${tag} ${version} + multi_arch_build_community_build_task: <<: *multi_arch_build_task_template skip: "!changesInclude('community-build/*') && !changesInclude('.cirrus/*')" From 62e2be82b474b1b07fd4760b193ba8b3a4319501 Mon Sep 17 00:00:00 2001 From: Carmine Vassallo Date: Thu, 23 Jan 2025 18:17:41 +0100 Subject: [PATCH 3/3] SONAR-24200 Add new required annotation in DCE for GCP apps --- .cirrus/multi-arch-build.sh | 2 +- .cirrus/tasks.yml | 28 ++++------------------------ 2025.1/datacenter/app/Dockerfile | 1 + 2025.1/datacenter/search/Dockerfile | 1 + release.md | 8 ++++---- 5 files changed, 11 insertions(+), 29 deletions(-) diff --git a/.cirrus/multi-arch-build.sh b/.cirrus/multi-arch-build.sh index 43037c2ad..ad2bad048 100755 --- a/.cirrus/multi-arch-build.sh +++ b/.cirrus/multi-arch-build.sh @@ -2,7 +2,7 @@ export DOCKER_BUILDKIT=1 for i in $(seq 1 3); do - if docker buildx build --platform linux/amd64,linux/arm64 --tag "$1:$2" --label "com.googleapis.cloudmarketplace.product.service.name=services/sonarqube-dce" --push $3; then + if docker buildx build --platform linux/amd64,linux/arm64 --tag "$1:$2" --push $3; then echo "[Success]: Buildx, attempt ${i}" exit 0 fi diff --git a/.cirrus/tasks.yml b/.cirrus/tasks.yml index de93ca1fc..15ca5f2ba 100644 --- a/.cirrus/tasks.yml +++ b/.cirrus/tasks.yml @@ -62,10 +62,6 @@ multi_arch_build_gcp_prod_task: - echo -e "FROM ${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/sonarqube-dce-search:${CURRENT_MINOR_VERSION}\nLABEL com.googleapis.cloudmarketplace.product.service.name=services/sonarqube-dce" | docker build -t ${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/sonarqube-dce-search:${CURRENT_MINOR_VERSION} - - docker push "${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/sonarqube-dce-search:${CURRENT_VERSION}" - docker push "${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/sonarqube-dce-search:${CURRENT_MINOR_VERSION}" - - docker inspect "${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}:${CURRENT_VERSION}" - - docker inspect "${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}:${CURRENT_MINOR_VERSION}" - - docker inspect "${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/sonarqube-dce-search:${CURRENT_VERSION}" - - docker inspect "${GCLOUD_REGISTRY}/${GCLOUD_PRODUCT_NAME}/sonarqube-dce-search:${CURRENT_MINOR_VERSION}" multi_arch_build_gcp_staging_task: only_if: $CIRRUS_CRON == 'nightly-mend-scan' || $TRIGGER == 'PUSH_GCP_STAGING_IMAGES' @@ -90,8 +86,6 @@ multi_arch_build_gcp_staging_task: - echo "Build and promote the ${STAGING_IMAGE_NAME}:${NEXT_VERSION} and ${STAGING_IMAGE_NAME}:${NEXT_MINOR_VERSION} image supporting two architectures, linux/amd64 and linux/arm64" - .cirrus/multi-arch-build.sh ${STAGING_IMAGE_NAME} $NEXT_VERSION ${version} - .cirrus/multi-arch-build.sh ${STAGING_IMAGE_NAME} $NEXT_MINOR_VERSION ${version} - - docker inspect ${STAGING_IMAGE_NAME}:${NEXT_VERSION} - - docker inspect ${STAGING_IMAGE_NAME}:${NEXT_MINOR_VERSION} multi_arch_build_task_template: &multi_arch_build_task_template ec2_instance: @@ -129,29 +123,15 @@ multi_arch_build_2025_x_task: skip: "!changesInclude('2025.1/**/*') && !changesInclude('.cirrus/*')" env: matrix: - - version: ${NEXT_VERSION}/developer + - version: 2025.1/developer tag: ${NEXT_VERSION}-developer - - version: ${NEXT_VERSION}/enterprise + - version: 2025.1/enterprise tag: ${NEXT_VERSION}-enterprise - - version: ${NEXT_VERSION}/datacenter/app + - version: 2025.1/datacenter/app tag: ${NEXT_VERSION}-datacenter-app - - version: ${NEXT_VERSION}/datacenter/search + - version: 2025.1/datacenter/search tag: ${NEXT_VERSION}-datacenter-search -multi_arch_build_task_template: &multi_arch_build_task_template - ec2_instance: - <<: *VM_TEMPLATE - login_script: - - docker login --username $DOCKER_USERNAME --password $DOCKER_PASSWORD - setup_script: - - docker run -t --rm --privileged tonistiigi/binfmt --install all - - docker buildx create --name multibuilder --driver docker-container - - docker buildx use multibuilder - - docker buildx inspect --bootstrap - build_script: - - echo "Build the ${STAGING_IMAGE_NAME}:${tag} image supporting two architectures, linux/amd64 and linux/arm64" - - .cirrus/multi-arch-build.sh ${STAGING_IMAGE_NAME} ${tag} ${version} - multi_arch_build_community_build_task: <<: *multi_arch_build_task_template skip: "!changesInclude('community-build/*') && !changesInclude('.cirrus/*')" diff --git a/2025.1/datacenter/app/Dockerfile b/2025.1/datacenter/app/Dockerfile index c384f2b5e..db6767530 100644 --- a/2025.1/datacenter/app/Dockerfile +++ b/2025.1/datacenter/app/Dockerfile @@ -6,6 +6,7 @@ LABEL io.openshift.min-memory=2048M LABEL io.openshift.non-scalable=false LABEL io.openshift.tags=sonarqube,static-code-analysis,code-quality,clean-code LABEL org.opencontainers.image.url=https://github.com/SonarSource/docker-sonarqube +LABEL com.googleapis.cloudmarketplace.product.service.name=services/sonarqube-dce ENV LANG='en_US.UTF-8' \ LANGUAGE='en_US:en' \ diff --git a/2025.1/datacenter/search/Dockerfile b/2025.1/datacenter/search/Dockerfile index 94997f9ec..42865517e 100644 --- a/2025.1/datacenter/search/Dockerfile +++ b/2025.1/datacenter/search/Dockerfile @@ -6,6 +6,7 @@ LABEL io.openshift.min-memory=2048M LABEL io.openshift.non-scalable=false LABEL io.openshift.tags=sonarqube,static-code-analysis,code-quality,clean-code LABEL org.opencontainers.image.url=https://github.com/SonarSource/docker-sonarqube +LABEL com.googleapis.cloudmarketplace.product.service.name=services/sonarqube-dce ENV LANG='en_US.UTF-8' \ LANGUAGE='en_US:en' \ diff --git a/release.md b/release.md index b606aa7f0..3e1107728 100644 --- a/release.md +++ b/release.md @@ -11,10 +11,10 @@ Release of a new version of the official SonarQube Server Docker images is made 1. Set the new version of SonarQube Server (`SONARQUBE_VERSION`) to be released in the Dockerfiles. In case of community build, please remember to update `community-build/Dockerfile` only. 2. If you are releasing a new LTA, set `CURRENT_LTA_VERSION` in `.cirrus/tasks.yml`. Otherwise, if you are releasing a Community build, set `COMMUNITY_BUILD_VERSION` only. In all the other cases where a paid edition is about to be releases, set `CURRENT_VERSION` (please note that the nightly build will fail before the public image becomes available). 3. Update the docker hub SonarQube Server's documentation (if applicable) -4. Add a GIT tag for the new version - 1. If you are releasing a SonarQube Server version, you need to [Draft a New Release](https://github.com/SonarSource/docker-sonarqube/releases/new), where the name matches "SonarQube Server 2025.", followed by the month version, i.e., "SonarQube Server 2025.1". - 2. Likewise, if you are releasing a Community Build, the release name should match "Community Build", followed by the month version, i.e., "Community Build 25.1". -5. Update Docker Hub's SonarQube Server images +4. Update Docker Hub's SonarQube Server images +5. Add a GIT tag for the new version (This needs to be done after the images become available on DockerHub) + 1. If you are releasing a SonarQube Server version, you need to [Add a New Release](https://github.com/SonarSource/docker-sonarqube/releases/new), where the name matches "SonarQube Server", followed by the release version, e.g., "SonarQube Server 2025.1.0". + 2. Likewise, if you are releasing a Community Build, the release name should match "Community Build", followed by the release version, e.g., "Community Build 25.1.102122". ## Bump the version of SonarQube Server in Dockerfiles