diff --git a/.github/CompatibilityUtils.java b/.build/CompatibilityUtils.java similarity index 100% rename from .github/CompatibilityUtils.java rename to .build/CompatibilityUtils.java diff --git a/.github/Helper.java b/.build/Helper.java similarity index 100% rename from .github/Helper.java rename to .build/Helper.java diff --git a/.github/PreRelease.java b/.build/PreRelease.java similarity index 100% rename from .github/PreRelease.java rename to .build/PreRelease.java diff --git a/.github/PulsarConfigDoc.java b/.build/PulsarConfigDoc.java similarity index 98% rename from .github/PulsarConfigDoc.java rename to .build/PulsarConfigDoc.java index 78c394e96e..c3b5a52998 100755 --- a/.github/PulsarConfigDoc.java +++ b/.build/PulsarConfigDoc.java @@ -34,7 +34,7 @@ * - Config file (whether the property is settable from a configuration file * - Default value *

- * Run with `.github/PulsarConfigDoc.java -d documentation/src/main/docs/pulsar/config` + * Run with `.build/PulsarConfigDoc.java -d documentation/src/main/docs/pulsar/config` *

*/ @CommandLine.Command(name = "pulsar-config-doc", mixinStandardHelpOptions = true, version = "0.1", diff --git a/.github/ci-maven-settings.xml b/.build/ci-maven-settings.xml similarity index 100% rename from .github/ci-maven-settings.xml rename to .build/ci-maven-settings.xml diff --git a/.github/maven-settings.xml.gpg b/.build/maven-settings.xml.gpg similarity index 100% rename from .github/maven-settings.xml.gpg rename to .build/maven-settings.xml.gpg diff --git a/.github/smallrye-sign.asc.gpg b/.build/smallrye-sign.asc.gpg similarity index 100% rename from .github/smallrye-sign.asc.gpg rename to .build/smallrye-sign.asc.gpg diff --git a/.github/PostRelease.java b/.github/PostRelease.java deleted file mode 100755 index 9d70f27989..0000000000 --- a/.github/PostRelease.java +++ /dev/null @@ -1,164 +0,0 @@ -///usr/bin/env jbang "$0" "$@" ; exit $? -//DEPS org.kohsuke:github-api:1.117 -//DEPS info.picocli:picocli:4.5.0 -//SOURCES Helper.java - -import org.kohsuke.github.*; -import picocli.CommandLine; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.util.List; -import java.util.Optional; -import java.util.concurrent.Callable; -import java.util.stream.Collectors; - -import static helpers.Helper.*; - -/** - * Script run after the release. - * The script does the following action in this order: - * - checks that the previous milestone is closed, close it if not - * - checks that the next milestone exists, or create it if not - * - creates the Github release and compute the release notes - *

- * Run with `./PostRelease.java --token=GITHUB_TOKEN --release-version=version - *

- * 1. The github token is mandatory. - *

- * The version is taken from the last tag if not set. - */ -@CommandLine.Command(name = "post-release", mixinStandardHelpOptions = true, version = "0.1", - description = "Post-Release Check") -public class PostRelease implements Callable { - - @CommandLine.Option(names = "--token", description = "The Github Token", required = true) - private String token; - - @CommandLine.Option(names = "--release-version", description = "Set the released version", required = true) - private String releaseVersion; - - private static final String REPO = "smallrye/smallrye-reactive-messaging"; - - public static void main(String... args) { - int exitCode = new CommandLine(new PostRelease()).execute(args); - System.exit(exitCode); - } - - @Override - public Integer call() throws Exception { - GitHub gitHub = new GitHubBuilder().withOAuthToken(token).build(); - GHRepository repository = gitHub.getRepository(REPO); - - List tags = repository.listTags().toList(); - List milestones = repository.listMilestones(GHIssueState.ALL).toList(); - - info("Running post-release checks for release %s", releaseVersion); - - // Check that the tag associated with the release version exists - GHTag tag = getTag(releaseVersion, tags); - - assert tag != null; - - // Check that the milestone exists (this check has already been done during the pre-release checks, just to be double sure) - GHMilestone milestone = milestones.stream().filter(m -> m.getTitle().equals(releaseVersion)).findFirst() - .orElse(null); - failIfTrue(() -> milestone == null, "Unable to find the milestone %s", releaseVersion); - assert milestone != null; - success("Milestone %s found (%s)", milestone.getTitle(), milestone.getHtmlUrl()); - - success("Post-release check successful"); - info("Starting post-release tasks"); - - // Close milestone - if (milestone.getState() != GHMilestoneState.CLOSED) { - milestone.close(); - success("Milestone %s closed (%s)", milestone.getTitle(), milestone.getHtmlUrl()); - } else { - success("Milestone %s already closed (%s)", milestone.getTitle(), milestone.getHtmlUrl()); - } - - // Compute next version - String nextVersion = getNextVersion(releaseVersion); - success("Next version will be %s", nextVersion); - - // Create new milestone if it does not already exist - GHMilestone nextMilestone = milestones.stream().filter(m -> m.getTitle().equals(nextVersion)).findFirst() - .orElse(null); - if (nextMilestone != null) { - success("Next milestone (%s) already exists: %s", nextMilestone.getTitle(), nextMilestone.getHtmlUrl()); - } else { - nextMilestone = repository.createMilestone(nextVersion, null); - success("Next milestone (%s) created: %s", nextMilestone.getTitle(), nextMilestone.getHtmlUrl()); - } - - // Compute the release notes and create releases - List issues = repository.getIssues(GHIssueState.CLOSED, milestone); - String description = createReleaseDescription(issues); - // Check if release already exists - GHRelease existingRelease = repository.getReleaseByTagName(tag.getName()); - if (existingRelease != null) { - info("Release %s already exists (%s) - skip release note generation", existingRelease.getName(), existingRelease.getHtmlUrl()); - info("Generated release notes:\n%s", description); - - if (existingRelease.isDraft()) { - existingRelease.update().draft(false); - success("Marked release %s as non-draft", existingRelease.getName()); - } - } else { - GHRelease release = repository.createRelease(releaseVersion) - .name(releaseVersion) - .body(description) - .create(); - success("Release %s created: %s", releaseVersion, release.getHtmlUrl()); - } - - completed("Post-Release done!"); - - return 0; - } - - private GHTag getTag(String releaseVersion, List tags) { - failIfTrue(tags::isEmpty, "No tags found in repository"); - Optional first = tags.stream().filter(tag -> tag.getName().equals(releaseVersion)).findFirst(); - if (first.isPresent()) { - success("Tag %s found", releaseVersion); - return first.get(); - } - fail("Unable to find the tag %s in the repository", releaseVersion); - return null; - } - - private String getNextVersion(String v) { - String[] segments = v.split("\\."); - if (segments.length < 3) { - fail("Invalid version %s, number of segments must be at least 3, found %d", v, segments.length); - } - - return String.format("%s.%d.0", segments[0], Integer.parseInt(segments[1]) + 1); - } - - private String createReleaseDescription(List issues) throws IOException { - File file = new File("target/differences.md"); - String compatibility = ""; - if (file.isFile()) { - compatibility += new String(Files.readAllBytes(file.toPath()), StandardCharsets.UTF_8); - } - - StringBuilder desc = new StringBuilder(); - desc.append("### Changelog\n\n"); - List list = issues.stream().map(this::line).collect(Collectors.toList()); - desc.append(String.join("\n", list)); - desc.append("\n"); - - desc.append(compatibility).append("\n"); - return desc.toString(); - } - - private String line(GHIssue issue) { - return String.format(" * [#%d](%s) - %s", issue.getNumber(), issue.getHtmlUrl(), issue.getTitle()); - } - -} diff --git a/.github/decrypt-secrets.sh b/.github/decrypt-secrets.sh deleted file mode 100644 index f8159b76e1..0000000000 --- a/.github/decrypt-secrets.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -echo "Decrypting smallrye signature" -gpg --quiet --batch --yes --decrypt --passphrase="${SECRET_FILES_PASSPHRASE}" \ - --output smallrye-sign.asc .github/smallrye-sign.asc.gpg - -echo "Decrypting Maven settings" -gpg --quiet --batch --yes --decrypt --passphrase="${SECRET_FILES_PASSPHRASE}" \ - --output maven-settings.xml .github/maven-settings.xml.gpg diff --git a/.github/deploy-doc.sh b/.github/deploy-doc.sh deleted file mode 100755 index cc0dbb9279..0000000000 --- a/.github/deploy-doc.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash -set -e - -VERSION=${1:-"$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)"} -REMOTE=${2:-"origin"} -REMOTE_URL=$(git remote get-url "${REMOTE}") - -echo "Deploying documentation version ${VERSION} to remote ${REMOTE} (${REMOTE_URL})" - -echo "Configuring environment" -cd documentation -pipenv install - -echo "Publishing" -mvn -B clean compile -pipenv run mike deploy --update-aliases --push --remote "${REMOTE}" "${VERSION}" "latest" -pipenv --rm - -echo "Done" diff --git a/.github/deploy.sh b/.github/deploy.sh deleted file mode 100644 index 5e121c36c8..0000000000 --- a/.github/deploy.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/env bash -set -e - -export TARGET=$1 - -init_gpg() { - gpg2 --fast-import --no-tty --batch --yes smallrye-sign.asc -} - -init_git() { - git config --global user.name "${GITHUB_ACTOR}" - git config --global user.email "smallrye@googlegroups.com" - - git update-index --assume-unchanged .github/deploy.sh - git update-index --assume-unchanged .github/decrypt-secrets.sh - git update-index --assume-unchanged .github/deploy-doc.sh -} - -compatibility_extract() { - echo "Extracting compatibility report" - jbang .github/CompatibilityUtils.java extract -} - -compatibility_clear() { - echo "Clearing difference justifications" - jbang .github/CompatibilityUtils.java clear - if [[ $(git diff --stat) != '' ]]; then - git add -A - git status - git commit -m "[POST-RELEASE] - Clearing breaking change justifications" - git push origin main - else - echo "No justifications cleared" - fi -} - -deploy_release() { - export RELEASE_VERSION="" - export BRANCH="HEAD" - export NEXT_VERSION="" - - if [ -f /tmp/release-version ]; then - RELEASE_VERSION=$(cat /tmp/release-version) - else - echo "'/tmp/release-version' required" - exit 1 - fi - - echo "Cutting release ${RELEASE_VERSION}" - mvn -B -fn clean - git checkout ${BRANCH} - HASH=$(git rev-parse --verify $BRANCH) - echo "Last commit is ${HASH} - creating detached branch" - git checkout -b "r${RELEASE_VERSION}" "${HASH}" - - echo "Update version to ${RELEASE_VERSION}" - mvn -B versions:set -DnewVersion="${RELEASE_VERSION}" -DgenerateBackupPoms=false -s maven-settings.xml - mvn -B clean verify -DskipTests -Prelease -s maven-settings.xml - - git commit -am "[RELEASE] - Bump version to ${RELEASE_VERSION}" - git tag "${RELEASE_VERSION}" - echo "Pushing tag to origin" - git push origin "${RELEASE_VERSION}" - - echo "Deploying release artifacts" - mvn -B deploy -DskipTests -Prelease -s maven-settings.xml - - echo "Building documentation" - .github/deploy-doc.sh - - if [ -f /tmp/next-version ]; then - NEXT_VERSION=$(cat /tmp/next-version) - echo "Setting main version to ${NEXT_VERSION}-SNAPSHOT" - git reset --hard - git checkout main - mvn -B versions:set -DnewVersion="${NEXT_VERSION}-SNAPSHOT" -DgenerateBackupPoms=false -s maven-settings.xml - git commit -am "[RELEASE] - Bump main branch to ${NEXT_VERSION}-SNAPSHOT" - git push origin main - echo "Main branch updated" - else - echo "No next version - skip updating the main version" - fi -} - -init_git -init_gpg - -if [[ ${TARGET} == "release" ]]; then - echo "Checking release prerequisites" - echo "Milestone set to ${MILESTONE}" - .github/Prelease.java --token="${GITHUB_TOKEN}" --release-version="${MILESTONE}" - - deploy_release - - echo "Executing post-release" - compatibility_extract - .github/PostRelease.java --token="${GITHUB_TOKEN}" - compatibility_clear -else - echo "Unknown environment: ${TARGET}" -fi diff --git a/.github/workflows/build-main-branches.yml b/.github/workflows/build-main-branches.yml index dfd4079f34..80c1c644de 100644 --- a/.github/workflows/build-main-branches.yml +++ b/.github/workflows/build-main-branches.yml @@ -53,7 +53,7 @@ jobs: env: MAVEN_OPTS: ${{ matrix.java.opts }} run: | - mvn -s .github/ci-maven-settings.xml -Dmaven.resolver.transport=wagon -B \ + mvn -s .build/ci-maven-settings.xml -Dmaven.resolver.transport=wagon -B \ clean install -Dtest-containers=true ${{ matrix.java.build_opts }} quality: @@ -76,7 +76,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_LOGIN }} run: | - mvn -s .github/ci-maven-settings.xml -B \ + mvn -s .build/ci-maven-settings.xml -B \ clean install sonar:sonar -Pcoverage \ -Dmaven.resolver.transport=wagon \ -Drevapi.skip=true \ diff --git a/.github/workflows/build-podman.yml b/.github/workflows/build-podman.yml index d39f480099..51704eed1e 100644 --- a/.github/workflows/build-podman.yml +++ b/.github/workflows/build-podman.yml @@ -72,5 +72,5 @@ jobs: env: MAVEN_OPTS: ${{ matrix.java.opts }} run: | - mvn -s .github/ci-maven-settings.xml -Dmaven.resolver.transport=wagon -B \ + mvn -s .build/ci-maven-settings.xml -Dmaven.resolver.transport=wagon -B \ clean install -Dtest-containers=true ${{ matrix.java.build_opts }} diff --git a/.github/workflows/build-pull.yml b/.github/workflows/build-pull.yml index 73532f91e1..64d7e3a451 100644 --- a/.github/workflows/build-pull.yml +++ b/.github/workflows/build-pull.yml @@ -52,7 +52,7 @@ jobs: env: MAVEN_OPTS: ${{ matrix.java.opts }} run: | - mvn -s .github/ci-maven-settings.xml -Dmaven.resolver.transport=wagon \ + mvn -s .build/ci-maven-settings.xml -Dmaven.resolver.transport=wagon \ -B clean install -Pcoverage -Dtest-containers=true ${{ matrix.java.build_opts }} - name: Codecov uses: codecov/codecov-action@v1.0.13 diff --git a/.github/workflows/push-release-to-maven-central.yml b/.github/workflows/push-release-to-maven-central.yml new file mode 100644 index 0000000000..b5d3382f5a --- /dev/null +++ b/.github/workflows/push-release-to-maven-central.yml @@ -0,0 +1,25 @@ +name: Push a release to Maven Central + +on: + push: + tags: + - '4.*' + +jobs: + deploy: + runs-on: ubuntu-latest + env: + SECRET_FILES_PASSPHRASE: ${{ secrets.SECRET_FILES_PASSPHRASE }} + steps: + - name: Git checkout + uses: actions/checkout@v4 + - name: Java setup + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: maven + - name: Install just + uses: taiki-e/install-action@just + - name: Deploy to Maven Central + run: just deploy-to-maven-central diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000000..5d98e3b38d --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,61 @@ +name: Release Smallrye Reactive Messaging + +on: + workflow_dispatch: + inputs: + previousVersion: + description: 'Previous version' + required: true + version: + description: 'Release version' + required: true + deployWebsite: + description: 'Shall we deploy the website?' + required: true + default: 'true' + clearRevAPI: + description: 'Shall we clear RevAPI justifications?' + required: true + default: 'true' + +jobs: + release: + runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} + RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }} + SECRET_FILES_PASSPHRASE: ${{ secrets.SECRET_FILES_PASSPHRASE }} + RELEASE_VERSION: ${{ github.event.inputs.version }} + DEPLOY_WEBSITE: ${{ github.event.inputs.deployWebsite }} + CLEAR_REVAPI: ${{ github.event.inputs.clearRevAPI }} + JRELEASER_TAG_NAME: ${{ github.event.inputs.version }} + JRELEASER_PREVIOUS_TAG_NAME: ${{ github.event.inputs.previousVersion }} + JRELEASER_GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} + + steps: + - name: Git checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.RELEASE_TOKEN }} + - name: Java setup + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: maven + - name: Install just + uses: taiki-e/install-action@just + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: 3.9 + cache: 'pipenv' + cache-dependency-path: documentation/Pipfile.lock + - name: Install pipenv + run: pip install pipenv + - name: Perform the release steps + run: | + curl -s "https://get.sdkman.io?rcupdate=false" | bash + source ~/.sdkman/bin/sdkman-init.sh && sdk install jbang + just perform-release diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000000..cb28b0e37c Binary files /dev/null and b/.mvn/wrapper/maven-wrapper.jar differ diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000000..d8b2495a1e --- /dev/null +++ b/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,18 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.1/apache-maven-3.9.1-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar diff --git a/api/pom.xml b/api/pom.xml index 46b48ac084..1407e43e1f 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -5,7 +5,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT smallrye-reactive-messaging-api diff --git a/documentation/pom.xml b/documentation/pom.xml index 0f6924af1b..03842ab774 100644 --- a/documentation/pom.xml +++ b/documentation/pom.xml @@ -7,7 +7,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT documentation diff --git a/examples/amqp-quickstart/pom.xml b/examples/amqp-quickstart/pom.xml index 4b45bbc371..a5ac29f868 100644 --- a/examples/amqp-quickstart/pom.xml +++ b/examples/amqp-quickstart/pom.xml @@ -5,7 +5,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT ../../pom.xml diff --git a/examples/kafka-quickstart-kotlin/pom.xml b/examples/kafka-quickstart-kotlin/pom.xml index 8dfc2ef172..48d32bc600 100644 --- a/examples/kafka-quickstart-kotlin/pom.xml +++ b/examples/kafka-quickstart-kotlin/pom.xml @@ -5,7 +5,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT ../../pom.xml diff --git a/examples/kafka-quickstart/pom.xml b/examples/kafka-quickstart/pom.xml index 550a496d0e..2c16744d72 100644 --- a/examples/kafka-quickstart/pom.xml +++ b/examples/kafka-quickstart/pom.xml @@ -5,7 +5,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT ../../pom.xml diff --git a/examples/mqtt-quickstart/pom.xml b/examples/mqtt-quickstart/pom.xml index 0436bdb469..253a84bfe6 100644 --- a/examples/mqtt-quickstart/pom.xml +++ b/examples/mqtt-quickstart/pom.xml @@ -5,7 +5,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT ../../pom.xml diff --git a/examples/quickstart/pom.xml b/examples/quickstart/pom.xml index f6db00388b..4d2b740760 100644 --- a/examples/quickstart/pom.xml +++ b/examples/quickstart/pom.xml @@ -5,7 +5,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT ../../pom.xml reactive-messaging-quickstart diff --git a/examples/rabbitmq-quickstart/pom.xml b/examples/rabbitmq-quickstart/pom.xml index 4ec9e8eda9..775fea6c30 100644 --- a/examples/rabbitmq-quickstart/pom.xml +++ b/examples/rabbitmq-quickstart/pom.xml @@ -5,7 +5,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT ../../pom.xml diff --git a/justfile b/justfile new file mode 100755 index 0000000000..0720e12605 --- /dev/null +++ b/justfile @@ -0,0 +1,116 @@ +set shell := ["bash", "-uc"] + +# Just echo the purpose of this file +_default: + @echo "This file is used to automate some release tasks" + @echo "(running in `pwd`)" + @just --list + +# Build locally without tests +build: + @echo "Building locally without tests" + ./mvnw clean install -DskipTests -T1C + +# Build locally with tests +test: + @echo "Testing locally" + ./mvnw clean verify + +# Build on CI without tests +build-ci: + ./mvnw -B -ntp -s .build/ci-maven-settings.xml clean verify -DskipTests + +# Test on CI with tests +test-ci: + ./mvnw -B -ntp -s .build/ci-maven-settings.xml clean verify + +# Perform a release +perform-release: pre-release release post-release + @echo "🎉 Successfully released Smallrye Reactive Messaging ${RELEASE_VERSION} 🚀" + +# Decrypt secrets +decrypt-secrets: + @if [[ -z "${SECRET_FILES_PASSPHRASE}" ]]; then exit 1; fi + @echo "🔐 Decrypting smallrye signature" + gpg --quiet --batch --yes --decrypt --passphrase="${SECRET_FILES_PASSPHRASE}" \ + --output smallrye-sign.asc .build/smallrye-sign.asc.gpg + @echo "🔐 Decrypting Maven settings" + gpg --quiet --batch --yes --decrypt --passphrase="${SECRET_FILES_PASSPHRASE}" \ + --output maven-settings.xml .build/maven-settings.xml.gpg + +# Initialize GnuPG +init-gpg: + @echo "🔐 GnuPG setup" + gpg --fast-import --no-tty --batch --yes smallrye-sign.asc + +# Initialize Git +init-git: + @echo "🔀 Git setup" + git config --global user.name "smallrye-ci" + git config --global user.email "smallrye@googlegroups.com" + +# Steps before releasing +pre-release: decrypt-secrets init-gpg init-git + @echo "🚀 Pre-release steps..." + @if [[ -z "${RELEASE_TOKEN}" ]]; then exit 1; fi + @if [[ -z "${RELEASE_VERSION}" ]]; then exit 1; fi + @echo "Pre-release verifications" + jbang .build/PreRelease.java --token=${RELEASE_TOKEN} --release-version=${RELEASE_VERSION} + @echo "Bump project version to ${RELEASE_VERSION}" + ./mvnw -B -ntp versions:set -DnewVersion=${RELEASE_VERSION} -DgenerateBackupPoms=false -s .build/ci-maven-settings.xml + @echo "Check that the project builds (no tests)" + ./mvnw -B -ntp clean install -Prelease -DskipTests -s maven-settings.xml + @echo "Check that the website builds" + -[[ ${DEPLOY_WEBSITE} == "true" ]] && cd documentation && pipenv install && pipenv run mkdocs build + +# Steps to release +release: pre-release + @echo "🚀 Release steps..." + @if [[ -z "${JRELEASER_TAG_NAME}" ]]; then exit 1; fi + @if [[ -z "${JRELEASER_PREVIOUS_TAG_NAME}" ]]; then exit 1; fi + @if [[ -z "${JRELEASER_GITHUB_TOKEN}" ]]; then exit 1; fi + @echo "Commit release version and push upstream" + git commit -am "[RELEASE] - Bump version to ${RELEASE_VERSION}" + git push + jbang .build/CompatibilityUtils.java extract + @echo "Call JReleaser" + ./mvnw -B -ntp jreleaser:full-release -Pjreleaser -pl :smallrye-reactive-messaging -s .build/ci-maven-settings.xml + @echo "Bump to 999-SNAPSHOT and push upstream" + ./mvnw -B -ntp versions:set -DnewVersion=999-SNAPSHOT -DgenerateBackupPoms=false -s .build/ci-maven-settings.xml + git commit -am "[RELEASE] - Next development version: 999-SNAPSHOT" + git push + +# Deploy to Maven Central +deploy-to-maven-central: decrypt-secrets init-gpg + @echo "🔖 Deploy to Maven Central" + ./mvnw -B -ntp deploy -Prelease -DskipTests -s maven-settings.xml + +# Steps post-release +post-release: + @echo "🚀 Post-release steps..." + -[[ ${CLEAR_REVAPI} == "true" ]] && just clear-revapi + -[[ ${DEPLOY_WEBSITE} == "true" ]] && just deploy-docs + +# Update Pulsar Connector Configuration Documentation +update-pulsar-config-docs: + @echo "📝 Updating Pulsar connector configuration docs" + jbang .build/PulsarConfigDoc.java -d documentation/src/main/docs/pulsar/config + +# Deploy documentation +deploy-docs: + @echo "📝 Deploying documentation to GitHub" + @if [[ -z "${RELEASE_VERSION}" ]]; then exit 1; fi + ./mvnw -B -ntp clean compile -f documentation && cd documentation && pipenv install && pipenv run mike deploy --update-aliases --push --remote origin "${RELEASE_VERSION}" "latest" + +# Clear RevAPI justifications +clear-revapi: + #!/usr/bin/env bash + jbang .build/CompatibilityUtils.java clear + if [[ $(git diff --stat) != '' ]]; then + git add -A + git status + git commit -m "[POST-RELEASE] - Clearing breaking change justifications" + git push + else + echo "No justifications cleared" + fi diff --git a/mvnw b/mvnw new file mode 100755 index 0000000000..8d937f4c14 --- /dev/null +++ b/mvnw @@ -0,0 +1,308 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.2.0 +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "$(uname)" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME + else + JAVA_HOME="/Library/Java/Home"; export JAVA_HOME + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] && + JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then + if $darwin ; then + javaHome="$(dirname "\"$javaExecutable\"")" + javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac" + else + javaExecutable="$(readlink -f "\"$javaExecutable\"")" + fi + javaHome="$(dirname "\"$javaExecutable\"")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$(cd "$wdir/.." || exit 1; pwd) + fi + # end of workaround + done + printf '%s' "$(cd "$basedir" || exit 1; pwd)" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + # Remove \r in case we run on Windows within Git Bash + # and check out the repository with auto CRLF management + # enabled. Otherwise, we may read lines that are delimited with + # \r\n and produce $'-Xarg\r' rather than -Xarg due to word + # splitting rules. + tr -s '\r\n' ' ' < "$1" + fi +} + +log() { + if [ "$MVNW_VERBOSE" = true ]; then + printf '%s\n' "$1" + fi +} + +BASE_DIR=$(find_maven_basedir "$(dirname "$0")") +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR +log "$MAVEN_PROJECTBASEDIR" + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" +if [ -r "$wrapperJarPath" ]; then + log "Found $wrapperJarPath" +else + log "Couldn't find $wrapperJarPath, downloading it ..." + + if [ -n "$MVNW_REPOURL" ]; then + wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + else + wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + fi + while IFS="=" read -r key value; do + # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' ) + safeValue=$(echo "$value" | tr -d '\r') + case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;; + esac + done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" + log "Downloading from: $wrapperUrl" + + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget > /dev/null; then + log "Found wget ... using wget" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + log "Found curl ... using curl" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + else + curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + fi + else + log "Falling back to using Java to download" + javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java" + javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaSource=$(cygpath --path --windows "$javaSource") + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaSource" ]; then + if [ ! -e "$javaClass" ]; then + log " - Compiling MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/javac" "$javaSource") + fi + if [ -e "$javaClass" ]; then + log " - Running MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath" + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +# If specified, validate the SHA-256 sum of the Maven wrapper jar file +wrapperSha256Sum="" +while IFS="=" read -r key value; do + case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;; + esac +done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" +if [ -n "$wrapperSha256Sum" ]; then + wrapperSha256Result=false + if command -v sha256sum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + elif command -v shasum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." + echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." + exit 1 + fi + if [ $wrapperSha256Result = false ]; then + echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2 + echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2 + echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2 + exit 1 + fi +fi + +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +# shellcheck disable=SC2086 # safe args +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvnw.cmd b/mvnw.cmd new file mode 100644 index 0000000000..c4586b564e --- /dev/null +++ b/mvnw.cmd @@ -0,0 +1,205 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.2.0 +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %WRAPPER_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file +SET WRAPPER_SHA_256_SUM="" +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B +) +IF NOT %WRAPPER_SHA_256_SUM%=="" ( + powershell -Command "&{"^ + "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ + "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ + " Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ + " Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ + " Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ + " exit 1;"^ + "}"^ + "}" + if ERRORLEVEL 1 goto error +) + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/pom.xml b/pom.xml index 07199d00d1..3d1c80cf92 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT pom SmallRye Reactive Messaging @@ -123,6 +123,8 @@ 0.5.0 0.15.0 true + + 1.11.0 @@ -584,6 +586,11 @@ + + org.jreleaser + jreleaser-maven-plugin + ${jreleaser-maven-plugin.version} + @@ -837,5 +844,48 @@ clean install + + jreleaser + + + + org.jreleaser + jreleaser-maven-plugin + ${jreleaser-maven-plugin.version} + false + + SEMVER + + + + smallrye + smallrye-reactive-messaging + true + + conventional-commits + true + ALWAYS + + + GitHub + dependabot[bot] + bot + jreleaserbot + smallrye-ci + + + + + .*-M[0-9]+ + + Announcements + + + + + + + + diff --git a/release/pom.xml b/release/pom.xml index 8e83a379b6..081617cb70 100644 --- a/release/pom.xml +++ b/release/pom.xml @@ -5,7 +5,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT smallrye-reactive-messaging-release diff --git a/smallrye-connector-attribute-processor/pom.xml b/smallrye-connector-attribute-processor/pom.xml index b79131bd01..05a4ff932c 100644 --- a/smallrye-connector-attribute-processor/pom.xml +++ b/smallrye-connector-attribute-processor/pom.xml @@ -7,7 +7,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT smallrye-connector-attribute-processor diff --git a/smallrye-reactive-messaging-amqp/pom.xml b/smallrye-reactive-messaging-amqp/pom.xml index 4345c736a1..77e30f1992 100644 --- a/smallrye-reactive-messaging-amqp/pom.xml +++ b/smallrye-reactive-messaging-amqp/pom.xml @@ -6,7 +6,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT smallrye-reactive-messaging-amqp diff --git a/smallrye-reactive-messaging-camel/pom.xml b/smallrye-reactive-messaging-camel/pom.xml index 376858250b..56a81e921d 100644 --- a/smallrye-reactive-messaging-camel/pom.xml +++ b/smallrye-reactive-messaging-camel/pom.xml @@ -5,7 +5,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT smallrye-reactive-messaging-camel diff --git a/smallrye-reactive-messaging-connector-archetype/pom.xml b/smallrye-reactive-messaging-connector-archetype/pom.xml index acdee4f20e..949d3defef 100644 --- a/smallrye-reactive-messaging-connector-archetype/pom.xml +++ b/smallrye-reactive-messaging-connector-archetype/pom.xml @@ -6,7 +6,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT smallrye-reactive-messaging-connector-archetype diff --git a/smallrye-reactive-messaging-gcp-pubsub/pom.xml b/smallrye-reactive-messaging-gcp-pubsub/pom.xml index b4f73a8d29..47e568543e 100644 --- a/smallrye-reactive-messaging-gcp-pubsub/pom.xml +++ b/smallrye-reactive-messaging-gcp-pubsub/pom.xml @@ -4,7 +4,7 @@ smallrye-reactive-messaging io.smallrye.reactive - 4.19.0-SNAPSHOT + 999-SNAPSHOT diff --git a/smallrye-reactive-messaging-health/pom.xml b/smallrye-reactive-messaging-health/pom.xml index c3559adb18..14a18c9324 100644 --- a/smallrye-reactive-messaging-health/pom.xml +++ b/smallrye-reactive-messaging-health/pom.xml @@ -7,7 +7,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT diff --git a/smallrye-reactive-messaging-in-memory/pom.xml b/smallrye-reactive-messaging-in-memory/pom.xml index df9eceb9e7..e0477eb2af 100644 --- a/smallrye-reactive-messaging-in-memory/pom.xml +++ b/smallrye-reactive-messaging-in-memory/pom.xml @@ -5,7 +5,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT smallrye-reactive-messaging-in-memory diff --git a/smallrye-reactive-messaging-jackson/pom.xml b/smallrye-reactive-messaging-jackson/pom.xml index 072ef8a09d..46159d88bb 100644 --- a/smallrye-reactive-messaging-jackson/pom.xml +++ b/smallrye-reactive-messaging-jackson/pom.xml @@ -5,7 +5,7 @@ smallrye-reactive-messaging io.smallrye.reactive - 4.19.0-SNAPSHOT + 999-SNAPSHOT 4.0.0 diff --git a/smallrye-reactive-messaging-jms/pom.xml b/smallrye-reactive-messaging-jms/pom.xml index 421dbd1f41..7893cc1d11 100644 --- a/smallrye-reactive-messaging-jms/pom.xml +++ b/smallrye-reactive-messaging-jms/pom.xml @@ -5,7 +5,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT smallrye-reactive-messaging-jms diff --git a/smallrye-reactive-messaging-jsonb/pom.xml b/smallrye-reactive-messaging-jsonb/pom.xml index 220a819e6b..0ac8182ad0 100644 --- a/smallrye-reactive-messaging-jsonb/pom.xml +++ b/smallrye-reactive-messaging-jsonb/pom.xml @@ -5,7 +5,7 @@ smallrye-reactive-messaging io.smallrye.reactive - 4.19.0-SNAPSHOT + 999-SNAPSHOT 4.0.0 diff --git a/smallrye-reactive-messaging-kafka-api/pom.xml b/smallrye-reactive-messaging-kafka-api/pom.xml index c78ae84d9d..75b8a6deb6 100644 --- a/smallrye-reactive-messaging-kafka-api/pom.xml +++ b/smallrye-reactive-messaging-kafka-api/pom.xml @@ -6,7 +6,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT smallrye-reactive-messaging-kafka-api diff --git a/smallrye-reactive-messaging-kafka-test-companion/pom.xml b/smallrye-reactive-messaging-kafka-test-companion/pom.xml index cbeb156c1e..5cfb71f839 100644 --- a/smallrye-reactive-messaging-kafka-test-companion/pom.xml +++ b/smallrye-reactive-messaging-kafka-test-companion/pom.xml @@ -6,7 +6,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT smallrye-reactive-messaging-kafka-test-companion diff --git a/smallrye-reactive-messaging-kafka/pom.xml b/smallrye-reactive-messaging-kafka/pom.xml index 4ce949f2c7..7350e7cabc 100644 --- a/smallrye-reactive-messaging-kafka/pom.xml +++ b/smallrye-reactive-messaging-kafka/pom.xml @@ -6,7 +6,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT smallrye-reactive-messaging-kafka diff --git a/smallrye-reactive-messaging-mqtt/pom.xml b/smallrye-reactive-messaging-mqtt/pom.xml index e2fa17ecda..431b142c96 100644 --- a/smallrye-reactive-messaging-mqtt/pom.xml +++ b/smallrye-reactive-messaging-mqtt/pom.xml @@ -6,7 +6,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT smallrye-reactive-messaging-mqtt diff --git a/smallrye-reactive-messaging-otel/pom.xml b/smallrye-reactive-messaging-otel/pom.xml index ce5508a87f..6cb9b8af19 100644 --- a/smallrye-reactive-messaging-otel/pom.xml +++ b/smallrye-reactive-messaging-otel/pom.xml @@ -5,7 +5,7 @@ smallrye-reactive-messaging io.smallrye.reactive - 4.19.0-SNAPSHOT + 999-SNAPSHOT 4.0.0 diff --git a/smallrye-reactive-messaging-provider/pom.xml b/smallrye-reactive-messaging-provider/pom.xml index 35f4a3468c..59ac8284f2 100644 --- a/smallrye-reactive-messaging-provider/pom.xml +++ b/smallrye-reactive-messaging-provider/pom.xml @@ -6,7 +6,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT smallrye-reactive-messaging-provider diff --git a/smallrye-reactive-messaging-pulsar/pom.xml b/smallrye-reactive-messaging-pulsar/pom.xml index 65ecf40518..315a9e239c 100644 --- a/smallrye-reactive-messaging-pulsar/pom.xml +++ b/smallrye-reactive-messaging-pulsar/pom.xml @@ -6,7 +6,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT smallrye-reactive-messaging-pulsar diff --git a/smallrye-reactive-messaging-rabbitmq/pom.xml b/smallrye-reactive-messaging-rabbitmq/pom.xml index 678c3b46cf..0165ded244 100644 --- a/smallrye-reactive-messaging-rabbitmq/pom.xml +++ b/smallrye-reactive-messaging-rabbitmq/pom.xml @@ -6,7 +6,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT smallrye-reactive-messaging-rabbitmq diff --git a/tck/pom.xml b/tck/pom.xml index 94624adc88..6c2f79f5ff 100644 --- a/tck/pom.xml +++ b/tck/pom.xml @@ -5,7 +5,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT tck diff --git a/test-common/pom.xml b/test-common/pom.xml index 0f0af5933c..c9a8b86ede 100644 --- a/test-common/pom.xml +++ b/test-common/pom.xml @@ -6,7 +6,7 @@ io.smallrye.reactive smallrye-reactive-messaging - 4.19.0-SNAPSHOT + 999-SNAPSHOT test-common