diff --git a/.github/workflows/continuous-integration-workflow.yml b/.github/workflows/continuous-integration-workflow.yml index 4e476a2e00..706333eeca 100644 --- a/.github/workflows/continuous-integration-workflow.yml +++ b/.github/workflows/continuous-integration-workflow.yml @@ -44,22 +44,9 @@ jobs: should-deploy-schema: ${{ needs.build.outputs.should-deploy-artifacts }} java-version: 25 secrets: inherit - perform-release: - name: Perform Release - needs: [ deploy-artifacts, deploy-schema ] - uses: spring-io/spring-security-release-tools/.github/workflows/perform-release.yml@b92832ecbc7cbe969201e6beafbde0ee400cf095 # v1.0.15 - with: - should-perform-release: ${{ needs.deploy-artifacts.outputs.artifacts-deployed }} - project-version: ${{ needs.deploy-artifacts.outputs.project-version }} - milestone-repo-url: https://repo1.maven.org/maven2 - release-repo-url: https://repo1.maven.org/maven2 - artifact-path: org/springframework/security/spring-security-core - slack-announcing-id: spring-security-announcing - java-version: 25 - secrets: inherit send-notification: name: Send Notification - needs: [ perform-release ] + needs: [ deploy-artifacts, deploy-schema ] if: ${{ !success() }} runs-on: ubuntu-latest steps: diff --git a/.github/workflows/finalize-release.yml b/.github/workflows/finalize-release.yml deleted file mode 100644 index 687279b023..0000000000 --- a/.github/workflows/finalize-release.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Finalize Release - -on: - workflow_dispatch: # Manual trigger - inputs: - version: - description: The Spring Security release to finalize (e.g. 7.0.0-RC2) - required: true - -env: - DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} - -permissions: - contents: read - -jobs: - perform-release: - name: Perform Release - uses: spring-io/spring-security-release-tools/.github/workflows/perform-release.yml@b92832ecbc7cbe969201e6beafbde0ee400cf095 # v1.0.15 - with: - should-perform-release: true - project-version: ${{ inputs.version }} - milestone-repo-url: https://repo1.maven.org/maven2 - release-repo-url: https://repo1.maven.org/maven2 - artifact-path: org/springframework/security/spring-security-core - slack-announcing-id: spring-security-announcing - secrets: inherit diff --git a/.github/workflows/release-scheduler.yml b/.github/workflows/release-scheduler.yml deleted file mode 100644 index 2806ed74a4..0000000000 --- a/.github/workflows/release-scheduler.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Release Scheduler -on: - schedule: - - cron: '15 15 * * MON' # Every Monday at 3: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, 7.0.x, 6.5.x, 6.4.x, 6.3.x ] - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - 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 deleted file mode 100644 index 455226686d..0000000000 --- a/.github/workflows/update-scheduled-release-version.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Update Scheduled Release Version - -on: - workflow_dispatch: # Manual trigger only. Triggered by release-scheduler.yml on main. - -permissions: - contents: read - -jobs: - update-scheduled-release-version: - name: Update Scheduled Release Version - uses: spring-io/spring-security-release-tools/.github/workflows/update-scheduled-release-version.yml@b92832ecbc7cbe969201e6beafbde0ee400cf095 # v1.0.15 - secrets: inherit - send-notification: - name: Send Notification - needs: [ update-scheduled-release-version ] - if: ${{ failure() || cancelled() }} - runs-on: ubuntu-latest - steps: - - name: Send Notification - uses: spring-io/spring-security-release-tools/.github/actions/send-notification@b92832ecbc7cbe969201e6beafbde0ee400cf095 # v1.0.15 - with: - webhook-url: ${{ secrets.SPRING_SECURITY_CI_GCHAT_WEBHOOK_URL }} \ No newline at end of file diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index 010b5adb60..06a3936de3 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -14,6 +14,16 @@ repositories { gradlePluginPortal() mavenCentral() maven { url = 'https://repo.spring.io/snapshot' } + if (System.getenv("RELEASE_TRAIN_MAVEN_REPOSITORY_URL") != null) { + maven { + name = "Release Train" + url = System.getenv("RELEASE_TRAIN_MAVEN_REPOSITORY_URL") + credentials { + username = System.getenv("RELEASE_TRAIN_MAVEN_REPOSITORY_USERNAME") + password = System.getenv("RELEASE_TRAIN_MAVEN_REPOSITORY_PASSWORD") + } + } + } } sourceSets { diff --git a/buildSrc/src/main/groovy/io/spring/gradle/convention/RepositoryConventionPlugin.groovy b/buildSrc/src/main/groovy/io/spring/gradle/convention/RepositoryConventionPlugin.groovy index 5bd68fb172..268b52a0be 100644 --- a/buildSrc/src/main/groovy/io/spring/gradle/convention/RepositoryConventionPlugin.groovy +++ b/buildSrc/src/main/groovy/io/spring/gradle/convention/RepositoryConventionPlugin.groovy @@ -43,6 +43,16 @@ class RepositoryConventionPlugin implements Plugin { } } mavenCentral() + if (System.getenv("RELEASE_TRAIN_MAVEN_REPOSITORY_URL") != null) { + maven { + name = "Release Train" + url = System.getenv("RELEASE_TRAIN_MAVEN_REPOSITORY_URL") + credentials { + username = System.getenv("RELEASE_TRAIN_MAVEN_REPOSITORY_USERNAME") + password = System.getenv("RELEASE_TRAIN_MAVEN_REPOSITORY_PASSWORD") + } + } + } if (isSnapshot) { maven { name = 'artifactory-snapshot' diff --git a/buildSrc/src/main/java/org/springframework/gradle/maven/MavenPublishingConventionsPlugin.java b/buildSrc/src/main/java/org/springframework/gradle/maven/MavenPublishingConventionsPlugin.java index d82b6d9436..dd36daa4e8 100644 --- a/buildSrc/src/main/java/org/springframework/gradle/maven/MavenPublishingConventionsPlugin.java +++ b/buildSrc/src/main/java/org/springframework/gradle/maven/MavenPublishingConventionsPlugin.java @@ -22,6 +22,12 @@ public class MavenPublishingConventionsPlugin implements Plugin { @Override public void execute(MavenPublishPlugin mavenPublish) { PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class); + if (project.hasProperty("deploymentRepository")) { + publishing.getRepositories().maven((mavenRepository) -> { + mavenRepository.setUrl(project.property("deploymentRepository")); + mavenRepository.setName("deployment"); + }); + } publishing.getPublications().withType(MavenPublication.class) .all((mavenPublication) -> MavenPublishingConventionsPlugin.this.customizePom(mavenPublication.getPom(), project)); MavenPublishingConventionsPlugin.this.customizeJavaPlugin(project);