diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 16f6ff8..e4d2f93 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -4,6 +4,7 @@ on:
push:
branches:
- "main"
+ - 'release/*'
paths-ignore:
- '.gitignore'
- 'CODEOWNERS'
diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml
deleted file mode 100644
index 0a9e64e..0000000
--- a/.github/workflows/pre-release.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-name: Quarkiverse Pre Release
-
-on:
- pull_request:
- paths:
- - '.github/project.yml'
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.ref }}
- cancel-in-progress: true
-
-defaults:
- run:
- shell: bash
-
-jobs:
- release:
- runs-on: ubuntu-latest
- name: pre release
-
- steps:
- - uses: radcortez/project-metadata-action@master
- name: retrieve project metadata
- id: metadata
- with:
- github-token: ${{secrets.GITHUB_TOKEN}}
- metadata-file-path: '.github/project.yml'
-
- - name: Validate version
- if: contains(steps.metadata.outputs.current-version, 'SNAPSHOT')
- run: |
- echo '::error::Cannot release a SNAPSHOT version.'
- exit 1
\ No newline at end of file
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 0a3894f..6ec05cc 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -1,74 +1,163 @@
name: Quarkiverse Release
on:
- pull_request:
- types: [closed]
- paths:
- - '.github/project.yml'
+ workflow_dispatch:
+ inputs:
+ releaseVersion:
+ description: "Version to use when preparing a release. Use `auto` to use the latest version from the pom.xml."
+ required: true
+ default: "auto"
+ sourceBranch:
+ description: "Which branch contains the previous release version."
+ default: "main"
concurrency:
- group: ${{ github.workflow }}-${{ github.ref }}
- cancel-in-progress: true
+ group: "quarkiverse-release"
+ cancel-in-progress: false
defaults:
run:
shell: bash
+permissions:
+ contents: write
+ packages: write
+ checks: write
+
jobs:
release:
runs-on: ubuntu-latest
name: release
- if: ${{github.event.pull_request.merged == true}}
-
steps:
- - uses: radcortez/project-metadata-action@main
- name: Retrieve project metadata
- id: metadata
+ - uses: actions/checkout@v4
with:
- github-token: ${{secrets.GITHUB_TOKEN}}
- metadata-file-path: '.github/project.yml'
-
- - uses: actions/checkout@v3
+ ref: ${{ github.event.inputs.sourceBranch }}
- name: Import GPG key
- id: import_gpg
- uses: crazy-max/ghaction-import-gpg@v6
+ uses: crazy-max/ghaction-import-gpg@01dd5d3ca463c7f10f7f4f7b4f177225ac661ee4 #v6.1.0
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
- passphrase: ${{ secrets.GPG_PASSPHRASE }}
-
+ passphrase: ${{ secrets.GPG_SECRET }}
+
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
distribution: temurin
java-version: 11
cache: 'maven'
- server-id: ossrh
- server-username: MAVEN_USERNAME
- server-password: MAVEN_PASSWORD
+ server-id: github
+ gpg-passphrase: GPG_PASSPHRASE
+ gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
- - name: Configure Git author
+ - name: Find version to use
+ id: version
run: |
- git config --local user.email "action@github.com"
- git config --local user.name "GitHub Action"
+ if [[ "${{ github.event.inputs.releaseVersion }}" -eq "auto" ]]; then
+ echo "No release version provided, using the latest version from the pom.xml"
+ new_version=`mvn -B help:evaluate -Dexpression=project.version -q -DforceStdout | sed -e 's/-SNAPSHOT$//'`
+ echo "New version will be $new_version"
+ echo version=$new_version >> $GITHUB_OUTPUT
+ else
+ echo version=${{ github.event.inputs.releaseVersion }} >> $GITHUB_OUTPUT
+ fi
+
+ - name: Pre-Release Check - Version
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: |
+ gh api --method GET /repos/${{github.repository}}/releases -f sort=updated -f direction=asc > releases.json
+ release_version_exists=$(jq -r --arg RELEASE_VERSION ${{ steps.version.outputs.version }} '.[].name|select(.|test($RELEASE_VERSION))' releases.json)
+ if [[ ! -z "$release_version_exists" ]]; then
+ echo "Version ${{ steps.version.outputs.version }} has been previously released. Please change release version."
+ exit 1
+ else
+ echo "New version: ${{ steps.version.outputs.version }} going to be released!"
+ fi
+
+ - name: Release Version - Prepare
+ run: >-
+ mvn -B -U versions:set
+ -DnewVersion=${{ steps.version.outputs.version }}
+ -DprocessAllModules
+ -DgenerateBackupPoms=false
+
- name: Update latest release version in docs
run: |
mvn -B -ntp -pl docs -am generate-resources -Denforcer.skip -Dformatter.skip -Dimpsort.skip
if ! git diff --quiet docs/modules/ROOT/pages/includes/attributes.adoc; then
git add docs/modules/ROOT/pages/includes/attributes.adoc
- git commit -m "Update the latest release version ${{steps.metadata.outputs.current-version}} in documentation"
fi
+
+ - name: Verify Maven
+ run: mvn verify
+
+ - name: Publishing Test Results - Unit/Integration Tests Pre-Condition
+ if: always()
+ id: unit_integration_test_report_exists
+ uses: andstor/file-existence-action@v2
+ with:
+ files: "**/surefire-reports/**/TEST*.xml"
+
+ - name: Publishing Test Results - Unit/Integration Tests
+ uses: dorny/test-reporter@v1.7.0
+ if: always() && steps.unit_integration_test_report_exists.outputs.files_exists == 'true'
+ with:
+ name: Test Results
+ path: "**/surefire-reports/**/TEST*.xml"
+ fail-on-error: 'false'
+ reporter: java-junit
+ only-summary: 'true'
+
+ - name: Configure Git author
+ run: |
+ git config --local user.email "action@github.com"
+ git config --local user.name "GitHub Action"
- - name: Maven release ${{steps.metadata.outputs.current-version}}
+ - name: Release Version - Checkin
+ run: >-
+ mvn validate
+ scm:checkin
+ -DscmVersion=${{ github.event.inputs.sourceBranch }}
+ -DscmVersionType=branch
+ -Dmessage="[ci skip] prepare release ${{ steps.version.outputs.version }}" &&
+ mvn scm:tag -Dtag=${{ steps.version.outputs.version }}
+
+
+ - name: GitHub Packages - Deploy Artifacts
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GPG_PASSPHRASE: ${{ secrets.GPG_SECRET }}
run: |
- mvn -B release:prepare -Prelease -DreleaseVersion=${{steps.metadata.outputs.current-version}} -DdevelopmentVersion=${{steps.metadata.outputs.next-version}}
- mvn -B release:perform -Darguments=-DperformRelease -DperformRelease -Prelease
+ mvn deploy -Dmaven.install.skip=true -Pgithub,publish
+
+ - name: maven-settings-xml-action
+ uses: whelk-io/maven-settings-xml-action@v4
+ with:
+ servers: '[{ "id": "ossrh", "username": "${{ secrets.OSSRH_USER }}", "password": "${{ secrets.OSSRH_PASS }}" }]'
+
+ - name: Maven Central - Deploy Artifacts
env:
- MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
- MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
-
- - name: Push changes to ${{github.base_ref}} branch
+ GPG_PASSPHRASE: ${{ secrets.GPG_SECRET }}
run: |
- git push
- git push origin ${{steps.metadata.outputs.current-version}}
+ mvn deploy -Dmaven.install.skip=true -Possrh,publish
+
+ - name: Create GitHub Release
+ uses: ncipollo/release-action@v1
+ with:
+ tag: "${{ steps.version.outputs.version }}"
+ generateReleaseNotes: true
+ makeLatest: true
+
+ - name: Next Develoment Version - Prepare and Checkin
+ run: >-
+ mvn -B -U build-helper:parse-version versions:set
+ -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion}-SNAPSHOT
+ -DprocessAllModules
+ -DgenerateBackupPoms=false &&
+ mvn validate scm:checkin
+ -DscmVersion=${{ github.event.inputs.sourceBranch }}
+ -DscmVersionType=branch
+ -Dmessage="[ci skip] prepare for next development iteration"
+
+
diff --git a/RELEASE.md b/RELEASE.md
new file mode 100644
index 0000000..4fb5d94
--- /dev/null
+++ b/RELEASE.md
@@ -0,0 +1,30 @@
+# Solace-Quarkus CD
+There is a github actions 'Quarkiverse Release' workflow, which will perform the following actions
+- Update and commit POMs to be a release version (eg `1.0.1` vs `1.0.1-SNAPSHOT`)
+ - Updates the versions within the docs as well
+ - The version can be explicitly set, or `auto` will use what is currently on the branch, and can be used for easily publishing incremental patch releases.
+- Perform a deploy, skipping tests, to both github packages, and ossrh
+- Tag, and create a release on github for this commit
+- Increment the minor version of all POMs and re-append `-SNAPSHOT`, (eg `1.0.2-SNAPSHOT`)
+
+## Workflows Supported
+### Trunk Based (main)
+Merge a feature branch to main. This branch should be updated from main and have all tests passing. Once in main, run the release workflow
+- Use the `auto` release version if this only requires a patch version bump, otherwise set an appropriate version
+
+### Release branch
+In the following depiction of main, trunk based would no longer work if the 1.0 release version need to be maintained with further patch releases
+```
+[#7fe6b95 Merge Feature branch PR #5] origin/main
+[#7a5bde8 [ci skip] prepare for next development iteration ]
+[#5ceb311 [ci skip] prepare release 2.0.0] <- Release Quarkiverse action run with releaseVersion=2.0.0
+[#5923308 Merge Feature branch PR #4 (Major overhaul)]
+[#a46a01a [ci skip] prepare for next development iteration ]
+[#e354653 [ci skip] prepare release 1.0.1]
+[#3923407 Merge Feature branch PR #3]
+[#d76a91b [ci skip] prepare for next development iteration ]
+[#f85455c [ci skip] prepare release 1.0.0]
+[#7d2115f init]
+```
+In this case, `git checkout -b release/1.0 a46a01a && git push` This is the sha of the last commit that belongs in this release branch, in this case, the commit setting the version to `1.0.2-SNAPSHOT`
+Now the same release workflow can be run, but with `sourceBranch=release/1.0`, and the 2 CI commits will land on the release branch instead of main
\ No newline at end of file
diff --git a/docs/modules/ROOT/pages/includes/attributes.adoc b/docs/modules/ROOT/pages/includes/attributes.adoc
index 19a687e..e1a2881 100644
--- a/docs/modules/ROOT/pages/includes/attributes.adoc
+++ b/docs/modules/ROOT/pages/includes/attributes.adoc
@@ -1,3 +1,3 @@
-:project-version: 0
+:project-version: ${release.current-version}
:examples-dir: ./../examples/
\ No newline at end of file
diff --git a/docs/pom.xml b/docs/pom.xml
index f8f93d2..f7c695d 100644
--- a/docs/pom.xml
+++ b/docs/pom.xml
@@ -6,13 +6,13 @@
com.solace.quarkus
quarkus-solace-parent
- 999-SNAPSHOT
+ 0.0.1-SNAPSHOT
../pom.xml
quarkus-solace-docs
Quarkus Solace - Documentation
-
+ 0.0.1-SNAPSHOT
@@ -41,23 +41,6 @@
-
- it.ozimov
- yaml-properties-maven-plugin
-
-
- initialize
-
- read-project-properties
-
-
-
- ${project.basedir}/../.github/project.yml
-
-
-
-
-
maven-resources-plugin
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index 548e664..1c0c877 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -4,10 +4,11 @@
com.solace.quarkus
quarkus-solace-parent
- 999-SNAPSHOT
+ 0.0.1-SNAPSHOT
quarkus-solace-integration-tests-parent
Quarkus Solace - Integration Tests - Parent
+
pom
solace-client-integration-tests
diff --git a/integration-tests/solace-client-integration-tests/pom.xml b/integration-tests/solace-client-integration-tests/pom.xml
index 7230dd5..e896c52 100644
--- a/integration-tests/solace-client-integration-tests/pom.xml
+++ b/integration-tests/solace-client-integration-tests/pom.xml
@@ -7,7 +7,7 @@
com.solace.quarkus
quarkus-solace-integration-tests-parent
- 999-SNAPSHOT
+ 0.0.1-SNAPSHOT
solace-client-integration-tests
diff --git a/pom.xml b/pom.xml
index 39ca21a..f2bf63e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,6 +1,8 @@
-
+
4.0.0
io.quarkiverse
@@ -9,23 +11,14 @@
com.solace.quarkus
quarkus-solace-parent
- 999-SNAPSHOT
+ 0.0.1-SNAPSHOT
pom
Quarkus Solace - Parent
-
- quarkus-solace-client
- quarkus-solace-messaging-connector
- docs
- samples/hello-solace
- samples/hello-connector-solace
- integration-tests
-
-
- scm:git:git@github.com:SolaceCoEExt/solace-quarkus.git
- scm:git:git@github.com:SolaceCoEExt/solace-quarkus.git
- https://github.com/SolaceCoEExt/solace-quarkus
+ scm:git:https://github.com/SolaceLabs/solace-quarkus.git
+ scm:git:https://github.com/SolaceLabs/solace-quarkus.git
+ https://github.com/SolaceLabs/solace-quarkus
@@ -106,5 +99,123 @@
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+
+
+ parse-version
+
+ parse-version
+
+
+
+
+
+
+
+
+ development
+
+ true
+
+
+ quarkus-solace-client
+ quarkus-solace-messaging-connector
+ docs
+ samples/hello-solace
+ samples/hello-connector-solace
+ integration-tests
+
+
+
+ publish
+
+ quarkus-solace-client
+ quarkus-solace-messaging-connector
+
+
+
+
+ org.apache.maven.plugins
+ maven-gpg-plugin
+ 3.1.0
+
+
+ sign-artifacts
+ verify
+
+ sign
+
+
+
+
+ --pinentry-mode
+ loopback
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 3.3.0
+
+ true
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 3.6.3
+
+
+ attach-javadocs
+
+ jar
+
+
+
+
+
+
+
+
+ github
+
+ true
+
+
+
+ github
+ https://maven.pkg.github.com/SolaceLabs/solace-quarkus
+
+
+ github
+ https://maven.pkg.github.com/SolaceLabs/solace-quarkus
+
+
+
+
+ ossrh
+
+
+
+ org.sonatype.plugins
+ nexus-staging-maven-plugin
+ true
+
+ ossrh
+ https://s01.oss.sonatype.org/
+ false
+ false
+
+
+
+
+
+
diff --git a/quarkus-solace-client/deployment/pom.xml b/quarkus-solace-client/deployment/pom.xml
index 6fa3f55..b9639e6 100644
--- a/quarkus-solace-client/deployment/pom.xml
+++ b/quarkus-solace-client/deployment/pom.xml
@@ -5,7 +5,7 @@
com.solace.quarkus
quarkus-solace-client-parent
- 999-SNAPSHOT
+ 0.0.1-SNAPSHOT
quarkus-solace-client-deployment
Quarkus Solace Client - Deployment
diff --git a/quarkus-solace-client/pom.xml b/quarkus-solace-client/pom.xml
index 4360b55..2b39457 100644
--- a/quarkus-solace-client/pom.xml
+++ b/quarkus-solace-client/pom.xml
@@ -6,7 +6,7 @@
com.solace.quarkus
quarkus-solace-parent
- 999-SNAPSHOT
+ 0.0.1-SNAPSHOT
quarkus-solace-client-parent
Quarkus Solace Client - Parent
diff --git a/quarkus-solace-client/runtime/pom.xml b/quarkus-solace-client/runtime/pom.xml
index f8f61ce..3e68551 100644
--- a/quarkus-solace-client/runtime/pom.xml
+++ b/quarkus-solace-client/runtime/pom.xml
@@ -5,7 +5,7 @@
com.solace.quarkus
quarkus-solace-client-parent
- 999-SNAPSHOT
+ 0.0.1-SNAPSHOT
quarkus-solace-client
Quarkus Solace Client - Runtime
diff --git a/quarkus-solace-messaging-connector/deployment/pom.xml b/quarkus-solace-messaging-connector/deployment/pom.xml
index c33965f..24f1a74 100644
--- a/quarkus-solace-messaging-connector/deployment/pom.xml
+++ b/quarkus-solace-messaging-connector/deployment/pom.xml
@@ -5,7 +5,7 @@
com.solace.quarkus
quarkus-solace-messaging-connector-parent
- 999-SNAPSHOT
+ 0.0.1-SNAPSHOT
quarkus-solace-messaging-connector-deployment
Quarkus Solace Messaging Connector - Deployment
diff --git a/quarkus-solace-messaging-connector/pom.xml b/quarkus-solace-messaging-connector/pom.xml
index 1ffdd58..9bfc954 100644
--- a/quarkus-solace-messaging-connector/pom.xml
+++ b/quarkus-solace-messaging-connector/pom.xml
@@ -5,7 +5,7 @@
com.solace.quarkus
quarkus-solace-parent
- 999-SNAPSHOT
+ 0.0.1-SNAPSHOT
quarkus-solace-messaging-connector-parent
Quarkus Solace Messaging Connector - Parent
diff --git a/quarkus-solace-messaging-connector/runtime/pom.xml b/quarkus-solace-messaging-connector/runtime/pom.xml
index 4ba4c00..2300b52 100644
--- a/quarkus-solace-messaging-connector/runtime/pom.xml
+++ b/quarkus-solace-messaging-connector/runtime/pom.xml
@@ -6,7 +6,7 @@
com.solace.quarkus
quarkus-solace-messaging-connector-parent
- 999-SNAPSHOT
+ 0.0.1-SNAPSHOT
quarkus-solace-messaging-connector
Quarkus Solace Messaging Connector - Runtime
diff --git a/samples/hello-connector-solace/pom.xml b/samples/hello-connector-solace/pom.xml
index 2cfe197..9a06131 100644
--- a/samples/hello-connector-solace/pom.xml
+++ b/samples/hello-connector-solace/pom.xml
@@ -5,7 +5,7 @@
com.solace.quarkus
quarkus-solace-parent
- 999-SNAPSHOT
+ 0.0.1-SNAPSHOT
../../pom.xml
quarkus-solace-sample-connector-hello
diff --git a/samples/hello-solace/pom.xml b/samples/hello-solace/pom.xml
index 640cdc1..4740ba3 100644
--- a/samples/hello-solace/pom.xml
+++ b/samples/hello-solace/pom.xml
@@ -5,7 +5,7 @@
com.solace.quarkus
quarkus-solace-parent
- 999-SNAPSHOT
+ 0.0.1-SNAPSHOT
../../pom.xml
quarkus-solace-sample-hello