From 6a67459654debbd8a277c46992aff7eb2444b73e Mon Sep 17 00:00:00 2001 From: Josh Cummings Date: Thu, 1 Feb 2024 12:10:03 -0700 Subject: [PATCH] Automate Releases Closes gh-856 --- .github/workflows/release-scheduler.yml | 27 +++++++++++++++++++ .../update-scheduled-release-version.yml | 10 +++++++ build.gradle | 12 +++++++-- buildSrc/build.gradle | 1 + 4 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/release-scheduler.yml create mode 100644 .github/workflows/update-scheduled-release-version.yml diff --git a/.github/workflows/release-scheduler.yml b/.github/workflows/release-scheduler.yml new file mode 100644 index 00000000..ffc6d008 --- /dev/null +++ b/.github/workflows/release-scheduler.yml @@ -0,0 +1,27 @@ +name: Release Scheduler + +on: + schedule: + - cron: '15 13 * * THU' # Every Tuesday at 13:15pm UTC + workflow_dispatch: + +permissions: read-all + +jobs: + dispatch_scheduled_releases: + name: Dispatch scheduled releases + if: ${{ github.repository_owner == 'spring-projects' }} + strategy: + matrix: + # List of active maintenance branches. + branch: [ main, 3.1.x, 2.4.x ] + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 1 + - name: Dispatch + env: + GH_TOKEN: ${{ secrets.GH_ACTIONS_REPO_TOKEN }} + run: gh workflow run update-scheduled-release-version.yml -r ${{ matrix.branch }} diff --git a/.github/workflows/update-scheduled-release-version.yml b/.github/workflows/update-scheduled-release-version.yml new file mode 100644 index 00000000..5c0a574c --- /dev/null +++ b/.github/workflows/update-scheduled-release-version.yml @@ -0,0 +1,10 @@ +name: Update Scheduled Release Version + +on: + workflow_dispatch: # Manual trigger only. Triggered by release-scheduler.yml on main. + +jobs: + update-scheduled-release-version: + name: Update Scheduled Release Version + uses: spring-io/spring-security-release-tools/.github/workflows/update-scheduled-release-version.yml@v1 + secrets: inherit diff --git a/build.gradle b/build.gradle index 4b801219..703e9209 100644 --- a/build.gradle +++ b/build.gradle @@ -21,6 +21,7 @@ plugins { apply plugin: 'io.spring.convention.root' apply plugin: 'io.spring.convention.docs' apply plugin: 'io.spring.javaformat' +apply plugin: 'io.spring.security.release' apply plugin: 's101' group = "org.springframework.ldap" @@ -49,14 +50,21 @@ antora { options = [clean: true, fetch: !project.gradle.startParameter.offline, stacktrace: true] } - - tasks.named("generateAntoraYml") { asciidocAttributes = project.provider( { return ['project-version': project.version] } ) } +springRelease { + repositoryOwner = "spring-projects" + repositoryName = "spring-ldap" + weekOfMonth = 2 + dayOfWeek = 4 + referenceDocUrl = "https://docs.spring.io/spring-ldap/reference/{version}/index.html" + apiDocUrl = "https://docs.spring.io/spring-ldap/docs/{version}/api/" + replaceSnapshotVersionInReferenceDocUrl = true +} s101 { configurationDirectory = project.file("etc/s101") diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index 232ffdcd..af55f4db 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -88,6 +88,7 @@ dependencies { implementation 'com.github.ben-manes:gradle-versions-plugin:0.38.0' implementation 'com.github.spullara.mustache.java:compiler:0.9.4' implementation 'io.spring.javaformat:spring-javaformat-gradle-plugin:0.0.15' + implementation 'io.spring.gradle:spring-security-release-plugin:1.0.1' implementation 'io.spring.nohttp:nohttp-gradle:0.0.10' implementation 'net.sourceforge.htmlunit:htmlunit:2.37.0' implementation 'org.asciidoctor:asciidoctor-gradle-jvm:3.3.2'