From a161bd300dbde678a134d2678fcfbabb9b9e84fa Mon Sep 17 00:00:00 2001 From: sdaus <69143824+sdaus@users.noreply.github.com> Date: Wed, 26 May 2021 07:47:23 +0200 Subject: [PATCH] LIBS-943 - minor readme improvements (#13) --- .github/workflows/nightly.yml | 19 +++++++++++++- .github/workflows/release.yml | 49 +++++++++++++++++++++++++++++++++++ .github/workflows/review.yml | 45 ++++++++++++++++++++++++++++---- README.md | 12 ++++----- pom.xml | 4 +-- 5 files changed, 115 insertions(+), 14 deletions(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index fbe1003..d6da913 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -1,8 +1,10 @@ +# This configuration is used for nightly builds name: nightly on: schedule: - - cron: 0 0 * * 1 + # Runs every Monday at 00:00 + - cron: 0 0 * * MON jobs: nightly: @@ -11,14 +13,25 @@ jobs: runs-on: ubuntu-latest steps: + # Setup java environment - name: setup-java uses: actions/setup-java@v1 with: java-version: 11 + # Checkout the git repository - name: checkout uses: actions/checkout@v2 + with: + ref: ${{ github.head_ref }} + token: ${{ secrets.GPR_TOKEN }} + fetch-depth: '' + + # Execute some necessary git commands to get more repository informations + - name: post-checkout + run: git fetch --prune --unshallow + # Setup/load GitHub Actions caching for external dependencies, in this case especially for Maven - name: caching uses: actions/cache@v2 with: @@ -26,15 +39,19 @@ jobs: key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-maven- + # Execute Maven command for compile and compile of the tests - name: compile run: mvn clean compile test-compile + # Execute Unit tests - name: unit-tests run: mvn surefire:test + # Execute Integration tests, in this case we can skip the unit tests and load these with jacoco - name: integration-tests run: mvn -DskipUTs -Dgpg.skip=true jacoco:restore-instrumented-classes verify + # Execute sonar analysis and publish results to the sonarqube server - name: sonar-analyse env: SONAR_HOST: ${{ secrets.OS_SONAR_HOST_URL }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index be7ae49..3879c8d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,8 +1,10 @@ +# This configuration is used for the deployment and publish to GitHub Packages name: release on: push: branches: + # Runs only on push to the master branch - master jobs: @@ -15,6 +17,7 @@ jobs: runs-on: ubuntu-latest steps: + # Setup java environment - name: setup-java uses: actions/setup-java@v1 with: @@ -23,17 +26,29 @@ jobs: server-username: OSSRH_USERNAME server-password: OSSRH_PASSWORD + # Checkout the git repository - name: setup-github-release run: sed -i -e 's/<\/servers>/github<\/id>x-access-token<\/username>${GITHUB_TOKEN}<\/password><\/server><\/servers>/g' /home/runner/.m2/settings.xml + # Setup GPG for Maven Central deployment - name: setup-gpg env: GPG_PRIVATE_KEY: ${{ secrets.OS_GPG_PRIVATE_KEY }} run: cat <(echo -e "${GPG_PRIVATE_KEY}") | gpg --batch --import + # Checkout the git repository - name: checkout uses: actions/checkout@v2 + with: + ref: ${{ github.head_ref }} + token: ${{ secrets.GPR_TOKEN }} + fetch-depth: '' + + # Execute some necessary git commands to get more repository informations + - name: post-checkout + run: git fetch --prune --unshallow + # Setup GitHub Actions caching for external dependencies, in this case especially for Maven - name: caching uses: actions/cache@v2 with: @@ -41,6 +56,7 @@ jobs: key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-maven- + # Execute Maven command for the deployment and publish to Maven Central - name: deploy env: OSSRH_USERNAME: ${{ secrets.OS_OSSRH_USERNAME }} @@ -48,6 +64,7 @@ jobs: GPG_PASSPHRASE: ${{ secrets.OS_GPG_PASSPHRASE }} run: mvn deploy -Dmaven.wagon.http.pool=false -Dgpg.executable=gpg -Dgpg.passphrase=${GPG_PASSPHRASE} + # Execute sonar analysis and publish results to the sonarcloud server - name: sonar-analyse env: SONAR_HOST: ${{ secrets.OS_SONAR_HOST_URL }} @@ -60,3 +77,35 @@ jobs: -Dsonar.organization=${SONAR_ORGANIZATION} \ -Dsonar.projectKey=${GITHUB_REPOSITORY//\//_} \ -Dsonar.java.binaries=./target/classes + + # Get the current project version from POM + - name: get-project-version + id: get_project_version + uses: avides/actions-project-version-check@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + file-to-check: pom.xml + only-return-version: true + + # Get last commit message for GitHub Release tag + - name: setup-github-release + id: setup_github_release + env: + PROJECT_VERSION: ${{ steps.get_project_version.outputs.version }} + run: | + echo ::set-output name=gitcommitmessage::$(git log --no-merges -1 --oneline) + if [[ "$PROJECT_VERSION" == *"SNAPSHOT"* || "$PROJECT_VERSION" == *"RC"* ]]; then + echo ::set-output name=isprerelease::true + fi + + # Create and publish GitHub Release tag + - name: github-release + uses: actions/create-release@v1 + continue-on-error: true + env: + GITHUB_TOKEN: ${{ secrets.GPR_TOKEN }} + with: + tag_name: ${{ steps.get_project_version.outputs.version }} + release_name: ${{ steps.get_project_version.outputs.version }} + body: ${{ steps.setup_github_release.outputs.gitcommitmessage }} + prerelease: ${{ steps.setup_github_release.outputs.isprerelease }} diff --git a/.github/workflows/review.yml b/.github/workflows/review.yml index 8f466a3..e358957 100644 --- a/.github/workflows/review.yml +++ b/.github/workflows/review.yml @@ -1,7 +1,9 @@ +# This configuration is used for the pull request review name: review on: pull_request: + # Runs only on pull request creation and on every new commit to the created pull request types: [opened, synchronize] jobs: @@ -11,11 +13,19 @@ jobs: runs-on: ubuntu-latest steps: + # Cancels previous run for this branch that have a different commit id (SHA) + - name: cancel-previous-run + uses: styfle/cancel-workflow-action@0.8.0 + with: + access_token: ${{ github.token }} + + # Setup java environment - name: setup-java uses: actions/setup-java@v1 with: java-version: 11 + # Checkout the git repository - name: checkout uses: actions/checkout@v2 with: @@ -23,17 +33,19 @@ jobs: token: ${{ secrets.GPR_TOKEN }} fetch-depth: '' + # Execute some necessary git commands to get more repository informations - name: post-checkout run: git fetch --prune --unshallow + # Update GitHub Action configuration if necessary - name: action-configuration-autoupdate - id: actions_action_configuration_autoupdate uses: avides/actions-action-configuration-autoupdate@v1 with: token: ${{ secrets.GPR_TOKEN }} actions-configuration-files: os-java-library/nightly.yml,os-java-library/release.yml,os-java-library/review.yml source-repository: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_REPO }} + # Push updated GitHub Actions configuration if necessary - uses: stefanzweifel/git-auto-commit-action@v4 with: file_pattern: .github/workflows/*.yml @@ -42,10 +54,7 @@ jobs: commit_author: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_AUTHOR }} commit_message: Update GitHub Action configuration - - name: action-configuration-updated - if: ${{ steps.actions_action_configuration_autoupdate.outputs.updated }} - run: exit 1; - + # Verify project version is updated - name: project-version-check uses: avides/actions-project-version-check@v1 with: @@ -53,6 +62,26 @@ jobs: file-to-check: pom.xml additional-files-to-check: README.md + # Check if documentation reminder comment is already given + - name: find-documentation-reminder-comment + uses: peter-evans/find-comment@v1 + id: find_documentation_reminder_comment + with: + issue-number: ${{ github.event.number }} + body-includes: "Confluence/GitHub documentation added or updated?" + + # Add documentation reminder comment if not given + - name: documentation-reminder-comment + uses: jungwinter/comment@v1 + id: create + if: ${{ steps.find_documentation_reminder_comment.outputs.comment-id == 0 }} + with: + type: create + body: 'Confluence/GitHub documentation added or updated?' + issue_number: ${{ github.event.number }} + token: ${{ secrets.GITHUB_TOKEN }} + + # Setup/load GitHub Actions caching for external dependencies, in this case especially for Maven - name: caching uses: actions/cache@v2 with: @@ -60,15 +89,19 @@ jobs: key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-maven- + # Execute Maven command for compile and compile of the tests - name: compile run: mvn clean compile test-compile + # Execute Unit tests - name: unit-tests run: mvn surefire:test + # Execute Integration tests, in this case we can skip the unit tests and load these with jacoco - name: integration-tests run: mvn -DskipUTs -Dgpg.skip=true jacoco:restore-instrumented-classes verify + # Execute sonar analysis for current branch - name: sonar-analyse env: SONAR_HOST: ${{ secrets.OS_SONAR_HOST_URL }} @@ -83,8 +116,10 @@ jobs: -Dsonar.projectKey=${GITHUB_REPOSITORY//\//_} \ -Dsonar.pullrequest.key=${{ github.event.number }} \ -Dsonar.pullrequest.branch=${{ github.event.pull_request.head.ref }} \ + -Dsonar.pullrequest.github.repository=${GITHUB_REPOSITORY} \ -Dsonar.scm.revision=${{ github.event.pull_request.head.sha }} \ -Dsonar.java.binaries=./target/classes + # Execute Maven enforcer plugin - name: pom-analyse run: mvn enforcer:enforce diff --git a/README.md b/README.md index 9c49b09..2703f7c 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ com.avides.spring spring-rabbit - 2.4.0 + 2.5.0 ``` @@ -49,13 +49,13 @@ docker run \ rabbitmq:VERSION ``` -The ´RABBITMQ_NODENAME´ environment variable is necessary! +The `RABBITMQ_NODENAME` environment variable is necessary! -The rabbit user needs at least ´MONITORING´ as tag! +The rabbit user needs at least `MONITORING` as tag! ## Known issues -The rabbit template needs to be autowired with ´@Lazy´! +The rabbit template needs to be autowired with `@Lazy`! If one property needs to be overridden in other profiles the complete prefix/collection needs to be copied! @@ -84,7 +84,7 @@ Using MeterRegistry will increment a counter with the bean name of the template ## Configuration -## Example +### Example Example for one connection factory @@ -179,7 +179,7 @@ Example for an implementation of a SpringRabbitListener ```java @Component -public class MyListener extends AbstractSpringRabbitListener +public class MyListener extends AbstractSpringRabbitListener { @Autowired private MyService myService; diff --git a/pom.xml b/pom.xml index 71f17a9..cf8aa54 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.avides.spring spring-rabbit - 2.4.0 + 2.5.0 spring-rabbit Makes configuring RabbitMQ for Spring Boot applications more comfortable @@ -72,7 +72,7 @@ 2.3.0 2.3.0.1 2.3.0 - 4.13 + 4.13.1 3.16.1 0.8.5 2.0.7