diff --git a/ci/config/release-scripts.yml b/ci/config/release-scripts.yml new file mode 100644 index 0000000000000000000000000000000000000000..05eab072242de88d3d30917bf3d9884194d947ff --- /dev/null +++ b/ci/config/release-scripts.yml @@ -0,0 +1,3 @@ +distribute: + optional-deployments: + - '.*\\.zip' diff --git a/ci/pipeline.yml b/ci/pipeline.yml index 1827f10150467c21defdb82b61fec5f2be9e3851..1c11984666bc9785f126ae18f75e4193e84a9a2c 100644 --- a/ci/pipeline.yml +++ b/ci/pipeline.yml @@ -1,25 +1,33 @@ anchors: - slack-fail-params: &slack-fail-params - text: > - :concourse-failed: - [$TEXT_FILE_CONTENT] - text_file: git-repo/build/build-scan-uri.txt - silent: true - icon_emoji: ":concourse:" - username: concourse-ci - gradle-enterprise-task-params: &gradle-enterprise-task-params - GRADLE_ENTERPRISE_ACCESS_KEY: ((gradle_enterprise_secret_access_key)) - GRADLE_ENTERPRISE_CACHE_USERNAME: ((gradle_enterprise_cache_user.username)) - GRADLE_ENTERPRISE_CACHE_PASSWORD: ((gradle_enterprise_cache_user.password)) artifactory-task-params: &artifactory-task-params ARTIFACTORY_SERVER: ((artifactory-server)) ARTIFACTORY_USERNAME: ((artifactory-username)) ARTIFACTORY_PASSWORD: ((artifactory-password)) + bintray-task-params: &bintray-task-params + BINTRAY_SUBJECT: ((bintray-subject)) + BINTRAY_REPO: ((bintray-repo)) + BINTRAY_USERNAME: ((bintray-username)) + BINTRAY_API_KEY: ((bintray-api-key)) docker-resource-source: &docker-resource-source username: ((docker-hub-username)) password: ((docker-hub-password)) tag: 5.3.x - + gradle-enterprise-task-params: &gradle-enterprise-task-params + GRADLE_ENTERPRISE_ACCESS_KEY: ((gradle_enterprise_secret_access_key)) + GRADLE_ENTERPRISE_CACHE_USERNAME: ((gradle_enterprise_cache_user.username)) + GRADLE_ENTERPRISE_CACHE_PASSWORD: ((gradle_enterprise_cache_user.password)) + slack-fail-params: &slack-fail-params + text: > + :concourse-failed: + [$TEXT_FILE_CONTENT] + text_file: git-repo/build/build-scan-uri.txt + silent: true + icon_emoji: ":concourse:" + username: concourse-ci + sontatype-task-params: &sonatype-task-params + SONATYPE_USER_TOKEN: ((sonatype-user-token)) + SONATYPE_PASSWORD_TOKEN: ((sonatype-user-token-password)) + resource_types: - name: artifactory-resource type: docker-image @@ -364,10 +372,65 @@ jobs: params: RELEASE_TYPE: RC <<: *artifactory-task-params +- name: stage-release + serial: true + plan: + - get: spring-framework-ci-image + - get: git-repo + trigger: false + - task: stage + image: spring-framework-ci-image + file: git-repo/ci/tasks/stage-version.yml + params: + RELEASE_TYPE: RELEASE + <<: *gradle-enterprise-task-params + - put: artifactory-repo + params: + <<: *artifactory-params + repo: libs-staging-local + - put: git-repo + params: + repository: stage-git-repo +- name: promote-release + serial: true + plan: + - get: spring-framework-ci-image + - get: git-repo + trigger: false + - get: artifactory-repo + trigger: false + passed: [stage-release] + params: + download_artifacts: false + save_build_info: true + - task: promote + image: spring-framework-ci-image + file: git-repo/ci/tasks/promote-version.yml + params: + RELEASE_TYPE: RELEASE + <<: *artifactory-task-params + <<: *bintray-task-params +- name: sync-to-maven-central + serial: true + plan: + - get: spring-framework-ci-image + - get: git-repo + - get: artifactory-repo + trigger: true + passed: [promote-release] + params: + download_artifacts: false + save_build_info: true + - task: sync-to-maven-central + image: spring-framework-ci-image + file: git-repo/ci/tasks/sync-to-maven-central.yml + params: + <<: *bintray-task-params + <<: *sonatype-task-params groups: -- name: "Build" +- name: "builds" jobs: ["build", "jdk11-build", "jdk14-build", "jdk15-build"] -- name: "Release" - jobs: ["stage-milestone","stage-rc", "promote-milestone","promote-rc"] -- name: "CI Images" +- name: "releases" + jobs: ["stage-milestone", "stage-rc", "stage-release", "promote-milestone","promote-rc", "promote-release", "sync-to-maven-central"] +- name: "ci-images" jobs: ["build-spring-framework-ci-images"] diff --git a/ci/scripts/promote-version.sh b/ci/scripts/promote-version.sh index c27ecb0bc6ce9e6faf052e6e1a40ce5a757daf48..020db4f300b3e32c85cfac3a5c6d0281278246e9 100755 --- a/ci/scripts/promote-version.sh +++ b/ci/scripts/promote-version.sh @@ -1,13 +1,16 @@ #!/bin/bash source $(dirname $0)/common.sh +CONFIG_DIR=git-repo/ci/config version=$( cat artifactory-repo/build-info.json | jq -r '.buildInfo.modules[0].id' | sed 's/.*:.*:\(.*\)/\1/' ) export BUILD_INFO_LOCATION=$(pwd)/artifactory-repo/build-info.json java -jar /opt/concourse-release-scripts.jar promote $RELEASE_TYPE $BUILD_INFO_LOCATION > /dev/null || { exit 1; } -java -jar /opt/concourse-release-scripts.jar distribute $RELEASE_TYPE $BUILD_INFO_LOCATION > /dev/null || { exit 1; } +java -jar /opt/concourse-release-scripts.jar \ + --spring.config.location=${CONFIG_DIR}/release-scripts.yml \ + distribute $RELEASE_TYPE $BUILD_INFO_LOCATION > /dev/null || { exit 1; } echo "Promotion complete" echo $version > version/version diff --git a/ci/scripts/sync-to-maven-central.sh b/ci/scripts/sync-to-maven-central.sh new file mode 100755 index 0000000000000000000000000000000000000000..b42631164ed5c7cd971a491caa53c3d39e3b37fd --- /dev/null +++ b/ci/scripts/sync-to-maven-central.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +export BUILD_INFO_LOCATION=$(pwd)/artifactory-repo/build-info.json +version=$( cat artifactory-repo/build-info.json | jq -r '.buildInfo.modules[0].id' | sed 's/.*:.*:\(.*\)/\1/' ) +java -jar /opt/concourse-release-scripts.jar syncToCentral "RELEASE" $BUILD_INFO_LOCATION || { exit 1; } + +echo "Sync complete" +echo $version > version/version diff --git a/ci/tasks/sync-to-maven-central.yml b/ci/tasks/sync-to-maven-central.yml new file mode 100644 index 0000000000000000000000000000000000000000..a44af5af16922bddfd06cbf46b4ab0a67685d981 --- /dev/null +++ b/ci/tasks/sync-to-maven-central.yml @@ -0,0 +1,16 @@ +--- +platform: linux +inputs: +- name: git-repo +- name: artifactory-repo +outputs: +- name: version +params: + BINTRAY_REPO: + BINTRAY_SUBJECT: + BINTRAY_USERNAME: + BINTRAY_API_KEY: + SONATYPE_USER_TOKEN: + SONATYPE_PASSWORD_TOKEN: +run: + path: git-repo/ci/scripts/sync-to-maven-central.sh