diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..cf72732f --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,53 @@ +version: 2 +registries: + spring-commercial: + type: maven-repository + url: https://repo.spring.vmware.com/artifactory/spring-commercial + username: ${{ secrets.COMMERCIAL_ARTIFACTORY_RO_USERNAME }} + password: ${{ secrets.COMMERCIAL_ARTIFACTORY_RO_PASSWORD }} + +updates: + + - package-ecosystem: gradle + directory: / + schedule: + interval: weekly + day: saturday + ignore: + - dependency-name: '*' + update-types: + - version-update:semver-major + - version-update:semver-minor + open-pull-requests-limit: 10 + labels: + - 'type: dependency-upgrade' + groups: + development-dependencies: + update-types: + - patch + patterns: + - com.gradle.enterprise + - com.github.spotbugs + - io.spring.* + - org.ajoberstar.grgit + - org.antora + - io.micrometer:micrometer-docs-generator + - com.willowtreeapps.assertk:assertk-jvm + - org.hibernate.validator:hibernate-validator + - org.apache.httpcomponents.client5:httpclient5 + - org.awaitility:awaitility + - org.xerial.snappy:snappy-java + - org.lz4:lz4-java + - com.github.luben:zstd-jni + + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly + day: saturday + labels: + - 'type: task' + groups: + development-dependencies: + patterns: + - '*' diff --git a/.github/workflows/auto-cherry-pick.yml b/.github/workflows/auto-cherry-pick.yml new file mode 100644 index 00000000..22251e2d --- /dev/null +++ b/.github/workflows/auto-cherry-pick.yml @@ -0,0 +1,12 @@ +name: Auto Cherry-Pick + +on: + push: + branches: + - '*.x' + +jobs: + cherry-pick-commit: + uses: spring-io/spring-github-workflows/.github/workflows/spring-cherry-pick.yml@main + secrets: + GH_ACTIONS_REPO_TOKEN: ${{ secrets.GH_ACTIONS_REPO_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/ci-snapshot.yml b/.github/workflows/ci-snapshot.yml index a07d0904..346f72d1 100644 --- a/.github/workflows/ci-snapshot.yml +++ b/.github/workflows/ci-snapshot.yml @@ -2,15 +2,22 @@ name: CI SNAPSHOT on: workflow_dispatch: + push: branches: - - main - '*.x' +concurrency: + group: group-snapshot-for-${{ github.ref }} + cancel-in-progress: true + jobs: build-snapshot: uses: spring-io/spring-github-workflows/.github/workflows/spring-artifactory-gradle-snapshot.yml@main + with: + artifactoryUrl: https://repo.spring.vmware.com + targetRepository: spring-commercial-snapshot-local + artifactoryProjectKey: spring secrets: - GRADLE_ENTERPRISE_SECRET_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }} - ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} - ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} \ No newline at end of file + ARTIFACTORY_USERNAME: ${{ secrets.COMMERCIAL_ARTIFACTORY_USERNAME }} + ARTIFACTORY_PASSWORD: ${{ secrets.COMMERCIAL_ARTIFACTORY_PASSWORD }} diff --git a/.github/workflows/distribute-spring-enterprise.yml b/.github/workflows/distribute-spring-enterprise.yml new file mode 100644 index 00000000..79fbc540 --- /dev/null +++ b/.github/workflows/distribute-spring-enterprise.yml @@ -0,0 +1,28 @@ +name: Distribute Release to Spring Enterprise + +on: + workflow_dispatch: + inputs: + releaseVersion: + description: 'The release version of the artifacts to distribute' + required: true + buildName: + description: 'The Artifactory Build Name' + required: true + buildNumber: + description: 'The Artifactory Build Number' + required: true + + +jobs: + distribute-release-to-spring-enterprise: + uses: spring-io/spring-github-workflows/.github/workflows/spring-enterprise-release-bundle.yml@main + with: + artifactoryUrl: https://usw1.packages.broadcom.com + bundleName: TNZ-${{ github.event.repository.name }} + releaseVersion: ${{ inputs.releaseVersion }} + buildName: ${{ inputs.buildName }} + buildNumber: ${{ inputs.buildNumber }} + secrets: + ARTIFACTORY_USERNAME: ${{ secrets.COMMERCIAL_ARTIFACTORY_USW1_USERNAME }} + ARTIFACTORY_PASSWORD: ${{ secrets.COMMERCIAL_ARTIFACTORY_USW1_PASSWORD }} \ No newline at end of file diff --git a/.github/workflows/merge-dependabot-pr.yml b/.github/workflows/merge-dependabot-pr.yml index 743781a0..d30917c6 100644 --- a/.github/workflows/merge-dependabot-pr.yml +++ b/.github/workflows/merge-dependabot-pr.yml @@ -3,7 +3,6 @@ name: Merge Dependabot PR on: pull_request: branches: - - main - '*.x' run-name: Merge Dependabot PR ${{ github.ref_name }} diff --git a/.github/workflows/pr-build.yml b/.github/workflows/pr-build.yml index cefa6bf3..bbfe2ce5 100644 --- a/.github/workflows/pr-build.yml +++ b/.github/workflows/pr-build.yml @@ -3,9 +3,11 @@ name: Pull Request Build on: pull_request: branches: - - main - '*.x' jobs: build-pull-request: uses: spring-io/spring-github-workflows/.github/workflows/spring-gradle-pull-request-build.yml@main + secrets: + ARTIFACTORY_USERNAME: ${{ secrets.COMMERCIAL_ARTIFACTORY_RO_USERNAME }} + ARTIFACTORY_PASSWORD: ${{ secrets.COMMERCIAL_ARTIFACTORY_RO_PASSWORD }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f7e832bd..ab7bb958 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,16 +13,16 @@ jobs: issues: write uses: spring-io/spring-github-workflows/.github/workflows/spring-artifactory-gradle-release.yml@main + with: + artifactoryUrl: https://repo.spring.vmware.com + stagingRepository: spring-commercial-staging-local + targetReleaseRepository: spring-commercial-release-local + artifactoryProjectKey: spring secrets: GH_ACTIONS_REPO_TOKEN: ${{ secrets.GH_ACTIONS_REPO_TOKEN }} - GRADLE_ENTERPRISE_SECRET_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }} - JF_ARTIFACTORY_SPRING: ${{ secrets.JF_ARTIFACTORY_SPRING }} - ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} - ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} - OSSRH_URL: ${{ secrets.OSSRH_URL }} - OSSRH_S01_TOKEN_USERNAME: ${{ secrets.OSSRH_S01_TOKEN_USERNAME }} - OSSRH_S01_TOKEN_PASSWORD: ${{ secrets.OSSRH_S01_TOKEN_PASSWORD }} - OSSRH_STAGING_PROFILE_NAME: ${{ secrets.OSSRH_STAGING_PROFILE_NAME }} + JF_ARTIFACTORY_SPRING: ${{ secrets.COMMERCIAL_JF_ARTIFACTORY_SPRING }} + ARTIFACTORY_USERNAME: ${{ secrets.COMMERCIAL_ARTIFACTORY_USERNAME }} + ARTIFACTORY_PASSWORD: ${{ secrets.COMMERCIAL_ARTIFACTORY_PASSWORD }} GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} SPRING_RELEASE_SLACK_WEBHOOK_URL: ${{ secrets.SPRING_RELEASE_SLACK_WEBHOOK_URL }} \ No newline at end of file diff --git a/.github/workflows/verify-staged-artifacts.yml b/.github/workflows/verify-staged-artifacts.yml index 5f9b32bd..f24fd5b7 100644 --- a/.github/workflows/verify-staged-artifacts.yml +++ b/.github/workflows/verify-staged-artifacts.yml @@ -8,48 +8,40 @@ on: required: true type: string +env: + ARTIFACTORY_USERNAME: ${{ secrets.COMMERCIAL_ARTIFACTORY_USERNAME }} + ARTIFACTORY_PASSWORD: ${{ secrets.COMMERCIAL_ARTIFACTORY_PASSWORD }} + jobs: verify-staged-with-samples: runs-on: ubuntu-latest - steps: - - name: Start RabbitMQ - uses: namoshek/rabbitmq-github-action@v1 - with: - ports: '5672:5672 15672:15672 5552:5552' - plugins: rabbitmq_stream,rabbitmq_management - - name: Checkout Samples Repo uses: actions/checkout@v4 with: - repository: spring-projects/spring-amqp-samples - ref: ${{ github.ref_name }} + repository: spring-projects/spring-integration-commercial + ref: 6.1.x show-progress: false - - name: Set up JDK - uses: actions/setup-java@v4 - with: - distribution: temurin - java-version: 17 - cache: 'maven' + - name: Set up Gradle + uses: spring-io/spring-gradle-build-action@v2 - - uses: jfrog/setup-jfrog-cli@v4 - env: - JF_ENV_SPRING: ${{ secrets.JF_ARTIFACTORY_SPRING }} - - - name: Configure JFrog Cli - run: jf mvnc --repo-resolve-releases=libs-release-staging --repo-resolve-snapshots=snapshot - - - name: Verify samples against staged release + - name: Prepare Spring Integration project against Staging run: | - mvn versions:set -DnewVersion=${{ inputs.releaseVersion }} -DgenerateBackupPoms=false -DprocessAllModules=true -B -ntp - jf mvn verify -B -ntp + printf "allprojects { + repositories { + maven { + url 'https://repo.spring.vmware.com/artifactory/spring-commercial-staging-local' + credentials { + username = '$ARTIFACTORY_USERNAME' + password = '$ARTIFACTORY_PASSWORD' + } + } + } + }" > staging-repo-init.gradle + + sed -i "1,/springAmqpVersion.*/s/springAmqpVersion.*/springAmqpVersion='${{ inputs.releaseVersion }}'/" build.gradle - - name: Capture Test Results - if: failure() - uses: actions/upload-artifact@v4 - with: - name: test-results - path: '**/target/surefire-reports/**/*.*' - retention-days: 1 \ No newline at end of file + - name: Verify Spring Integration AMQP module against staged release + run: gradle :spring-integration-amqp:check --init-script staging-repo-init.gradle \ No newline at end of file diff --git a/build.gradle b/build.gradle index 66d7ca6d..bf2ab721 100644 --- a/build.gradle +++ b/build.gradle @@ -125,10 +125,12 @@ ext { ] as String[] } +apply from: 'publish-maven.gradle' +apply from: 'commercial-settings.gradle' + configure(javaProjects) { subproject -> apply plugin: 'java-library' apply plugin: 'java' - apply from: "${rootProject.projectDir}/gradle/publish-maven.gradle" apply plugin: 'eclipse' apply plugin: 'idea' apply plugin: 'project-report' @@ -362,7 +364,6 @@ project('spring-amqp-bom') { description = 'Spring for RabbitMQ (Bill of Materials)' apply plugin: 'java-platform' - apply from: "${rootDir}/gradle/publish-maven.gradle" dependencies { constraints { @@ -785,8 +786,6 @@ task dist(dependsOn: assemble) { description = 'Builds -dist, -docs and -schema distribution archives.' } -apply from: "${rootProject.projectDir}/gradle/publish-maven.gradle" - publishing { publications { mavenJava(MavenPublication) { diff --git a/commercial-settings.gradle b/commercial-settings.gradle new file mode 100644 index 00000000..15175d50 --- /dev/null +++ b/commercial-settings.gradle @@ -0,0 +1,32 @@ +def artifactoryUsername = System.getenv('ARTIFACTORY_USERNAME') +def artifactoryPassword = System.getenv('ARTIFACTORY_PASSWORD') + +allprojects { + + repositories { + if (isCI) { + maven { + url 'https://repo.spring.vmware.com/artifactory/spring-commercial' + credentials { + username = artifactoryUsername + password = artifactoryPassword + } + } + if (version.endsWith('SNAPSHOT')) { + maven { + url 'https://repo.spring.vmware.com/artifactory/spring-commercial-snapshot-local' + credentials { + username = artifactoryUsername + password = artifactoryPassword + } + } + } + } else { + maven { url 'https://repo.spring.io/spring-commercial-remote' } + if (version.endsWith('SNAPSHOT')) { + maven { url 'https://repo.spring.io/spring-commercial-snapshot-remote' } + } + } + } + +} \ No newline at end of file diff --git a/gradle/publish-maven.gradle b/publish-maven.gradle similarity index 100% rename from gradle/publish-maven.gradle rename to publish-maven.gradle