diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..609b526e64 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,119 @@ +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: sunday + 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.jetbrains.dokka + - org.apache.activemq* + - org.aspectj* + - org.awaitility:awaitility + - org.apache.commons:commons-dbcp2 + - org.apache.derby + - com.icegreen:greenmail + - org.hibernate.orm* + - org.testcontainers* + - org.hsqldb:hsqldb + - com.h2database:h2 + - org.postgresql:postgresql + - mysql:mysql-connector-java + - com.oracle.database.jdbc:ojdbc11 + - org.apache.tomcat.embed:tomcat-embed-websocket + - org.xmlunit:xmlunit-assertj3 + - com.thoughtworks.xstream:xstream + + - package-ecosystem: gradle + target-branch: 6.0.x + directory: / + schedule: + interval: monthly + registries: + - spring-commercial + 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 + - io.micrometer:micrometer-docs-generator + - com.willowtreeapps.assertk:assertk-jvm + - org.jetbrains.dokka + - org.apache.activemq* + - org.aspectj* + - org.awaitility:awaitility + - org.apache.commons:commons-dbcp2 + - org.apache.derby + - com.icegreen:greenmail + - org.hibernate.orm* + - org.testcontainers* + - org.hsqldb:hsqldb + - com.h2database:h2 + - org.postgresql:postgresql + - mysql:mysql-connector-java + - com.oracle.database.jdbc:ojdbc11 + - org.apache.tomcat.embed:tomcat-embed-websocket + - org.xmlunit:xmlunit-assertj3 + - com.thoughtworks.xstream:xstream + + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly + day: saturday + labels: + - 'type: task' + groups: + development-dependencies: + patterns: + - '*' + + - package-ecosystem: github-actions + target-branch: 6.0.x + directory: / + schedule: + interval: monthly + labels: + - 'type: task' + groups: + development-dependencies: + patterns: + - '*' \ No newline at end of file diff --git a/.github/workflows/ci-snapshot.yml b/.github/workflows/ci-snapshot.yml index 3e8ebb6a6c..346f72d1a3 100644 --- a/.github/workflows/ci-snapshot.yml +++ b/.github/workflows/ci-snapshot.yml @@ -5,7 +5,6 @@ on: push: branches: - - main - '*.x' concurrency: @@ -15,7 +14,10 @@ concurrency: 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 0000000000..79fbc54091 --- /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 743781a0dc..d30917c686 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 cefa6bf31a..bbfe2ce5bd 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 f7e832bdef..ab7bb958ae 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 baee455d61..baee2231cf 100644 --- a/.github/workflows/verify-staged-artifacts.yml +++ b/.github/workflows/verify-staged-artifacts.yml @@ -9,9 +9,8 @@ on: type: string env: - DEVELOCITY_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }} - ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} - ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} + ARTIFACTORY_USERNAME: ${{ secrets.COMMERCIAL_ARTIFACTORY_USERNAME }} + ARTIFACTORY_PASSWORD: ${{ secrets.COMMERCIAL_ARTIFACTORY_PASSWORD }} jobs: verify-staged-with-samples: @@ -33,7 +32,14 @@ jobs: printf "allprojects { repositories { maven { - url 'https://repo.spring.io/libs-staging-local' + url 'https://repo.spring.vmware.com/artifactory/spring-commercial-staging-local' + credentials { + username = '$ARTIFACTORY_USERNAME' + password = '$ARTIFACTORY_PASSWORD' + } + } + maven { + url 'https://repo.spring.vmware.com/artifactory/spring-commercial' credentials { username = '$ARTIFACTORY_USERNAME' password = '$ARTIFACTORY_PASSWORD' diff --git a/build.gradle b/build.gradle index 2ab881beee..6085d4bf16 100644 --- a/build.gradle +++ b/build.gradle @@ -178,6 +178,10 @@ allprojects { } +apply from: 'publish-maven.gradle' +apply from: 'commercial-settings.gradle' +apply from: 'docs.gradle' + configure(javaProjects) { subproject -> apply plugin: 'java-library' apply plugin: 'eclipse' @@ -186,8 +190,6 @@ configure(javaProjects) { subproject -> apply plugin: 'kotlin' apply plugin: 'kotlin-spring' - apply from: "${rootDir}/gradle/publish-maven.gradle" - sourceSets { test { resources { @@ -1102,7 +1104,6 @@ project('spring-integration-bom') { description = 'Spring Integration (Bill of Materials)' apply plugin: 'java-platform' - apply from: "${rootDir}/gradle/publish-maven.gradle" dependencies { constraints { @@ -1152,8 +1153,6 @@ dokkaHtmlMultiModule { outputDirectory.set(file("$buildDir/kdoc")) } -apply from: "${rootDir}/gradle/docs.gradle" - task schemaZip(type: Zip) { group = 'Distribution' archiveClassifier = 'schema' @@ -1265,8 +1264,6 @@ task dist(dependsOn: assemble) { description = 'Builds -dist, -docs and -schema distribution archives.' } -apply from: "${rootDir}/gradle/publish-maven.gradle" - publishing { publications { mavenJava(MavenPublication) { @@ -1275,4 +1272,4 @@ publishing { artifact distZip } } -} +} \ No newline at end of file diff --git a/commercial-settings.gradle b/commercial-settings.gradle new file mode 100644 index 0000000000..15175d5034 --- /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/docs.gradle b/docs.gradle similarity index 100% rename from gradle/docs.gradle rename to docs.gradle diff --git a/publish-maven.gradle b/publish-maven.gradle new file mode 100644 index 0000000000..5c8e0225a8 --- /dev/null +++ b/publish-maven.gradle @@ -0,0 +1,65 @@ +allprojects { + apply plugin: 'maven-publish' + + publishing { + publications { + mavenJava(MavenPublication) { + pom { + afterEvaluate { + name = project.description + description = project.description + } + url = linkScmUrl + organization { + name = 'Spring IO' + url = 'https://spring.io/projects/spring-integration' + } + licenses { + license { + name = 'Apache License, Version 2.0' + url = 'https://www.apache.org/licenses/LICENSE-2.0.txt' + distribution = 'repo' + } + } + scm { + url = linkScmUrl + connection = linkScmConnection + developerConnection = linkScmDevConnection + } + developers { + developer { + id = 'artembilan' + name = 'Artem Bilan' + email = 'artem.bilan@broadcom.com' + roles = ['project lead'] + } + developer { + id = 'garyrussell' + name = 'Gary Russell' + email = 'github@gprussell.net' + roles = ['project lead emeritus'] + } + developer { + id = 'markfisher' + name = 'Mark Fisher' + email = 'mark.ryan.fisher@gmail.com' + roles = ['project founder and lead emeritus'] + } + } + issueManagement { + system = 'GitHub' + url = linkIssue + } + } + versionMapping { + usage('java-api') { + fromResolutionResult() + } + usage('java-runtime') { + fromResolutionResult() + } + } + } + } + } +} \ No newline at end of file