From 6d4b286b1adfad25391526057a8616b1c58ccb5a Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Fri, 16 Oct 2020 14:50:04 +0200 Subject: [PATCH] Generate release notes in release pipeline This commit adds new tasks to the release pipeline, generating release notes automatically using the issues in the current milestone and pushing that as the content of the GitHub release. Closes gh-25922 --- ci/config/changelog-generator.yml | 17 ++++++++++ ci/pipeline.yml | 53 ++++++++++++++++++++++++++++++- ci/scripts/generate-changelog.sh | 12 +++++++ ci/tasks/generate-changelog.yml | 20 ++++++++++++ 4 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 ci/config/changelog-generator.yml create mode 100755 ci/scripts/generate-changelog.sh create mode 100755 ci/tasks/generate-changelog.yml diff --git a/ci/config/changelog-generator.yml b/ci/config/changelog-generator.yml new file mode 100644 index 0000000000..248e58db73 --- /dev/null +++ b/ci/config/changelog-generator.yml @@ -0,0 +1,17 @@ +changelog: + repository: spring-projects/spring-framework + sections: + - title: ":star: New Features" + labels: + - "type: enhancement" + - title: ":beetle: Bug Fixes" + labels: + - "type: bug" + - "type: regression" + - title: ":notebook_with_decorative_cover: Documentation" + labels: + - "type: documentation" + - title: ":hammer: Dependency Upgrades" + sort: "title" + labels: + - "type: dependency-upgrade" diff --git a/ci/pipeline.yml b/ci/pipeline.yml index 394bbf9140..f22da01dbe 100644 --- a/ci/pipeline.yml +++ b/ci/pipeline.yml @@ -24,9 +24,16 @@ anchors: silent: true icon_emoji: ":concourse:" username: concourse-ci - sontatype-task-params: &sonatype-task-params + sonatype-task-params: &sonatype-task-params SONATYPE_USER_TOKEN: ((sonatype-user-token)) SONATYPE_PASSWORD_TOKEN: ((sonatype-user-token-password)) + changelog-task-params: &changelog-task-params + name: generated-changelog/tag + tag: generated-changelog/tag + body: generated-changelog/changelog.md + github-task-params: &github-task-params + GITHUB_USERNAME: ((github-username)) + GITHUB_TOKEN: ((github-ci-release-token)) resource_types: - name: artifactory-resource @@ -44,6 +51,7 @@ resource_types: source: repository: cfcommunity/slack-notification-resource tag: latest + resources: - name: git-repo type: git @@ -136,6 +144,24 @@ resources: icon: slack source: url: ((slack-webhook-url)) +- name: github-pre-release + type: github-release + icon: briefcase-download-outline + source: + owner: spring-projects + repository: spring-framework + access_token: ((github-ci-release-token)) + pre_release: true + release: false +- name: github-release + type: github-release + icon: briefcase-download + source: + owner: spring-projects + repository: spring-framework + access_token: ((github-ci-release-token)) + pre_release: false + jobs: - name: build-spring-framework-ci-images plan: @@ -335,6 +361,14 @@ jobs: params: RELEASE_TYPE: M <<: *artifactory-task-params + - task: generate-changelog + file: git-repo/ci/tasks/generate-changelog.yml + params: + RELEASE_TYPE: M + <<: *github-task-params + - put: github-pre-release + params: + <<: *changelog-task-params - name: stage-rc serial: true plan: @@ -372,6 +406,14 @@ jobs: params: RELEASE_TYPE: RC <<: *artifactory-task-params + - task: generate-changelog + file: git-repo/ci/tasks/generate-changelog.yml + params: + RELEASE_TYPE: RC + <<: *github-task-params + - put: github-pre-release + params: + <<: *changelog-task-params - name: stage-release serial: true plan: @@ -427,6 +469,15 @@ jobs: params: <<: *bintray-task-params <<: *sonatype-task-params + - task: generate-changelog + file: git-repo/ci/tasks/generate-changelog.yml + params: + RELEASE_TYPE: RELEASE + <<: *github-task-params + - put: github-release + params: + <<: *changelog-task-params + groups: - name: "builds" jobs: ["build", "jdk11-build", "jdk14-build", "jdk15-build"] diff --git a/ci/scripts/generate-changelog.sh b/ci/scripts/generate-changelog.sh new file mode 100755 index 0000000000..b0bc952a33 --- /dev/null +++ b/ci/scripts/generate-changelog.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -e + +CONFIG_DIR=git-repo/ci/config +version=$( cat version/version ) + +java -jar /github-changelog-generator.jar \ + --spring.config.location=${CONFIG_DIR}/changelog-generator.yml \ + ${version} generated-changelog/changelog.md + +echo ${version} > generated-changelog/version +echo v${version} > generated-changelog/tag diff --git a/ci/tasks/generate-changelog.yml b/ci/tasks/generate-changelog.yml new file mode 100755 index 0000000000..2df097bc29 --- /dev/null +++ b/ci/tasks/generate-changelog.yml @@ -0,0 +1,20 @@ +--- +platform: linux +image_resource: + type: docker-image + source: + repository: springio/github-changelog-generator + tag: '0.0.4' +inputs: +- name: git-repo +- name: version +outputs: +- name: generated-changelog +params: + GITHUB_ORGANIZATION: + GITHUB_REPO: + GITHUB_USERNAME: + GITHUB_TOKEN: + RELEASE_TYPE: +run: + path: git-repo/ci/scripts/generate-changelog.sh