diff --git a/ci/pipeline.yml b/ci/pipeline.yml index 6a191d0..fe34992 100644 --- a/ci/pipeline.yml +++ b/ci/pipeline.yml @@ -68,6 +68,15 @@ resources: repository: ((github-repo-name)) base_branch: ((branch)) ignore_paths: ["ci/*"] +- name: github-pre-release + type: github-release + icon: briefcase-download-outline + source: + owner: spring-projects + repository: spring-retry + access_token: ((github-ci-release-token)) + pre_release: true + release: false - name: github-release type: github-release icon: briefcase-download @@ -173,6 +182,100 @@ jobs: params: path: git-repo status: failure +- name: stage-milestone + serial: true + plan: + - get: ci-image + - get: git-repo + trigger: false + - task: stage + image: ci-image + file: git-repo/ci/tasks/stage.yml + params: + RELEASE_TYPE: M + - put: artifactory-repo + params: + <<: *artifactory-repo-put-params + repo: libs-staging-local + - put: git-repo + params: + repository: stage-git-repo +- name: promote-milestone + serial: true + plan: + - get: ci-image + - get: git-repo + trigger: false + - get: artifactory-repo + trigger: false + passed: [stage-milestone] + params: + download_artifacts: false + save_build_info: true + - task: promote + image: ci-image + file: git-repo/ci/tasks/promote.yml + params: + RELEASE_TYPE: M + <<: *artifactory-task-params + - task: generate-changelog + file: git-repo/ci/tasks/generate-changelog.yml + params: + RELEASE_TYPE: M + GITHUB_USERNAME: ((github-username)) + GITHUB_TOKEN: ((github-ci-release-token)) + - put: github-pre-release + params: + name: generated-changelog/tag + tag: generated-changelog/tag + body: generated-changelog/changelog.md +- name: stage-rc + serial: true + plan: + - get: ci-image + - get: git-repo + trigger: false + - task: stage + image: ci-image + file: git-repo/ci/tasks/stage.yml + params: + RELEASE_TYPE: RC + - put: artifactory-repo + params: + <<: *artifactory-repo-put-params + repo: libs-staging-local + - put: git-repo + params: + repository: stage-git-repo +- name: promote-rc + serial: true + plan: + - get: ci-image + - get: git-repo + trigger: false + - get: artifactory-repo + trigger: false + passed: [stage-rc] + params: + download_artifacts: false + save_build_info: true + - task: promote + image: ci-image + file: git-repo/ci/tasks/promote.yml + params: + RELEASE_TYPE: RC + <<: *artifactory-task-params + - task: generate-changelog + file: git-repo/ci/tasks/generate-changelog.yml + params: + RELEASE_TYPE: RC + GITHUB_USERNAME: ((github-username)) + GITHUB_TOKEN: ((github-ci-release-token)) + - put: github-pre-release + params: + name: generated-changelog/tag + tag: generated-changelog/tag + body: generated-changelog/changelog.md - name: stage-release serial: true plan: @@ -238,7 +341,7 @@ groups: - name: "build" jobs: ["build"] - name: "releases" - jobs: ["stage-release", "promote-release", "create-github-release"] + jobs: ["stage-milestone", "stage-rc", "stage-release", "promote-milestone", "promote-rc", "promote-release", "create-github-release"] - name: "ci-images" jobs: ["build-ci-image"] - name: "pull-requests" diff --git a/ci/scripts/stage.sh b/ci/scripts/stage.sh index f924bb7..805d9a8 100755 --- a/ci/scripts/stage.sh +++ b/ci/scripts/stage.sh @@ -13,8 +13,19 @@ git clone git-repo stage-git-repo > /dev/null pushd stage-git-repo > /dev/null snapshotVersion=$( get_revision_from_pom ) -stageVersion=$( get_next_release $snapshotVersion) -nextVersion=$( bump_version_number $snapshotVersion) +if [[ $RELEASE_TYPE = "M" ]]; then + stageVersion=$( get_next_milestone_release $snapshotVersion) + nextVersion=$snapshotVersion +elif [[ $RELEASE_TYPE = "RC" ]]; then + stageVersion=$( get_next_rc_release $snapshotVersion) + nextVersion=$snapshotVersion +elif [[ $RELEASE_TYPE = "RELEASE" ]]; then + stageVersion=$( get_next_release $snapshotVersion) + nextVersion=$( bump_version_number $snapshotVersion) +else + echo "Unknown release type $RELEASE_TYPE" >&2; exit 1; +fi + echo "Staging $stageVersion (next version will be $nextVersion)" set_revision_to_pom "$stageVersion" diff --git a/ci/tasks/promote.yml b/ci/tasks/promote.yml index 9db3f87..f6e496f 100644 --- a/ci/tasks/promote.yml +++ b/ci/tasks/promote.yml @@ -6,6 +6,7 @@ inputs: outputs: - name: version params: + RELEASE_TYPE: ARTIFACTORY_SERVER: ARTIFACTORY_USERNAME: ARTIFACTORY_PASSWORD: diff --git a/ci/tasks/stage.yml b/ci/tasks/stage.yml index 403ba7b..ddcdb27 100644 --- a/ci/tasks/stage.yml +++ b/ci/tasks/stage.yml @@ -5,6 +5,8 @@ inputs: outputs: - name: stage-git-repo - name: distribution-repository +params: + RELEASE_TYPE: caches: - path: maven run: