From 14eae6eb7b667aee674de5cf99c08bb25aed07f5 Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 13 Jun 2023 10:11:15 +0200 Subject: [PATCH 001/147] chore: update liquibase/build-logic to v0.3.2 in GitHub workflows feat: add extension-update-version.yml workflow to update release and development pom.xml versions using Maven release plugin --- .github/workflows/create-release.yml | 2 +- .../extension-attach-artifact-release.yml | 6 +-- .../workflows/extension-update-version.yml | 37 +++++++++++++++++++ .github/workflows/os-extension-test.yml | 2 +- .github/workflows/pro-extension-test.yml | 2 +- README.md | 20 ++++++++++ 6 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/extension-update-version.yml diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 887d2889..fad82bb8 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -5,7 +5,7 @@ on: jobs: sonar: - uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.3.1 + uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.3.2 secrets: inherit create-release: diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index db350f2a..865ce895 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -24,9 +24,9 @@ jobs: - name: Get Reusable Script Files run: | - curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.1/.github/get_draft_release.sh - curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.1/.github/sign_artifact.sh - curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.1/.github/upload_asset.sh + curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.2/.github/get_draft_release.sh + curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.2/.github/sign_artifact.sh + curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.2/.github/upload_asset.sh chmod +x $PWD/.github/get_draft_release.sh chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml new file mode 100644 index 00000000..23826019 --- /dev/null +++ b/.github/workflows/extension-update-version.yml @@ -0,0 +1,37 @@ +name: Update extension version + +on: + workflow_call: + inputs: + liquibaseVersion: + description: 'Liquibase Version' + required: true + type: string + secrets: + BOT_TOKEN: + description: 'BOT_TOKEN from the caller workflow' + required: true + +jobs: + update-version: + name: Update extension version + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up JDK + uses: actions/setup-java@v2 + with: + java-version: 17 + distribution: 'temurin' + cache: 'maven' + + - name: Configure Git user + run: | + git config user.email "jandroav@icloud.com" + git config user.name "jandroav" + + - name: Prepare and Perform Maven Release + run: | + mvn -B release:clean release:prepare release:perform -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index 8e1c0bab..b36fe14c 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -78,5 +78,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.1 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.2 secrets: inherit diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index 187187e8..63a9cbe3 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -97,5 +97,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.1 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.2 secrets: inherit diff --git a/README.md b/README.md index 266b355a..184a4be2 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,7 @@ Please review the below table of reusable workflows and their descriptions: | `create-release.yml` | Runs Release Drafter to auto create draft release notes | | `extension-attach-artifact-release.yml` | Attaches a tested artifact to the draft release | | `extension-release-published.yml` | Publishes a release to Maven Central | +| `extension-update-version.yml` | Updates release and development `pom.xml` versions | | `os-extension-test.yml` | Unit tests across build matrix on previously built artifact | | `pro-extension-test.yml` | Same as OS job, but with additional Pro-only vars such as License Key | | `sonar-pull-request.yml` | Code Coverage Scan for PRs. Requires branch name parameter | @@ -130,6 +131,25 @@ The following artifacts must be created `mvn clean package`. If the javadoc and ``` + +#### Maven release +The Maven release plugin must be configured to allow extensions update `pom.xml` versions: + +```xml + + + + org.apache.maven.plugins + maven-release-plugin + ${maven-release-plugin.version} + + [Version Bumped to ${project.version}] + + + + +``` + ## Liquibase Test Harness | Workflow | Description | From a30fcfb3f2b51b6dffd0588c4166cf4c7079c98c Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 13 Jun 2023 10:18:29 +0200 Subject: [PATCH 002/147] chore(extension-update-version.yml): update git user name and email to use liquibot instead of jandroav to match the bot's name and email domain --- .github/workflows/extension-update-version.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index 23826019..e16d3245 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -29,8 +29,8 @@ jobs: - name: Configure Git user run: | - git config user.email "jandroav@icloud.com" - git config user.name "jandroav" + git config user.name "liquibot" + git config user.email "liquibot@liquibase.org" - name: Prepare and Perform Maven Release run: | From 7d84e801cd16420f8870c9430b6f8779395ee92a Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 13 Jun 2023 10:28:14 +0200 Subject: [PATCH 003/147] chore(extension-update-version.yml): remove unused input 'liquibaseVersion' from workflow_call event to simplify code and avoid confusion --- .github/workflows/extension-update-version.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index e16d3245..ba106b87 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -2,11 +2,6 @@ name: Update extension version on: workflow_call: - inputs: - liquibaseVersion: - description: 'Liquibase Version' - required: true - type: string secrets: BOT_TOKEN: description: 'BOT_TOKEN from the caller workflow' From 983e471e722a35fb07c11fadf1f8fd8a2e15b3c6 Mon Sep 17 00:00:00 2001 From: Steven Massaro Date: Thu, 15 Jun 2023 13:51:36 -0500 Subject: [PATCH 004/147] add github_token --- .github/workflows/pro-extension-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index 187187e8..b8a6b269 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -21,6 +21,7 @@ env: LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} AWS_ACCESS_KEY_ID: ${{ secrets.GHA_AWS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.GHA_AWS_KEY }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} jobs: build: From adbb358e99d1d8798814f9a5b63877e99327674d Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 20 Jun 2023 14:01:24 +0200 Subject: [PATCH 005/147] feat(extension-update-version.yml): add flags to control release and rollback actions to the workflow inputs for better control over the release process. --- .../workflows/extension-update-version.yml | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index ba106b87..7b86f1b5 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -6,6 +6,15 @@ on: BOT_TOKEN: description: 'BOT_TOKEN from the caller workflow' required: true + inputs: + perform-release: + description: 'Flag to perform the release or just prepare it' + required: true + type: boolean + perform-rollback: + description: 'Flag to indicate if the release should be rolled back' + required: true + type: boolean jobs: update-version: @@ -27,6 +36,17 @@ jobs: git config user.name "liquibot" git config user.email "liquibot@liquibase.org" - - name: Prepare and Perform Maven Release + - name: Prepare Maven Release + if: ${{ github.event.inputs.perform-release == 'false' && github.event.inputs.perform-rollback == 'false'}} run: | mvn -B release:clean release:prepare release:perform -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + + - name: Perform Maven Release + if: ${{ github.event.inputs.perform-release == 'true' }} + run: | + mvn -B release:perform -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + + - name: Perform Maven Release Rollback + if: ${{ github.event.inputs.perform-rollback == 'true' }} + run: | + mvn -B release:rollback -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} \ No newline at end of file From 83ac105062ae4b9106dcdf23d4da8463cfb721bc Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 23 Jun 2023 12:36:49 +0200 Subject: [PATCH 006/147] chore(extension-update-version.yml): change boolean type to string type for perform-release and perform-rollback flags to fix validation error --- .github/workflows/extension-update-version.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index 7b86f1b5..464616c0 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -10,11 +10,11 @@ on: perform-release: description: 'Flag to perform the release or just prepare it' required: true - type: boolean + type: string perform-rollback: description: 'Flag to indicate if the release should be rolled back' required: true - type: boolean + type: string jobs: update-version: From baffee42ff1e184a74eff04430ff26b706a79567 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 23 Jun 2023 12:41:21 +0200 Subject: [PATCH 007/147] chore(extension-update-version.yml): change input types to boolean for perform-release and perform-rollback flags to improve semantics feat(extension-update-version.yml): add support for Maven release rollback by adding a new job to perform the rollback if the perform-rollback flag is set to true --- .github/workflows/extension-update-version.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index 464616c0..f2513ec5 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -10,11 +10,11 @@ on: perform-release: description: 'Flag to perform the release or just prepare it' required: true - type: string + type: boolean perform-rollback: description: 'Flag to indicate if the release should be rolled back' required: true - type: string + type: boolean jobs: update-version: @@ -37,16 +37,16 @@ jobs: git config user.email "liquibot@liquibase.org" - name: Prepare Maven Release - if: ${{ github.event.inputs.perform-release == 'false' && github.event.inputs.perform-rollback == 'false'}} + if: ${{ !github.event.inputs.perform-release && !github.event.inputs.perform-rollback}} run: | mvn -B release:clean release:prepare release:perform -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Perform Maven Release - if: ${{ github.event.inputs.perform-release == 'true' }} + if: ${{ github.event.inputs.perform-release }} run: | mvn -B release:perform -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Perform Maven Release Rollback - if: ${{ github.event.inputs.perform-rollback == 'true' }} + if: ${{ github.event.inputs.perform-rollback }} run: | mvn -B release:rollback -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} \ No newline at end of file From 569c2cee394318d71c2ef296ff91a91b676464ac Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 23 Jun 2023 12:55:47 +0200 Subject: [PATCH 008/147] chore(extension-update-version.yml): add GITHUB_TOKEN environment variable to Maven release steps to allow access to GitHub API --- .github/workflows/extension-update-version.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index f2513ec5..82a5d5ff 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -38,15 +38,21 @@ jobs: - name: Prepare Maven Release if: ${{ !github.event.inputs.perform-release && !github.event.inputs.perform-rollback}} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | mvn -B release:clean release:prepare release:perform -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Perform Maven Release if: ${{ github.event.inputs.perform-release }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | mvn -B release:perform -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Perform Maven Release Rollback if: ${{ github.event.inputs.perform-rollback }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | mvn -B release:rollback -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} \ No newline at end of file From 83cbf3db588e5ea4b8e172ba146642a506d491fb Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 23 Jun 2023 13:26:05 +0200 Subject: [PATCH 009/147] refactor(extension-update-version.yml): remove BOT_TOKEN secret from workflow_call inputs and use GITHUB_TOKEN instead for Maven release commands --- .github/workflows/extension-update-version.yml | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index 82a5d5ff..81518b2d 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -2,10 +2,6 @@ name: Update extension version on: workflow_call: - secrets: - BOT_TOKEN: - description: 'BOT_TOKEN from the caller workflow' - required: true inputs: perform-release: description: 'Flag to perform the release or just prepare it' @@ -38,21 +34,15 @@ jobs: - name: Prepare Maven Release if: ${{ !github.event.inputs.perform-release && !github.event.inputs.perform-rollback}} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - mvn -B release:clean release:prepare release:perform -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + mvn -B release:clean release:prepare release:perform -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.GITHUB_TOKEN }} -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Perform Maven Release if: ${{ github.event.inputs.perform-release }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - mvn -B release:perform -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + mvn -B release:perform -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.GITHUB_TOKEN }} -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Perform Maven Release Rollback if: ${{ github.event.inputs.perform-rollback }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - mvn -B release:rollback -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} \ No newline at end of file + mvn -B release:rollback -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 6cb8d2c690c610b41dcfcb049f3d0a3e777a669d Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 23 Jun 2023 13:37:36 +0200 Subject: [PATCH 010/147] refactor(extension-update-version.yml): remove redundant arguments from Maven release commands to simplify the command and improve readability --- .github/workflows/extension-update-version.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index 81518b2d..f385e1ab 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -35,14 +35,14 @@ jobs: - name: Prepare Maven Release if: ${{ !github.event.inputs.perform-release && !github.event.inputs.perform-rollback}} run: | - mvn -B release:clean release:prepare release:perform -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.GITHUB_TOKEN }} -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + mvn -B release:clean release:prepare release:perform -Darguments="-Dusername=liquibot -Dpassword=${{ secrets.GITHUB_TOKEN }} -Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Perform Maven Release if: ${{ github.event.inputs.perform-release }} run: | - mvn -B release:perform -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.GITHUB_TOKEN }} -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + mvn -B release:perform -Darguments="-Dusername=liquibot -Dpassword=${{ secrets.GITHUB_TOKEN }} -Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Perform Maven Release Rollback if: ${{ github.event.inputs.perform-rollback }} run: | - mvn -B release:rollback -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -Dusername=liquibot -Dpassword=${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + mvn -B release:rollback -Darguments="-Dusername=liquibot -Dpassword=${{ secrets.GITHUB_TOKEN }} -Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ No newline at end of file From e431b81e57dcbbc57be6b1eac3601adb23bfe0e2 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 23 Jun 2023 13:39:42 +0200 Subject: [PATCH 011/147] fix(extension-update-version.yml): replace GITHUB_TOKEN with BOT_TOKEN to fix authentication issue during Maven release process --- .github/workflows/extension-update-version.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index f385e1ab..e39f7345 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -35,14 +35,14 @@ jobs: - name: Prepare Maven Release if: ${{ !github.event.inputs.perform-release && !github.event.inputs.perform-rollback}} run: | - mvn -B release:clean release:prepare release:perform -Darguments="-Dusername=liquibot -Dpassword=${{ secrets.GITHUB_TOKEN }} -Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + mvn -B release:clean release:prepare release:perform -Darguments="-Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Perform Maven Release if: ${{ github.event.inputs.perform-release }} run: | - mvn -B release:perform -Darguments="-Dusername=liquibot -Dpassword=${{ secrets.GITHUB_TOKEN }} -Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + mvn -B release:perform -Darguments="-Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Perform Maven Release Rollback if: ${{ github.event.inputs.perform-rollback }} run: | - mvn -B release:rollback -Darguments="-Dusername=liquibot -Dpassword=${{ secrets.GITHUB_TOKEN }} -Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ No newline at end of file + mvn -B release:rollback -Darguments="-Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ No newline at end of file From 1adb2aad89030d267fddc619a0bd94e17c57c7c8 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 23 Jun 2023 13:48:21 +0200 Subject: [PATCH 012/147] chore(extension-update-version.yml): add remote origin to git config to enable pushing changes to the repository using liquibot account --- .github/workflows/extension-update-version.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index e39f7345..ee7dd814 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -31,6 +31,7 @@ jobs: run: | git config user.name "liquibot" git config user.email "liquibot@liquibase.org" + git remote add origin https://liquibot:${{ secrets.BOT_TOKEN }}@github.com/${{ github.repository_owner }}/${{ github.repository }}.git - name: Prepare Maven Release if: ${{ !github.event.inputs.perform-release && !github.event.inputs.perform-rollback}} From 6b85bf7a93ffc16f5e47f853f150056c25f74d51 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 23 Jun 2023 13:53:20 +0200 Subject: [PATCH 013/147] fix(extension-update-version.yml): change git remote add to git remote set-url to avoid adding a new remote origin --- .github/workflows/extension-update-version.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index ee7dd814..585042df 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -31,7 +31,7 @@ jobs: run: | git config user.name "liquibot" git config user.email "liquibot@liquibase.org" - git remote add origin https://liquibot:${{ secrets.BOT_TOKEN }}@github.com/${{ github.repository_owner }}/${{ github.repository }}.git + git remote set-url origin https://liquibot:${{ secrets.BOT_TOKEN }}@github.com/${{ github.repository_owner }}/${{ github.repository }}.git - name: Prepare Maven Release if: ${{ !github.event.inputs.perform-release && !github.event.inputs.perform-rollback}} From e9f2153f6917a4dbc3eb28db04e5a58d5155567b Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 23 Jun 2023 14:03:19 +0200 Subject: [PATCH 014/147] fix(extension-update-version.yml): remove and add origin remote to fix authentication issues with git remote --- .github/workflows/extension-update-version.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index 585042df..1bb44c58 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -31,7 +31,8 @@ jobs: run: | git config user.name "liquibot" git config user.email "liquibot@liquibase.org" - git remote set-url origin https://liquibot:${{ secrets.BOT_TOKEN }}@github.com/${{ github.repository_owner }}/${{ github.repository }}.git + git remote remove origin + git remote add origin https://liquibot:${{ secrets.BOT_TOKEN }}@github.com/${{ github.repository_owner }}/${{ github.repository }}.git - name: Prepare Maven Release if: ${{ !github.event.inputs.perform-release && !github.event.inputs.perform-rollback}} From e7d14bd4dc376794fd0df432cd72c90c63332186 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 23 Jun 2023 14:09:05 +0200 Subject: [PATCH 015/147] fix(extension-update-version.yml): remove unnecessary repository_owner variable from git remote add command to fix authentication issue --- .github/workflows/extension-update-version.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index 1bb44c58..06a88e4c 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -32,7 +32,7 @@ jobs: git config user.name "liquibot" git config user.email "liquibot@liquibase.org" git remote remove origin - git remote add origin https://liquibot:${{ secrets.BOT_TOKEN }}@github.com/${{ github.repository_owner }}/${{ github.repository }}.git + git remote add origin https://liquibot:${{ secrets.BOT_TOKEN }}@github.com/${{ github.repository }}.git - name: Prepare Maven Release if: ${{ !github.event.inputs.perform-release && !github.event.inputs.perform-rollback}} From 7f8f55a23e440fe84da3baaa1609184c5c8c7191 Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 27 Jun 2023 11:34:37 +0200 Subject: [PATCH 016/147] refactor(extension-update-version.yml): change Git user configuration to use environment variable for token and simplify remote URL The commit changes the way Git user is configured in the workflow by using an environment variable for the token and simplifying the remote URL. --- .github/workflows/extension-update-version.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index 06a88e4c..e6f37899 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -27,12 +27,14 @@ jobs: distribution: 'temurin' cache: 'maven' - - name: Configure Git user + - name: Configure Git run: | git config user.name "liquibot" git config user.email "liquibot@liquibase.org" git remote remove origin - git remote add origin https://liquibot:${{ secrets.BOT_TOKEN }}@github.com/${{ github.repository }}.git + git remote add origin https://liquibot:$GITHUB_TOKEN@github.com/$GITHUB_REPOSITORY.git + env: + GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} - name: Prepare Maven Release if: ${{ !github.event.inputs.perform-release && !github.event.inputs.perform-rollback}} From b04c965b962df7f68e6987034eeb051c8335bf55 Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 27 Jun 2023 11:39:46 +0200 Subject: [PATCH 017/147] fix(extension-update-version.yml): change remote origin URL to use http instead of https to avoid authentication issues --- .github/workflows/extension-update-version.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index e6f37899..12c6b7f0 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -32,7 +32,7 @@ jobs: git config user.name "liquibot" git config user.email "liquibot@liquibase.org" git remote remove origin - git remote add origin https://liquibot:$GITHUB_TOKEN@github.com/$GITHUB_REPOSITORY.git + git remote add origin http://liquibot:$GITHUB_TOKEN@github.com/$GITHUB_REPOSITORY.git env: GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} From 8485b96b63354c5a2c18a031bce7fe21fe011d84 Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 27 Jun 2023 11:46:59 +0200 Subject: [PATCH 018/147] fix(extension-update-version.yml): remove release:perform goal from Maven release preparation step to avoid unnecessary deployment of artifacts --- .github/workflows/extension-update-version.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index 12c6b7f0..1df232d2 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -39,7 +39,7 @@ jobs: - name: Prepare Maven Release if: ${{ !github.event.inputs.perform-release && !github.event.inputs.perform-rollback}} run: | - mvn -B release:clean release:prepare release:perform -Darguments="-Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -Darguments="-Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Perform Maven Release if: ${{ github.event.inputs.perform-release }} From aa900d1ea4a4669599b3c773f5aa26ad047a0921 Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 27 Jun 2023 12:01:49 +0200 Subject: [PATCH 019/147] refactor(extension-update-version.yml): remove redundant username and password arguments from Maven release and rollback commands to improve readability and maintainability --- .github/workflows/extension-update-version.yml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index 1df232d2..9c98213b 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -31,22 +31,18 @@ jobs: run: | git config user.name "liquibot" git config user.email "liquibot@liquibase.org" - git remote remove origin - git remote add origin http://liquibot:$GITHUB_TOKEN@github.com/$GITHUB_REPOSITORY.git - env: - GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} - name: Prepare Maven Release if: ${{ !github.event.inputs.perform-release && !github.event.inputs.perform-rollback}} run: | - mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -Darguments="-Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Perform Maven Release if: ${{ github.event.inputs.perform-release }} run: | - mvn -B release:perform -Darguments="-Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + mvn -B release:perform -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Perform Maven Release Rollback if: ${{ github.event.inputs.perform-rollback }} run: | - mvn -B release:rollback -Darguments="-Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ No newline at end of file + mvn -B release:rollback -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ No newline at end of file From 5679da930a376ea543c02e4257f92d9b63ef52bb Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 27 Jun 2023 12:12:10 +0200 Subject: [PATCH 020/147] chore(extension-update-version.yml): use environment variable for Github token instead of secrets to improve security --- .github/workflows/extension-update-version.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index 9c98213b..5d975cdf 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -16,6 +16,8 @@ jobs: update-version: name: Update extension version runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} steps: - name: Checkout code uses: actions/checkout@v3 @@ -35,14 +37,14 @@ jobs: - name: Prepare Maven Release if: ${{ !github.event.inputs.perform-release && !github.event.inputs.perform-rollback}} run: | - mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Perform Maven Release if: ${{ github.event.inputs.perform-release }} run: | - mvn -B release:perform -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + mvn -B release:perform -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Perform Maven Release Rollback if: ${{ github.event.inputs.perform-rollback }} run: | - mvn -B release:rollback -Dusername=liquibot -Dpassword=${{ secrets.BOT_TOKEN }} -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ No newline at end of file + mvn -B release:rollback -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ No newline at end of file From 5fa6980686c0bcdd44e3b01676a91fae8d0a9317 Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 27 Jun 2023 12:25:46 +0200 Subject: [PATCH 021/147] chore(extension-update-version.yml): add git pull before maven release and rollback to ensure latest changes are included --- .github/workflows/extension-update-version.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml index 5d975cdf..2f58f227 100644 --- a/.github/workflows/extension-update-version.yml +++ b/.github/workflows/extension-update-version.yml @@ -42,9 +42,11 @@ jobs: - name: Perform Maven Release if: ${{ github.event.inputs.perform-release }} run: | + git pull mvn -B release:perform -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Perform Maven Release Rollback if: ${{ github.event.inputs.perform-rollback }} run: | + git pull mvn -B release:rollback -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ No newline at end of file From 0687d93cfb7e6b0c9beaaa8fe7e0c449854d2450 Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 27 Jun 2023 12:49:36 +0200 Subject: [PATCH 022/147] feat(extension-release-perform.yml, extension-release-prepare.yml, extension-release-rollback.yml): add GitHub Actions workflows for Maven release process This commit adds three new GitHub Actions workflows to support the Maven release process for the extension. The `extension-release-prepare.yml` workflow prepares the release by cleaning the release and preparing it. The `extension-release-perform.yml` workflow performs the release by performing the Maven release with the specified release version. The `extension-release-rollback.yml` workflow rolls back the release if needed. All workflows use the `liquibot` user and email for Git configuration and use the `BOT_TOKEN` secret for authentication. The workflows also use Java 17 and Maven cache for setup. --- .../workflows/extension-release-perform.yml | 31 +++++++++++ .../workflows/extension-release-prepare.yml | 30 +++++++++++ .../workflows/extension-release-rollback.yml | 30 +++++++++++ .../workflows/extension-update-version.yml | 52 ------------------- 4 files changed, 91 insertions(+), 52 deletions(-) create mode 100644 .github/workflows/extension-release-perform.yml create mode 100644 .github/workflows/extension-release-prepare.yml create mode 100644 .github/workflows/extension-release-rollback.yml delete mode 100644 .github/workflows/extension-update-version.yml diff --git a/.github/workflows/extension-release-perform.yml b/.github/workflows/extension-release-perform.yml new file mode 100644 index 00000000..eef43454 --- /dev/null +++ b/.github/workflows/extension-release-perform.yml @@ -0,0 +1,31 @@ +name: Perform release + +on: + workflow_call: + +jobs: + perform-release: + name: Perform release + runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up JDK + uses: actions/setup-java@v2 + with: + java-version: 17 + distribution: 'temurin' + cache: 'maven' + + - name: Configure Git + run: | + git config user.name "liquibot" + git config user.email "liquibot@liquibase.org" + + - name: Perform Maven Release + run: | + mvn -B release:perform -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + diff --git a/.github/workflows/extension-release-prepare.yml b/.github/workflows/extension-release-prepare.yml new file mode 100644 index 00000000..e6361e03 --- /dev/null +++ b/.github/workflows/extension-release-prepare.yml @@ -0,0 +1,30 @@ +name: Prepare release + +on: + workflow_call: + +jobs: + prepare-release: + name: Prepare release + runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up JDK + uses: actions/setup-java@v2 + with: + java-version: 17 + distribution: 'temurin' + cache: 'maven' + + - name: Configure Git + run: | + git config user.name "liquibot" + git config user.email "liquibot@liquibase.org" + + - name: Prepare Maven Release + run: | + mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} diff --git a/.github/workflows/extension-release-rollback.yml b/.github/workflows/extension-release-rollback.yml new file mode 100644 index 00000000..85195044 --- /dev/null +++ b/.github/workflows/extension-release-rollback.yml @@ -0,0 +1,30 @@ +name: Release rollback + +on: + workflow_call: +jobs: + rollback-release: + name: Release rollback + runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up JDK + uses: actions/setup-java@v2 + with: + java-version: 17 + distribution: 'temurin' + cache: 'maven' + + - name: Configure Git + run: | + git config user.name "liquibot" + git config user.email "liquibot@liquibase.org" + + - name: Perform Maven Release Rollback + if: ${{ github.event.inputs.perform-rollback }} + run: | + mvn -B release:rollback -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ No newline at end of file diff --git a/.github/workflows/extension-update-version.yml b/.github/workflows/extension-update-version.yml deleted file mode 100644 index 2f58f227..00000000 --- a/.github/workflows/extension-update-version.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Update extension version - -on: - workflow_call: - inputs: - perform-release: - description: 'Flag to perform the release or just prepare it' - required: true - type: boolean - perform-rollback: - description: 'Flag to indicate if the release should be rolled back' - required: true - type: boolean - -jobs: - update-version: - name: Update extension version - runs-on: ubuntu-latest - env: - GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Set up JDK - uses: actions/setup-java@v2 - with: - java-version: 17 - distribution: 'temurin' - cache: 'maven' - - - name: Configure Git - run: | - git config user.name "liquibot" - git config user.email "liquibot@liquibase.org" - - - name: Prepare Maven Release - if: ${{ !github.event.inputs.perform-release && !github.event.inputs.perform-rollback}} - run: | - mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - - - name: Perform Maven Release - if: ${{ github.event.inputs.perform-release }} - run: | - git pull - mvn -B release:perform -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - - - name: Perform Maven Release Rollback - if: ${{ github.event.inputs.perform-rollback }} - run: | - git pull - mvn -B release:rollback -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ No newline at end of file From 94b5a13e510a214d1c87627008f1a97082e33110 Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 27 Jun 2023 13:01:53 +0200 Subject: [PATCH 023/147] chore(extension-release-perform.yml, extension-release-rollback.yml): add connectionUrl and tag arguments to Maven release command to properly tag and connect to the repository during release and rollback --- .github/workflows/extension-release-perform.yml | 2 +- .github/workflows/extension-release-rollback.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/extension-release-perform.yml b/.github/workflows/extension-release-perform.yml index eef43454..b88fd928 100644 --- a/.github/workflows/extension-release-perform.yml +++ b/.github/workflows/extension-release-perform.yml @@ -27,5 +27,5 @@ jobs: - name: Perform Maven Release run: | - mvn -B release:perform -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + mvn -B release:perform -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DconnectionUrl=scm:git:git@github.com:${{ github.event.repository.name }}.git -Dtag=${{ github.event.inputs.liquibaseVersion }} diff --git a/.github/workflows/extension-release-rollback.yml b/.github/workflows/extension-release-rollback.yml index 85195044..0c0fa307 100644 --- a/.github/workflows/extension-release-rollback.yml +++ b/.github/workflows/extension-release-rollback.yml @@ -2,6 +2,7 @@ name: Release rollback on: workflow_call: + jobs: rollback-release: name: Release rollback @@ -25,6 +26,5 @@ jobs: git config user.email "liquibot@liquibase.org" - name: Perform Maven Release Rollback - if: ${{ github.event.inputs.perform-rollback }} run: | - mvn -B release:rollback -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ No newline at end of file + mvn -B release:rollback -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DconnectionUrl=scm:git:git@github.com:${{ github.event.repository.name }}.git -Dtag=${{ github.event.inputs.liquibaseVersion }} \ No newline at end of file From eb5c693ac5eca01dd03c7de9c72ef88b74232a06 Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 27 Jun 2023 13:13:19 +0200 Subject: [PATCH 024/147] chore(extension-release): replace deprecated 'github.event.repository.name' with 'github.repository' to fix deprecation warning in GitHub Actions workflows --- .github/workflows/extension-release-perform.yml | 2 +- .github/workflows/extension-release-rollback.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/extension-release-perform.yml b/.github/workflows/extension-release-perform.yml index b88fd928..ed4160d1 100644 --- a/.github/workflows/extension-release-perform.yml +++ b/.github/workflows/extension-release-perform.yml @@ -27,5 +27,5 @@ jobs: - name: Perform Maven Release run: | - mvn -B release:perform -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DconnectionUrl=scm:git:git@github.com:${{ github.event.repository.name }}.git -Dtag=${{ github.event.inputs.liquibaseVersion }} + mvn -B release:perform -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DconnectionUrl=scm:git:git@github.com:${{ github.repository }}.git -Dtag=${{ github.event.inputs.liquibaseVersion }} diff --git a/.github/workflows/extension-release-rollback.yml b/.github/workflows/extension-release-rollback.yml index 0c0fa307..d5fd99bf 100644 --- a/.github/workflows/extension-release-rollback.yml +++ b/.github/workflows/extension-release-rollback.yml @@ -27,4 +27,4 @@ jobs: - name: Perform Maven Release Rollback run: | - mvn -B release:rollback -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DconnectionUrl=scm:git:git@github.com:${{ github.event.repository.name }}.git -Dtag=${{ github.event.inputs.liquibaseVersion }} \ No newline at end of file + mvn -B release:rollback -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DconnectionUrl=scm:git:git@github.com:${{ github.repository }}.git -Dtag=${{ github.event.inputs.liquibaseVersion }} \ No newline at end of file From 9f1586459f297eb0d5798bb369b30bc13165d7f1 Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 27 Jun 2023 13:24:19 +0200 Subject: [PATCH 025/147] chore(extension-release): update connectionUrl to use https instead of ssh to fix Maven release and rollback workflows --- .github/workflows/extension-release-perform.yml | 3 +-- .github/workflows/extension-release-rollback.yml | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/extension-release-perform.yml b/.github/workflows/extension-release-perform.yml index ed4160d1..23548b11 100644 --- a/.github/workflows/extension-release-perform.yml +++ b/.github/workflows/extension-release-perform.yml @@ -27,5 +27,4 @@ jobs: - name: Perform Maven Release run: | - mvn -B release:perform -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DconnectionUrl=scm:git:git@github.com:${{ github.repository }}.git -Dtag=${{ github.event.inputs.liquibaseVersion }} - + mvn -B release:perform -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DconnectionUrl=scm:git:https://github.com/${{ github.repository }}.git -Dtag=${{ github.event.inputs.liquibaseVersion }} \ No newline at end of file diff --git a/.github/workflows/extension-release-rollback.yml b/.github/workflows/extension-release-rollback.yml index d5fd99bf..c0ba4f36 100644 --- a/.github/workflows/extension-release-rollback.yml +++ b/.github/workflows/extension-release-rollback.yml @@ -27,4 +27,4 @@ jobs: - name: Perform Maven Release Rollback run: | - mvn -B release:rollback -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DconnectionUrl=scm:git:git@github.com:${{ github.repository }}.git -Dtag=${{ github.event.inputs.liquibaseVersion }} \ No newline at end of file + mvn -B release:rollback -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DconnectionUrl=scm:git:https://github.com/${{ github.repository }}.git -Dtag=${{ github.event.inputs.liquibaseVersion }} \ No newline at end of file From e925760f6d99f30fa31e5304407aed37d6b1674e Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 27 Jun 2023 13:45:31 +0200 Subject: [PATCH 026/147] feat(extension-release): add download and upload of release files to prepare, perform and rollback workflows to enable rollback of releases. --- .github/workflows/extension-release-perform.yml | 9 +++++++++ .github/workflows/extension-release-prepare.yml | 9 +++++++++ .github/workflows/extension-release-rollback.yml | 9 +++++++++ 3 files changed, 27 insertions(+) diff --git a/.github/workflows/extension-release-perform.yml b/.github/workflows/extension-release-perform.yml index 23548b11..e9c89885 100644 --- a/.github/workflows/extension-release-perform.yml +++ b/.github/workflows/extension-release-perform.yml @@ -25,6 +25,15 @@ jobs: git config user.name "liquibot" git config user.email "liquibot@liquibase.org" + - name: Download release files + id: download-release-files + uses: dawidd6/action-download-artifact@v2 + with: + github_token: ${{secrets.BOT_TOKEN}} + workflow: create-release.yml + name: release-files + if_no_artifact_found: fail + - name: Perform Maven Release run: | mvn -B release:perform -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DconnectionUrl=scm:git:https://github.com/${{ github.repository }}.git -Dtag=${{ github.event.inputs.liquibaseVersion }} \ No newline at end of file diff --git a/.github/workflows/extension-release-prepare.yml b/.github/workflows/extension-release-prepare.yml index e6361e03..6ef98cf2 100644 --- a/.github/workflows/extension-release-prepare.yml +++ b/.github/workflows/extension-release-prepare.yml @@ -28,3 +28,12 @@ jobs: - name: Prepare Maven Release run: | mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + + - name: Save Release files + uses: actions/upload-artifact@v2 + with: + name: release-files + path: | + **/pom.xml.* + **/release.properties + diff --git a/.github/workflows/extension-release-rollback.yml b/.github/workflows/extension-release-rollback.yml index c0ba4f36..feae8a63 100644 --- a/.github/workflows/extension-release-rollback.yml +++ b/.github/workflows/extension-release-rollback.yml @@ -25,6 +25,15 @@ jobs: git config user.name "liquibot" git config user.email "liquibot@liquibase.org" + - name: Download release files + id: download-release-files + uses: dawidd6/action-download-artifact@v2 + with: + github_token: ${{secrets.BOT_TOKEN}} + workflow: create-release.yml + name: release-files + if_no_artifact_found: fail + - name: Perform Maven Release Rollback run: | mvn -B release:rollback -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DconnectionUrl=scm:git:https://github.com/${{ github.repository }}.git -Dtag=${{ github.event.inputs.liquibaseVersion }} \ No newline at end of file From 5da1ca57393c7e57e5dd83bfcdba4e758fcfa280 Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 27 Jun 2023 14:01:03 +0200 Subject: [PATCH 027/147] chore(extension-release-perform.yml, extension-release-rollback.yml): add support for downloading artifacts from previous workflow runs This commit adds support for downloading artifacts from previous workflow runs by adding the `run_id` parameter to the `dawidd6/action-download-artifact` action. This allows the workflows to download artifacts from previous runs of the `create-release.yml` workflow. Additionally, the `workflow_conclusion` parameter is set to an empty string to ensure that the action does not fail if the previous workflow run did not complete successfully. --- .github/workflows/extension-release-perform.yml | 2 ++ .github/workflows/extension-release-rollback.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/extension-release-perform.yml b/.github/workflows/extension-release-perform.yml index e9c89885..5006c5d6 100644 --- a/.github/workflows/extension-release-perform.yml +++ b/.github/workflows/extension-release-perform.yml @@ -30,9 +30,11 @@ jobs: uses: dawidd6/action-download-artifact@v2 with: github_token: ${{secrets.BOT_TOKEN}} + run_id: ${{ github.event.workflow_run.id }} workflow: create-release.yml name: release-files if_no_artifact_found: fail + workflow_conclusion: "" - name: Perform Maven Release run: | diff --git a/.github/workflows/extension-release-rollback.yml b/.github/workflows/extension-release-rollback.yml index feae8a63..c2201730 100644 --- a/.github/workflows/extension-release-rollback.yml +++ b/.github/workflows/extension-release-rollback.yml @@ -30,9 +30,11 @@ jobs: uses: dawidd6/action-download-artifact@v2 with: github_token: ${{secrets.BOT_TOKEN}} + run_id: ${{ github.event.workflow_run.id }} workflow: create-release.yml name: release-files if_no_artifact_found: fail + workflow_conclusion: "" - name: Perform Maven Release Rollback run: | From 8f9de5e4d388413043bdf6e8dc979b4c3a41a7a0 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 28 Jun 2023 07:19:01 +0200 Subject: [PATCH 028/147] chore(workflows): update GitHub Actions workflow to use the latest version of the download-artifact and upload-artifact actions The GitHub Actions workflows for extension release perform, extension release prepare, and extension release rollback have been updated to use the latest version of the download-artifact and upload-artifact actions. This ensures compatibility with the latest features and improvements provided by these actions. The previous versions (v2) of these actions have been replaced with the new versions (v3) in the workflows. --- .github/workflows/extension-release-perform.yml | 7 +------ .github/workflows/extension-release-prepare.yml | 2 +- .github/workflows/extension-release-rollback.yml | 7 +------ 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/.github/workflows/extension-release-perform.yml b/.github/workflows/extension-release-perform.yml index 5006c5d6..83ac58ae 100644 --- a/.github/workflows/extension-release-perform.yml +++ b/.github/workflows/extension-release-perform.yml @@ -27,14 +27,9 @@ jobs: - name: Download release files id: download-release-files - uses: dawidd6/action-download-artifact@v2 + uses: actions/download-artifact@v3 with: - github_token: ${{secrets.BOT_TOKEN}} - run_id: ${{ github.event.workflow_run.id }} - workflow: create-release.yml name: release-files - if_no_artifact_found: fail - workflow_conclusion: "" - name: Perform Maven Release run: | diff --git a/.github/workflows/extension-release-prepare.yml b/.github/workflows/extension-release-prepare.yml index 6ef98cf2..7123119f 100644 --- a/.github/workflows/extension-release-prepare.yml +++ b/.github/workflows/extension-release-prepare.yml @@ -30,7 +30,7 @@ jobs: mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Save Release files - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: release-files path: | diff --git a/.github/workflows/extension-release-rollback.yml b/.github/workflows/extension-release-rollback.yml index c2201730..106841a3 100644 --- a/.github/workflows/extension-release-rollback.yml +++ b/.github/workflows/extension-release-rollback.yml @@ -27,14 +27,9 @@ jobs: - name: Download release files id: download-release-files - uses: dawidd6/action-download-artifact@v2 + uses: actions/download-artifact@v3 with: - github_token: ${{secrets.BOT_TOKEN}} - run_id: ${{ github.event.workflow_run.id }} - workflow: create-release.yml name: release-files - if_no_artifact_found: fail - workflow_conclusion: "" - name: Perform Maven Release Rollback run: | From 8217f035e0d1ef420dc43308a623220c8107d8ab Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 28 Jun 2023 08:06:01 +0200 Subject: [PATCH 029/147] chore(extension-release-prepare.yml): add liquibase jar file to the list of files to be included in the release package --- .github/workflows/extension-release-prepare.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/extension-release-prepare.yml b/.github/workflows/extension-release-prepare.yml index 7123119f..f64ea453 100644 --- a/.github/workflows/extension-release-prepare.yml +++ b/.github/workflows/extension-release-prepare.yml @@ -36,4 +36,5 @@ jobs: path: | **/pom.xml.* **/release.properties + **/*${{ github.event.inputs.liquibaseVersion }}.jar From 818352634374a6969041c32288e50fd16d9db0ca Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 28 Jun 2023 08:21:33 +0200 Subject: [PATCH 030/147] chore(workflows): remove unnecessary steps in extension-release-perform.yml, extension-release-prepare.yml, and extension-release-rollback.yml workflows The steps related to checking out code and setting up JDK have been removed from the extension-release-perform.yml, extension-release-prepare.yml, and extension-release-rollback.yml workflows. These steps were not required for the execution of these workflows and were causing unnecessary overhead. Removing these steps will simplify the workflows and improve their performance. --- .github/workflows/extension-release-perform.yml | 10 ---------- .github/workflows/extension-release-prepare.yml | 12 ------------ .github/workflows/extension-release-rollback.yml | 10 ---------- 3 files changed, 32 deletions(-) diff --git a/.github/workflows/extension-release-perform.yml b/.github/workflows/extension-release-perform.yml index 83ac58ae..286dcc42 100644 --- a/.github/workflows/extension-release-perform.yml +++ b/.github/workflows/extension-release-perform.yml @@ -10,16 +10,6 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Set up JDK - uses: actions/setup-java@v2 - with: - java-version: 17 - distribution: 'temurin' - cache: 'maven' - - name: Configure Git run: | git config user.name "liquibot" diff --git a/.github/workflows/extension-release-prepare.yml b/.github/workflows/extension-release-prepare.yml index f64ea453..d5df9030 100644 --- a/.github/workflows/extension-release-prepare.yml +++ b/.github/workflows/extension-release-prepare.yml @@ -10,16 +10,6 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Set up JDK - uses: actions/setup-java@v2 - with: - java-version: 17 - distribution: 'temurin' - cache: 'maven' - - name: Configure Git run: | git config user.name "liquibot" @@ -36,5 +26,3 @@ jobs: path: | **/pom.xml.* **/release.properties - **/*${{ github.event.inputs.liquibaseVersion }}.jar - diff --git a/.github/workflows/extension-release-rollback.yml b/.github/workflows/extension-release-rollback.yml index 106841a3..da5ccdb2 100644 --- a/.github/workflows/extension-release-rollback.yml +++ b/.github/workflows/extension-release-rollback.yml @@ -10,16 +10,6 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Set up JDK - uses: actions/setup-java@v2 - with: - java-version: 17 - distribution: 'temurin' - cache: 'maven' - - name: Configure Git run: | git config user.name "liquibot" From 1a369ead9a177614e140ff6f0cd1e3797078b494 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 28 Jun 2023 08:24:51 +0200 Subject: [PATCH 031/147] chore(extension-release-prepare.yml): add steps to checkout code, set up JDK, and configure Git in the workflow The changes were made to improve the workflow for preparing the extension release. The new steps include checking out the code, setting up JDK version 17 using Temurin distribution, and configuring Git with the username "liquibot". These changes ensure that the workflow has the necessary dependencies and configurations to successfully prepare the extension release. --- .github/workflows/extension-release-prepare.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/extension-release-prepare.yml b/.github/workflows/extension-release-prepare.yml index d5df9030..8f43d6ad 100644 --- a/.github/workflows/extension-release-prepare.yml +++ b/.github/workflows/extension-release-prepare.yml @@ -10,6 +10,16 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up JDK + uses: actions/setup-java@v2 + with: + java-version: 17 + distribution: 'temurin' + cache: 'maven' + - name: Configure Git run: | git config user.name "liquibot" From 031969a71e31ec5f281c20046fa6782f50632566 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 12 Jul 2023 08:42:32 +0200 Subject: [PATCH 032/147] chore(create-release.yml): update liquibase/build-logic version to v0.3.3 chore(extension-attach-artifact-release.yml): update liquibase/build-logic version to v0.3.3 chore(os-extension-test.yml): update liquibase/build-logic version to v0.3.3 chore(pro-extension-test.yml): update liquibase/build-logic version to v0.3.3 feat(extension-attach-artifact-release.yml): add release-prepare step to update branch with latest commits feat(extension-attach-artifact-release.yml): build release artifacts using 'mvn clean install -DskipTests' command feat(extension-attach-artifact-release.yml): update sign_artifact.sh script to use target directory instead of assets directory feat(extension-attach-artifact-release.yml): update upload-release-asset step to use target directory instead of assets directory --- .github/workflows/create-release.yml | 2 +- .../extension-attach-artifact-release.yml | 43 +++++++++---------- .github/workflows/os-extension-test.yml | 2 +- .github/workflows/pro-extension-test.yml | 2 +- 4 files changed, 24 insertions(+), 25 deletions(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index fad82bb8..7f172f26 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -5,7 +5,7 @@ on: jobs: sonar: - uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.3.2 + uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.3.3 secrets: inherit create-release: diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index 865ce895..ea639e56 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -14,6 +14,11 @@ on: required: true jobs: + + release-prepare: + uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.3 + secrets: inherit + attach-to-release: name: Attach Artifact to Release if: github.event.pull_request.merged == true @@ -24,31 +29,25 @@ jobs: - name: Get Reusable Script Files run: | - curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.2/.github/get_draft_release.sh - curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.2/.github/sign_artifact.sh - curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.2/.github/upload_asset.sh + curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.3/.github/get_draft_release.sh + curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.3/.github/sign_artifact.sh + curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.3/.github/upload_asset.sh chmod +x $PWD/.github/get_draft_release.sh chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh + - name: Update branch with latest commits # needed for getting the latest pom.xml generated by release-prepare step + run: | + git pull origin ${{ env.GITHUB_REF_NAME }} + git checkout HEAD~1 + - name: Get Artifact ID id: get-artifact-id run: echo "artifact_id=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout)" >> $GITHUB_ENV - - name: Download artifact - id: download-artifact - uses: dawidd6/action-download-artifact@v2 - with: - github_token: ${{secrets.BOT_TOKEN}} - workflow: test.yml - pr: ${{github.event.pull_request.number}} - name: ${{ env.artifact_id }}-artifacts - path: ./assets - repo: ${{ github.repository }} - check_artifacts: true - skip_unpack: false - if_no_artifact_found: fail - workflow_conclusion: "" + - name: Build release artifacts + id: build-release-artifacts + run: mvn clean install -DskipTests - name: Get Release Tag id: get-release-tag @@ -77,10 +76,10 @@ jobs: run: | gpg -K version=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) - ./.github/sign_artifact.sh ./assets/${{ env.artifact_id }}-${version}.jar - ./.github/sign_artifact.sh ./assets/${{ env.artifact_id }}-${version}.pom - ./.github/sign_artifact.sh ./assets/${{ env.artifact_id }}-${version}-javadoc.jar - ./.github/sign_artifact.sh ./assets/${{ env.artifact_id }}-${version}-sources.jar + ./.github/sign_artifact.sh ./target/${{ env.artifact_id }}-${version}.jar + ./.github/sign_artifact.sh ./target/${{ env.artifact_id }}-${version}.pom + ./.github/sign_artifact.sh ./target/${{ env.artifact_id }}-${version}-javadoc.jar + ./.github/sign_artifact.sh ./target/${{ env.artifact_id }}-${version}-sources.jar - name: Attach Files to Draft Release id: upload-release-asset @@ -88,4 +87,4 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} ASSET_NAME_PREFIX: "${{ env.artifact_id }}-" - ASSET_DIR: ./assets + ASSET_DIR: ./target diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index b36fe14c..4e33987c 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -78,5 +78,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.2 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.3 secrets: inherit diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index 27145b39..831be56b 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -98,5 +98,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.2 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.3 secrets: inherit From dcc2b9b611dac526089439f73dfd68498d1a28f8 Mon Sep 17 00:00:00 2001 From: jandroav Date: Thu, 13 Jul 2023 08:59:57 +0200 Subject: [PATCH 033/147] chore(upload_zip.sh): add script to upload zip file as an asset to a draft release chore(create-release.yml): update sonar-push workflow to version v0.3.4 chore(extension-attach-artifact-release.yml): update extension-release-prepare workflow to version v0.3.4 chore(extension-release-prepare.yml): update maven release preparation steps and add release-rollback workflow chore(extension-release-rollback.yml): update maven release rollback steps chore(os-extension-test.yml): update sonar-pull-request workflow to version v0.3.4 chore(pro-extension-test.yml): update sonar-pull-request workflow to version v0.3.4 --- .github/upload_zip.sh | 54 +++++++++++++++++++ .github/workflows/create-release.yml | 2 +- .../extension-attach-artifact-release.yml | 17 ++++-- .../workflows/extension-release-prepare.yml | 11 +++- .../workflows/extension-release-rollback.yml | 6 ++- .github/workflows/os-extension-test.yml | 2 +- .github/workflows/pro-extension-test.yml | 2 +- 7 files changed, 85 insertions(+), 9 deletions(-) create mode 100644 .github/upload_zip.sh diff --git a/.github/upload_zip.sh b/.github/upload_zip.sh new file mode 100644 index 00000000..5dee32f5 --- /dev/null +++ b/.github/upload_zip.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +set -e + +if [[ -z "$GITHUB_TOKEN" ]]; then + echo "Set the GITHUB_TOKEN env variable." + exit 1 +fi + +if [[ -z "$ASSET_NAME_PREFIX" ]]; then + echo "Set the ASSET_NAME_PREFIX env variable." + exit 1 +fi + +if [[ -z "$ASSET_DIR" ]]; then + echo "Set the ASSET_DIR env variable." + exit 1 +fi + +VERSION=$1 +if [[ -z "$VERSION" ]]; then + echo "Set the VERSION parameter." + exit 1 +fi + +_DIR=$(dirname "$0") +UPLOAD_URL=$($_DIR/get_draft_release.sh UPLOAD_URL) + +upload_asset() { + local file=$1 + local size=$2 + local content_type=$3 + echo "Uploading $file ($size bytes) to $UPLOAD_URL" + curl \ + -H "Authorization: token $GITHUB_TOKEN" \ + -H "Content-Length: $size"\ + -H "Content-Type: $content_type" \ + --data-binary @$file "$UPLOAD_URL?name=$(basename $file)" +} + +EXTENSION=".zip" +FILE=$ASSET_DIR/$ASSET_NAME_PREFIX$VERSION$EXTENSION +# Skip if zip files do not exist (some extensions do not generate examples in zip format) +if [[ ! -f "$FILE" && "$FILE" != *".zip" ]]; then + echo "$FILE does not exist." +fi +SIZE=$(wc -c $FILE | awk '{print $1}') +if [[ $SIZE -eq 0 ]]; then + echo "$FILE is empty." +fi +MIME=$(file -b --mime-type $FILE) +upload_asset $FILE $SIZE $MIME + + diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 7f172f26..a59513e9 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -5,7 +5,7 @@ on: jobs: sonar: - uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.3.3 + uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.3.4 secrets: inherit create-release: diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index ea639e56..e8de6207 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -16,7 +16,7 @@ on: jobs: release-prepare: - uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.3 + uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.4 secrets: inherit attach-to-release: @@ -29,9 +29,9 @@ jobs: - name: Get Reusable Script Files run: | - curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.3/.github/get_draft_release.sh - curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.3/.github/sign_artifact.sh - curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.3/.github/upload_asset.sh + curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.4/.github/get_draft_release.sh + curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.4/.github/sign_artifact.sh + curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.4/.github/upload_asset.sh chmod +x $PWD/.github/get_draft_release.sh chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh @@ -88,3 +88,12 @@ jobs: GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} ASSET_NAME_PREFIX: "${{ env.artifact_id }}-" ASSET_DIR: ./target + + - name: Attach Zip File to Draft Release + id: upload-release-zip + run: ./.github/upload_zip.sh $(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) + continue-on-error: true + env: + GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} + ASSET_NAME_PREFIX: "${{ env.artifact_id }}-" + ASSET_DIR: ./target diff --git a/.github/workflows/extension-release-prepare.yml b/.github/workflows/extension-release-prepare.yml index 8f43d6ad..803a31a2 100644 --- a/.github/workflows/extension-release-prepare.yml +++ b/.github/workflows/extension-release-prepare.yml @@ -27,7 +27,10 @@ jobs: - name: Prepare Maven Release run: | - mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + mvn -B build-helper:parse-version versions:set release:clean release:prepare \ + -Dusername=liquibot -Dpassword=$GITHUB_TOKEN \ + -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ + -DdevelopmentVersion =\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0-SNAPSHOT -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Save Release files uses: actions/upload-artifact@v3 @@ -36,3 +39,9 @@ jobs: path: | **/pom.xml.* **/release.properties + + release-rollback: + needs: prepare-release + if: ${{ always() && contains(needs.*.result, 'failure') }} + uses: liquibase/build-logic/.github/workflows/extension-release-rollback.yml@v0.3.4 + secrets: inherit diff --git a/.github/workflows/extension-release-rollback.yml b/.github/workflows/extension-release-rollback.yml index da5ccdb2..a3f01ba9 100644 --- a/.github/workflows/extension-release-rollback.yml +++ b/.github/workflows/extension-release-rollback.yml @@ -23,4 +23,8 @@ jobs: - name: Perform Maven Release Rollback run: | - mvn -B release:rollback -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DconnectionUrl=scm:git:https://github.com/${{ github.repository }}.git -Dtag=${{ github.event.inputs.liquibaseVersion }} \ No newline at end of file + mvn -B release:rollback \ + -Dusername=liquibot -Dpassword=$GITHUB_TOKEN \ + -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ + -DdevelopmentVersion =\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0-SNAPSHOT -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} \ + -DconnectionUrl=scm:git:https://github.com/${{ github.repository }}.git -Dtag=${{ github.event.inputs.liquibaseVersion }} \ No newline at end of file diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index 4e33987c..beacf2ca 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -78,5 +78,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.3 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.4 secrets: inherit diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index 831be56b..9e612633 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -98,5 +98,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.3 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.4 secrets: inherit From 3d5ecb8b28328f02328b9ee891fa186c113aafa3 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 14 Jul 2023 08:03:24 +0200 Subject: [PATCH 034/147] chore(extension-attach-artifact-release.yml): add support for uploading zip artifact in addition to other artifacts --- .github/workflows/extension-attach-artifact-release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index e8de6207..1e6a292d 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -32,6 +32,7 @@ jobs: curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.4/.github/get_draft_release.sh curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.4/.github/sign_artifact.sh curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.4/.github/upload_asset.sh + curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.4/.github/upload_zip.sh chmod +x $PWD/.github/get_draft_release.sh chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh From 6f1884bca047c05602d688df49f61001d56206ca Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 14 Jul 2023 08:03:52 +0200 Subject: [PATCH 035/147] fix(extension-attach-artifact-release.yml): fix typo in curl command to download upload_zip.sh script feat(extension-attach-artifact-release.yml): add execution permission to upload_zip.sh script --- .github/workflows/extension-attach-artifact-release.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index 1e6a292d..e764c4d7 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -32,10 +32,11 @@ jobs: curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.4/.github/get_draft_release.sh curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.4/.github/sign_artifact.sh curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.4/.github/upload_asset.sh - curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.4/.github/upload_zip.sh + curl -o $PWD/.github/upload_zip.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.4/.github/upload_zip.sh chmod +x $PWD/.github/get_draft_release.sh chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh + chmod +x $PWD/.github/upload_zip.sh - name: Update branch with latest commits # needed for getting the latest pom.xml generated by release-prepare step run: | From 5be284720b27b189092c8d5051b7cb0a067ea298 Mon Sep 17 00:00:00 2001 From: Jake Newton Date: Thu, 27 Jul 2023 16:11:45 -0500 Subject: [PATCH 036/147] feature: automerge and close dependabot PRs with minor or patch updates only --- .github/workflows/dependabot-automerge.yml | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .github/workflows/dependabot-automerge.yml diff --git a/.github/workflows/dependabot-automerge.yml b/.github/workflows/dependabot-automerge.yml new file mode 100644 index 00000000..2cc1445b --- /dev/null +++ b/.github/workflows/dependabot-automerge.yml @@ -0,0 +1,39 @@ +# The name of the workflow +name: Automerge Dependabot PRs + +# The event that triggers the workflow +on: + workflow_call: + +jobs: + dependabot: + # The name of the job + name: Merge dependabot + # The type of runner that the job will run on + runs-on: ubuntu-latest + # The permissions for the GITHUB_TOKEN + permissions: + contents: write + pull-requests: write + # Conditional statement to run the job only when the event was triggered by 'dependabot[bot]' + if: ${{ github.actor == 'dependabot[bot]' }} + + steps: + - name: Dependabot metadata + id: dependabot-metadata + # Use 'dependabot/fetch-metadata' to fetch the metadata about the update + uses: dependabot/fetch-metadata@v1.3.1 + + - name: Approve patch and minor updates + # Conditional statement to run the steps only when the update type is a patch or minor + if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-patch' || steps.dependabot-metadata.outputs.update-type == 'version-update:semver-minor'}} + run: | + # Command to merge the PR + gh pr merge --auto --merge "$PR_URL" + # Command to approve the PR with a custom message + gh pr review $PR_URL --approve -b "I'm **approving** this pull request because **it includes a patch or minor update**" + env: + # The URL of the PR to be merged and approved + PR_URL: ${{github.event.pull_request.html_url}} + # The GitHub token secret + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} From c46521dd22b3b61d2b562e8d691f18125b88f924 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 28 Jul 2023 15:32:08 +0200 Subject: [PATCH 037/147] chore(extension-attach-artifact-release.yml): set up JDK 17 for the workflow to use Java 17 chore(extension-attach-artifact-release.yml): add caching for Maven dependencies to improve build performance --- .github/workflows/extension-attach-artifact-release.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index ea639e56..6374d981 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -27,6 +27,13 @@ jobs: - run: sleep 30 - uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: 17 + distribution: 'temurin' + cache: 'maven' + - name: Get Reusable Script Files run: | curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.3/.github/get_draft_release.sh From c75862664ebb0ddd1cbbe032b87c38d192414c36 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 28 Jul 2023 15:43:31 +0200 Subject: [PATCH 038/147] chore(create-release.yml): update liquibase/build-logic to v0.3.4 in sonar job chore(extension-attach-artifact-release.yml): update liquibase/build-logic to v0.3.4 in release-prepare job chore(extension-attach-artifact-release.yml): update liquibase/build-logic to v0.3.4 in Get Reusable Script Files step chore(os-extension-test.yml): update liquibase/build-logic to v0.3.4 in sonar-pr job chore(pro-extension-test.yml): update liquibase/build-logic to v0.3.4 in sonar-pr job --- .github/workflows/create-release.yml | 2 +- .github/workflows/extension-attach-artifact-release.yml | 8 ++++---- .github/workflows/os-extension-test.yml | 2 +- .github/workflows/pro-extension-test.yml | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 7f172f26..a59513e9 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -5,7 +5,7 @@ on: jobs: sonar: - uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.3.3 + uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.3.4 secrets: inherit create-release: diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index 6374d981..a6fecad8 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -16,7 +16,7 @@ on: jobs: release-prepare: - uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.3 + uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.4 secrets: inherit attach-to-release: @@ -36,9 +36,9 @@ jobs: - name: Get Reusable Script Files run: | - curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.3/.github/get_draft_release.sh - curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.3/.github/sign_artifact.sh - curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.3/.github/upload_asset.sh + curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.4/.github/get_draft_release.sh + curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.4/.github/sign_artifact.sh + curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.4/.github/upload_asset.sh chmod +x $PWD/.github/get_draft_release.sh chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index 4e33987c..beacf2ca 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -78,5 +78,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.3 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.4 secrets: inherit diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index 831be56b..9e612633 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -98,5 +98,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.3 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.4 secrets: inherit From 3b62e45c4c3a8a04613af58012bcd343775b273e Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 2 Aug 2023 09:56:11 +0200 Subject: [PATCH 039/147] chore(create-release.yml): update sonar-push.yml version to v0.3.5 chore(extension-attach-artifact-release.yml): update extension-release-prepare.yml version to v0.3.5 and set pushChanges to "false" chore(extension-release-prepare.yml): add input for pushChanges and pass it to mvn command chore(extension-release-published.yml): update extension-release-prepare.yml version to v0.3.5 and set pushChanges to "true" chore(os-extension-test.yml): update sonar-pull-request.yml version to v0.3.5 chore(pro-extension-test.yml): update sonar-pull-request.yml version to v0.3.5 --- .github/workflows/create-release.yml | 2 +- .../workflows/extension-attach-artifact-release.yml | 10 ++++++---- .github/workflows/extension-release-prepare.yml | 6 +++++- .github/workflows/extension-release-published.yml | 7 +++++++ .github/workflows/os-extension-test.yml | 2 +- .github/workflows/pro-extension-test.yml | 2 +- 6 files changed, 21 insertions(+), 8 deletions(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index a59513e9..2b33bcf9 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -5,7 +5,7 @@ on: jobs: sonar: - uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.3.4 + uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.3.5 secrets: inherit create-release: diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index a6fecad8..347224c6 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -16,7 +16,9 @@ on: jobs: release-prepare: - uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.4 + uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.5 + with: + pushChanges: "false" secrets: inherit attach-to-release: @@ -36,9 +38,9 @@ jobs: - name: Get Reusable Script Files run: | - curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.4/.github/get_draft_release.sh - curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.4/.github/sign_artifact.sh - curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.4/.github/upload_asset.sh + curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.5/.github/get_draft_release.sh + curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.5/.github/sign_artifact.sh + curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.5/.github/upload_asset.sh chmod +x $PWD/.github/get_draft_release.sh chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh diff --git a/.github/workflows/extension-release-prepare.yml b/.github/workflows/extension-release-prepare.yml index 8f43d6ad..56996444 100644 --- a/.github/workflows/extension-release-prepare.yml +++ b/.github/workflows/extension-release-prepare.yml @@ -2,6 +2,10 @@ name: Prepare release on: workflow_call: + inputs: + pushChanges: + required: true + type: string jobs: prepare-release: @@ -27,7 +31,7 @@ jobs: - name: Prepare Maven Release run: | - mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DpushChanges=${{ inputs.pushChanges }} - name: Save Release files uses: actions/upload-artifact@v3 diff --git a/.github/workflows/extension-release-published.yml b/.github/workflows/extension-release-published.yml index 11a9d5f8..ef7bf201 100644 --- a/.github/workflows/extension-release-published.yml +++ b/.github/workflows/extension-release-published.yml @@ -11,6 +11,13 @@ on: required: true jobs: + + release-prepare-push: + uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.5 + with: + pushChanges: "true" + secrets: inherit + release: runs-on: ubuntu-latest steps: diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index beacf2ca..93d6ffe3 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -78,5 +78,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.4 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.5 secrets: inherit diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index 9e612633..4abb0ff9 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -98,5 +98,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.4 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.5 secrets: inherit From 656c2fb2a0ed62c01b3023df669de9185eb6b03e Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 2 Aug 2023 10:19:36 +0200 Subject: [PATCH 040/147] chore(extension-attach-artifact-release.yml): remove unnecessary step to update branch with latest commits chore(extension-attach-artifact-release.yml): remove unused git pull and git checkout commands chore(extension-attach-artifact-release.yml): remove unnecessary step to get Artifact ID --- .github/workflows/extension-attach-artifact-release.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index 347224c6..65b168da 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -45,11 +45,6 @@ jobs: chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh - - name: Update branch with latest commits # needed for getting the latest pom.xml generated by release-prepare step - run: | - git pull origin ${{ env.GITHUB_REF_NAME }} - git checkout HEAD~1 - - name: Get Artifact ID id: get-artifact-id run: echo "artifact_id=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout)" >> $GITHUB_ENV From e73c3d1e1e117b88ab4c84c7181264f33215cb65 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 2 Aug 2023 10:52:17 +0200 Subject: [PATCH 041/147] chore(create-release.yml): add write permissions for contents and pull-requests to the workflow chore(dependabot-automerge.yml): add write permissions for contents and pull-requests to the workflow --- .github/workflows/create-release.yml | 4 ++++ .github/workflows/dependabot-automerge.yml | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 2b33bcf9..5ce35d5d 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -3,6 +3,10 @@ name: Create Release on: workflow_call: +permissions: + contents: write + pull-requests: write + jobs: sonar: uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.3.5 diff --git a/.github/workflows/dependabot-automerge.yml b/.github/workflows/dependabot-automerge.yml index 2cc1445b..8022067e 100644 --- a/.github/workflows/dependabot-automerge.yml +++ b/.github/workflows/dependabot-automerge.yml @@ -5,6 +5,10 @@ name: Automerge Dependabot PRs on: workflow_call: +permissions: + contents: write + pull-requests: write + jobs: dependabot: # The name of the job From 52abda5e7d0ee88dd4dc0d4915ae077b5e724385 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 2 Aug 2023 10:54:55 +0200 Subject: [PATCH 042/147] chore(dependabot-automerge.yml): remove unnecessary permissions block from the workflow file --- .github/workflows/dependabot-automerge.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/dependabot-automerge.yml b/.github/workflows/dependabot-automerge.yml index 8022067e..2cc1445b 100644 --- a/.github/workflows/dependabot-automerge.yml +++ b/.github/workflows/dependabot-automerge.yml @@ -5,10 +5,6 @@ name: Automerge Dependabot PRs on: workflow_call: -permissions: - contents: write - pull-requests: write - jobs: dependabot: # The name of the job From bac8aeb60e2ba34fcb256350fc4a9076cadb0c54 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 2 Aug 2023 11:24:27 +0200 Subject: [PATCH 043/147] chore(extension-attach-artifact-release.yml): remove release-prepare job as it is no longer needed chore(extension-release-prepare.yml): remove pushChanges input as it is no longer needed chore(extension-release-published.yml): remove pushChanges input from release-prepare-push job as it is no longer needed --- .../extension-attach-artifact-release.yml | 14 ++++---------- .github/workflows/extension-release-prepare.yml | 6 +----- .github/workflows/extension-release-published.yml | 2 -- 3 files changed, 5 insertions(+), 17 deletions(-) diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index 65b168da..c3483e68 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -15,12 +15,6 @@ on: jobs: - release-prepare: - uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.5 - with: - pushChanges: "false" - secrets: inherit - attach-to-release: name: Attach Artifact to Release if: github.event.pull_request.merged == true @@ -45,14 +39,14 @@ jobs: chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh + - name: Build release artifacts + id: build-release-artifacts + run: mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DpushChanges=false + - name: Get Artifact ID id: get-artifact-id run: echo "artifact_id=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout)" >> $GITHUB_ENV - - name: Build release artifacts - id: build-release-artifacts - run: mvn clean install -DskipTests - - name: Get Release Tag id: get-release-tag run: echo "release_tag=$(./.github/get_draft_release.sh TAG)" >> $GITHUB_ENV diff --git a/.github/workflows/extension-release-prepare.yml b/.github/workflows/extension-release-prepare.yml index 56996444..8f43d6ad 100644 --- a/.github/workflows/extension-release-prepare.yml +++ b/.github/workflows/extension-release-prepare.yml @@ -2,10 +2,6 @@ name: Prepare release on: workflow_call: - inputs: - pushChanges: - required: true - type: string jobs: prepare-release: @@ -31,7 +27,7 @@ jobs: - name: Prepare Maven Release run: | - mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DpushChanges=${{ inputs.pushChanges }} + mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - name: Save Release files uses: actions/upload-artifact@v3 diff --git a/.github/workflows/extension-release-published.yml b/.github/workflows/extension-release-published.yml index ef7bf201..d1963f05 100644 --- a/.github/workflows/extension-release-published.yml +++ b/.github/workflows/extension-release-published.yml @@ -14,8 +14,6 @@ jobs: release-prepare-push: uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.5 - with: - pushChanges: "true" secrets: inherit release: From b3c021e47bf46dd91cdcec56065f4e244165ec6a Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 2 Aug 2023 11:41:37 +0200 Subject: [PATCH 044/147] chore(extension-attach-artifact-release.yml): configure Git user.name and user.email to "liquibot" and "liquibot@liquibase.org" respectively for proper identification fix(extension-attach-artifact-release.yml): fix build-release-artifacts step to include git reset HEAD~ --hard command to undo the previous commit chore(extension-release-published.yml): rename release-prepare-push job to release-prepare for clarity --- .github/workflows/extension-attach-artifact-release.yml | 9 ++++++++- .github/workflows/extension-release-published.yml | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index c3483e68..624f1129 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -39,9 +39,16 @@ jobs: chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh + - name: Configure Git + run: | + git config user.name "liquibot" + git config user.email "liquibot@liquibase.org" + - name: Build release artifacts id: build-release-artifacts - run: mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DpushChanges=false + run: | + mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DpushChanges=false + git reset HEAD~ --hard - name: Get Artifact ID id: get-artifact-id diff --git a/.github/workflows/extension-release-published.yml b/.github/workflows/extension-release-published.yml index d1963f05..e4fbaf40 100644 --- a/.github/workflows/extension-release-published.yml +++ b/.github/workflows/extension-release-published.yml @@ -12,7 +12,7 @@ on: jobs: - release-prepare-push: + release-prepare: uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.5 secrets: inherit From f6e4e70871a550bba32b0fa02cdd8d8e1e367509 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 2 Aug 2023 11:55:26 +0200 Subject: [PATCH 045/147] chore(extension-attach-artifact-release.yml): add mvn clean install -DskipTests step to the release workflow to build the artifact without running tests --- .github/workflows/extension-attach-artifact-release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index 624f1129..10288c40 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -49,6 +49,7 @@ jobs: run: | mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DpushChanges=false git reset HEAD~ --hard + mvn clean install -DskipTests - name: Get Artifact ID id: get-artifact-id From 7b0b9845190f0ea963b41863f3ef7c4f5b04ca48 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 2 Aug 2023 12:17:17 +0200 Subject: [PATCH 046/147] chore(extension-release-published.yml): configure Git user for Liquibase bot chore(extension-release-published.yml): prepare Maven release with Liquibase bot credentials and skip tests and deployment chore(extension-release-published.yml): update branch with latest commits to get the latest pom.xml generated by release-prepare step chore(extension-release-published.yml): get artifact ID for further use --- .../workflows/extension-release-published.yml | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/.github/workflows/extension-release-published.yml b/.github/workflows/extension-release-published.yml index e4fbaf40..29458d9d 100644 --- a/.github/workflows/extension-release-published.yml +++ b/.github/workflows/extension-release-published.yml @@ -12,15 +12,25 @@ on: jobs: - release-prepare: - uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.5 - secrets: inherit - release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 + - name: Configure Git + run: | + git config user.name "liquibot" + git config user.email "liquibot@liquibase.org" + + - name: Prepare Maven Release + run: | + mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + + - name: Update branch with latest commits # needed for getting the latest pom.xml generated by release-prepare step + run: | + git pull origin ${{ env.GITHUB_REF_NAME }} + git checkout HEAD~1 + - name: Get Artifact ID id: get-artifact-id run: echo "artifact_id=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout)" >> $GITHUB_ENV From 156a11a30cbcc7cacbd280ac7ce196f775121e50 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 2 Aug 2023 12:25:00 +0200 Subject: [PATCH 047/147] chore(extension-release-published.yml): reorganize workflow steps for better readability and maintainability feat(extension-release-published.yml): add setup for Java 17 and Maven Central Repository publishing --- .../workflows/extension-release-published.yml | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/extension-release-published.yml b/.github/workflows/extension-release-published.yml index 29458d9d..d26b7cd5 100644 --- a/.github/workflows/extension-release-published.yml +++ b/.github/workflows/extension-release-published.yml @@ -17,6 +17,16 @@ jobs: steps: - uses: actions/checkout@v3 + - name: Set up Java for publishing to Maven Central Repository + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + cache: 'maven' + server-id: sonatype-nexus-staging + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + - name: Configure Git run: | git config user.name "liquibot" @@ -42,16 +52,6 @@ jobs: filename: "${{ env.artifact_id }}-*" out-file-path: "." - - name: Set up Java for publishing to Maven Central Repository - uses: actions/setup-java@v3 - with: - java-version: '17' - distribution: 'temurin' - cache: 'maven' - server-id: sonatype-nexus-staging - server-username: MAVEN_USERNAME - server-password: MAVEN_PASSWORD - - name: Publish to Maven Central env: MAVEN_USERNAME: ${{ secrets.SONATYPE_USERNAME }} From 02fc6d8a881055ad056ce390b1a751608f0e8dd1 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 2 Aug 2023 12:46:44 +0200 Subject: [PATCH 048/147] fix(workflows): change branch reference from 'main' to 'master' in extension-release-prepare.yml to match repository default branch name fix(workflows): remove unnecessary steps in extension-release-published.yml to improve build process efficiency feat(workflows): add release-prepare job to extension-release-published.yml to prepare the release artifacts before publishing --- .../workflows/extension-release-prepare.yml | 2 ++ .../workflows/extension-release-published.yml | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/extension-release-prepare.yml b/.github/workflows/extension-release-prepare.yml index 8f43d6ad..65aa227d 100644 --- a/.github/workflows/extension-release-prepare.yml +++ b/.github/workflows/extension-release-prepare.yml @@ -12,6 +12,8 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v3 + with: + ref: main - name: Set up JDK uses: actions/setup-java@v2 diff --git a/.github/workflows/extension-release-published.yml b/.github/workflows/extension-release-published.yml index d26b7cd5..71d0aed4 100644 --- a/.github/workflows/extension-release-published.yml +++ b/.github/workflows/extension-release-published.yml @@ -32,14 +32,11 @@ jobs: git config user.name "liquibot" git config user.email "liquibot@liquibase.org" - - name: Prepare Maven Release + - name: Build release artifacts + id: build-release-artifacts run: | - mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} - - - name: Update branch with latest commits # needed for getting the latest pom.xml generated by release-prepare step - run: | - git pull origin ${{ env.GITHUB_REF_NAME }} - git checkout HEAD~1 + mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DpushChanges=false + git reset HEAD~ --hard - name: Get Artifact ID id: get-artifact-id @@ -68,4 +65,9 @@ jobs: -Djavadoc=${{ env.artifact_id }}-${version}-javadoc.jar \ -Dfiles=${{ env.artifact_id }}-${version}.jar.asc,${{ env.artifact_id }}-${version}-sources.jar.asc,${{ env.artifact_id }}-${version}-javadoc.jar.asc,${{ env.artifact_id }}-${version}.pom.asc \ -Dtypes=jar.asc,jar.asc,jar.asc,pom.asc \ - -Dclassifiers=,sources,javadoc, \ No newline at end of file + -Dclassifiers=,sources,javadoc, + + release-prepare: + needs: release + uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.5 + secrets: inherit \ No newline at end of file From 677e8cbaf5a6d61972055bc00639d9a3cf844969 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 2 Aug 2023 12:52:33 +0200 Subject: [PATCH 049/147] chore(extension-release-published.yml): add required permissions for the workflow to write to contents and pull requests --- .github/workflows/extension-release-published.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/extension-release-published.yml b/.github/workflows/extension-release-published.yml index 71d0aed4..a66fd6fe 100644 --- a/.github/workflows/extension-release-published.yml +++ b/.github/workflows/extension-release-published.yml @@ -9,9 +9,12 @@ on: SONATYPE_TOKEN: description: 'SONATYPE_TOKEN from the caller workflow' required: true + +permissions: + contents: write + pull-requests: write jobs: - release: runs-on: ubuntu-latest steps: From 6db99003c6e35a69a3eb7e0e6fd3aa29e92c8783 Mon Sep 17 00:00:00 2001 From: jandroav Date: Thu, 3 Aug 2023 10:39:09 +0200 Subject: [PATCH 050/147] chore(create-release.yml): remove unnecessary permissions and fix indentation chore(extension-attach-artifact-release.yml): remove unnecessary empty line chore(extension-release-published.yml): remove unnecessary permissions and fix indentation chore(extension-release-published.yml): rename 'release-prepare' job to 'maven-release' for clarity --- .github/workflows/create-release.yml | 4 ---- .github/workflows/extension-attach-artifact-release.yml | 1 - .github/workflows/extension-release-published.yml | 6 +----- 3 files changed, 1 insertion(+), 10 deletions(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 5ce35d5d..1b4bb29d 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -2,10 +2,6 @@ name: Create Release on: workflow_call: - -permissions: - contents: write - pull-requests: write jobs: sonar: diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index 10288c40..1987e1e3 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -14,7 +14,6 @@ on: required: true jobs: - attach-to-release: name: Attach Artifact to Release if: github.event.pull_request.merged == true diff --git a/.github/workflows/extension-release-published.yml b/.github/workflows/extension-release-published.yml index a66fd6fe..ad63622b 100644 --- a/.github/workflows/extension-release-published.yml +++ b/.github/workflows/extension-release-published.yml @@ -9,10 +9,6 @@ on: SONATYPE_TOKEN: description: 'SONATYPE_TOKEN from the caller workflow' required: true - -permissions: - contents: write - pull-requests: write jobs: release: @@ -70,7 +66,7 @@ jobs: -Dtypes=jar.asc,jar.asc,jar.asc,pom.asc \ -Dclassifiers=,sources,javadoc, - release-prepare: + maven-release: needs: release uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.5 secrets: inherit \ No newline at end of file From 764a55926a736fb11add61cde0fba5db6566400e Mon Sep 17 00:00:00 2001 From: jandroav Date: Mon, 7 Aug 2023 11:06:26 +0200 Subject: [PATCH 051/147] chore(create-release.yml): update sonar-push.yml version to v0.3.6 for the sonar job chore(extension-attach-artifact-release.yml): update script file versions to v0.3.6 for get_draft_release.sh, sign_artifact.sh, and upload_asset.sh chore(extension-release-published.yml): update extension-release-prepare.yml version to v0.3.6 for the maven-release job chore(os-extension-test.yml): update sonar-pull-request.yml version to v0.3.6 for the sonar-pr job chore(pro-extension-test.yml): update sonar-pull-request.yml version to v0.3.6 for the sonar-pr job --- .github/workflows/create-release.yml | 2 +- .../extension-attach-artifact-release.yml | 6 +++--- .../workflows/extension-release-published.yml | 2 +- .github/workflows/os-extension-test.yml | 18 ++++++++++++++---- .github/workflows/pro-extension-test.yml | 17 ++++++++++++++--- 5 files changed, 33 insertions(+), 12 deletions(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 1b4bb29d..450e5c3e 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -5,7 +5,7 @@ on: jobs: sonar: - uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.3.5 + uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.3.6 secrets: inherit create-release: diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index 1987e1e3..7c9ae1d9 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -31,9 +31,9 @@ jobs: - name: Get Reusable Script Files run: | - curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.5/.github/get_draft_release.sh - curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.5/.github/sign_artifact.sh - curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.5/.github/upload_asset.sh + curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.6/.github/get_draft_release.sh + curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.6/.github/sign_artifact.sh + curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.6/.github/upload_asset.sh chmod +x $PWD/.github/get_draft_release.sh chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh diff --git a/.github/workflows/extension-release-published.yml b/.github/workflows/extension-release-published.yml index ad63622b..2cbedf44 100644 --- a/.github/workflows/extension-release-published.yml +++ b/.github/workflows/extension-release-published.yml @@ -68,5 +68,5 @@ jobs: maven-release: needs: release - uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.5 + uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.6 secrets: inherit \ No newline at end of file diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index 93d6ffe3..a0244c9a 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -2,7 +2,17 @@ name: Build and Test Extension on: workflow_call: - + inputs: + java: + description: 'Java version to test' + required: true + default: '[8, 11, 17, 18]' + type: string + os: + description: 'Operating system to test' + required: true + default: '["ubuntu-latest", "windows-latest"]' + type: string jobs: build: name: Build & Package @@ -44,8 +54,8 @@ jobs: strategy: fail-fast: false matrix: - java: [ 8, 11, 17, 18 ] - os: [ ubuntu-latest, windows-latest ] + java: ${{ fromJSON(github.event.inputs.java)}} + os: ${{ fromJSON(github.event.inputs.os)}} name: Test Java ${{ matrix.java }} - ${{ matrix.os }} runs-on: ${{ matrix.os }} needs: build @@ -78,5 +88,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.5 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.6 secrets: inherit diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index 4abb0ff9..e446a563 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -2,6 +2,17 @@ name: Build and Test Pro Extension on: workflow_call: + inputs: + java: + description: 'Java version to test' + required: true + default: '[8, 11, 17, 18]' + type: string + os: + description: 'Operating system to test' + required: true + default: '["ubuntu-latest", "windows-latest"]' + type: string secrets: SONAR_TOKEN: description: 'SONAR_TOKEN from the caller workflow' @@ -64,8 +75,8 @@ jobs: strategy: fail-fast: false matrix: - java: [ 8, 11, 17, 18 ] - os: [ ubuntu-latest, windows-latest ] + java: ${{ fromJSON(github.event.inputs.java)}} + os: ${{ fromJSON(github.event.inputs.os)}} name: Test Java ${{ matrix.java }} - ${{ matrix.os }} runs-on: ${{ matrix.os }} needs: build @@ -98,5 +109,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.5 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.6 secrets: inherit From 1b93157658b61bb31940a1e71aaf2d488ef02f0b Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 8 Aug 2023 09:12:15 +0200 Subject: [PATCH 052/147] docs(README.md): add documentation for calling reusable workflows with parameters The README.md file was updated to include documentation on how to call reusable workflows with parameters. The added section explains how to trigger the `os-extension-test.yml` and `pro-extension-test.yml` workflows, which run tests for Liquibase extensions on different Java versions and operating systems. The `java` input specifies the Java versions to test, and the `os` input specifies the operating systems to test. Both inputs are required and have default values. If the inputs are not provided, the default values of `'[8, 11, 17, 18]'` for Java versions and `'["ubuntu-latest", "windows-latest"]'` for operating systems will be used. --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.md b/README.md index 184a4be2..8e09565a 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,24 @@ jobs: uses: liquibase/build-logic/.github/workflows/{workflow}.yml@main ``` +### Calling reusable workflows with parameters + +`os-extension-test.yml` and `pro-extension-test.yml` are triggered by a workflow call event and runs tests for Liquibase extensions (os/pro) on different Java versions and operating systems. The `java` input specifies the Java versions to test, and the `os` input specifies the operating systems to test. Both inputs are required and have default values. + +```yml +name: {Job name} +on: + pull_request: +jobs: + {workflow}: + uses: liquibase/build-logic/.github/workflows/{workflow}.yml@main + with: + java: '[17, 18]' + os: '["ubuntu-latest", "windows-latest"]' +``` + +If inputs are not provided, `'[8, 11, 17, 18]'` and `'["ubuntu-latest", "windows-latest"]'` will be used as default values + ## Example Build/Test/Release Extension Workflow ```mermaid From 6b12144a186aabe24979b9eaf3d9653260d8440e Mon Sep 17 00:00:00 2001 From: jandroav Date: Thu, 10 Aug 2023 13:52:41 +0200 Subject: [PATCH 053/147] feat(deb-packaging.yml): add new workflow for creating and uploading deb packages - The new `deb-packaging.yml` workflow is added to the `.github/workflows` directory. - The workflow is triggered by a `repository_dispatch` event with the `liquibase-release` type, or manually through the GitHub Actions workflow dispatch. - The workflow accepts inputs for `groupId`, `artifactId`, and `version` from the user. These inputs are used to configure the Maven build. - The workflow runs on an Ubuntu 22.04 runner. - The necessary setup steps are performed, including checking out the repository, setting up Java 17, setting up Maven 3.9.2, and configuring AWS credentials. - The workflow downloads the release artifact specified by the `artifactId` and `version` inputs from the GitHub release page. - The Maven build is executed with the provided `groupId`, `artifactId`, and `version` inputs, skipping tests. - The `deb-s3` gem is installed to enable uploading the deb package. - The deb package is uploaded to the `repo.liquibase.com` S3 bucket, preserving versions and signing with the specified GPG secret key. feat(README.md): update table of reusable workflows - The `deb-packaging.yml` workflow is added to the table of reusable workflows in the README.md file. feat(pom.xml): add universal pom for deb packaging - The `pom.xml` file is added to the repository. - The pom.xml file contains the necessary configuration for deb packaging. - It includes properties for the Maven Antrun Plugin and the jdeb plugin. - The Maven Antrun Plugin is configured to unpack the tar.gz artifact. - The jdeb plugin is configured to create the deb package with the specified control directory and data set. - A profile is added for remote repositories, which includes the Liquibase and Liquibase Pro repositories for CI environments. --- .github/workflows/deb-packaging.yml | 101 +++++++++++++++++++++++++ README.md | 1 + pom.xml | 110 ++++++++++++++++++++++++++++ 3 files changed, 212 insertions(+) create mode 100644 .github/workflows/deb-packaging.yml create mode 100644 pom.xml diff --git a/.github/workflows/deb-packaging.yml b/.github/workflows/deb-packaging.yml new file mode 100644 index 00000000..4001fec7 --- /dev/null +++ b/.github/workflows/deb-packaging.yml @@ -0,0 +1,101 @@ +name: deb packaging +on: + repository_dispatch: + types: [liquibase-release] + workflow_dispatch: + inputs: + groupId: + description: 'Value from the groupId field in pom.xml. i.e. org.liquibase' + required: true + default: 'org.liquibase' + artifactId: + description: 'Value from the artifactId field in pom.xml. i.e. liquibase' + required: true + default: 'liquibase' + version: + description: 'Value from the version field in pom.xml. i.e 4.23.0' + required: true + +env: + MAVEN_VERSION: '3.9.2' + +jobs: + + upload_deb: + name: Upload ${{ inputs.artifactId }} deb package + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v3 + + - name: Set up Java + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + cache: 'maven' + + - name: Set up Maven + uses: stCarolas/setup-maven@v4.5 + with: + maven-version: ${{ env.MAVEN_VERSION }} + + # look for dependencies in maven + - name: maven-settings-xml-action + uses: whelk-io/maven-settings-xml-action@v20 + with: + repositories: | + [ + { + "id": "liquibase", + "url": "https://maven.pkg.github.com/liquibase/liquibase", + "releases": { + "enabled": "false" + }, + "snapshots": { + "enabled": "true", + "updatePolicy": "always" + } + } + ] + servers: | + [ + { + "id": "liquibase", + "username": "liquibot", + "password": "${{ secrets.LIQUIBOT_PAT }}" + } + ] + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 3.1.4 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + aws-access-key-id: ${{ secrets.AWS_PROD_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_PROD_SECRET_ACCESS_KEY }} + aws-region: us-east-1 + + - name: Download ${{ inputs.artifactId }} Release + run: | + mkdir -p target + wget -q -O target/${{ inputs.artifactId }}-${{ inputs.version }}.tar.gz https://github.com/liquibase/${{ inputs.artifactId }}/releases/download/v${{ inputs.version }}/${{ inputs.artifactId }}-${{ inputs.version }}.tar.gz + + - name: Build ${{ inputs.artifactId }} deb package + run: | + mvn package -DgroupId=${{ inputs.groupId }} -DartifactId=${{ inputs.artifactId }} -Drevision=${{ inputs.version }} -DskipTests + + - name: Install deb-s3 gem + run: gem install deb-s3 + + - name: Upload ${{ inputs.artifactId }} deb package + run: | + sudo apt install pinentry-tty + echo "2" | sudo update-alternatives --config pinentry + echo "${{ secrets.GPG_SECRET }}" | gpg --batch --import --pinentry-mode loopback --passphrase "${{ secrets.GPG_PASSPHRASE }}" + export GPG_TTY=$(tty) + echo '${{ secrets.GPG_PASSPHRASE }}' > pass.txt + deb-s3 upload --preserve-versions --sign "${{ secrets.GPG_SECRET_KEY_ID }}" --gpg-options "\-\-pinentry-mode loopback \-\-batch \-\-passphrase\-file pass.txt \-\-yes \-\-quiet" --bucket repo.liquibase.com target/${{ inputs.artifactId }}-${{ inputs.version }}.deb + diff --git a/README.md b/README.md index 8e09565a..9763d38d 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ Please review the below table of reusable workflows and their descriptions: |-----------------------------------------|---------------------------------------------------------------------------------------| | `build-artifact.yml` | Runs maven build and saves artifacts | | `create-release.yml` | Runs Release Drafter to auto create draft release notes | +| `deb-packaging.yml` | Creates and uploads deb packages | | `extension-attach-artifact-release.yml` | Attaches a tested artifact to the draft release | | `extension-release-published.yml` | Publishes a release to Maven Central | | `extension-update-version.yml` | Updates release and development `pom.xml` versions | diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..80d47d3e --- /dev/null +++ b/pom.xml @@ -0,0 +1,110 @@ + + + 4.0.0 + ${groupId} + ${artifactId} + ${revision} + + Universal pom for deb packaging + + + 3.1.0 + 1.10 + + + + + + + + + + org.apache.maven.plugins + maven-antrun-plugin + ${maven.antrun.version} + + + unpack + package + + + + + + + run + + + + + + + org.vafer + jdeb + ${org.vafer.jdeb.version} + + + create-deb + package + + jdeb + + + + + ${project.build.directory}/${project.artifactId}-${project.version}.deb + ${project.basedir}/src/${project.artifactId}/deb/control + + + ${project.build.directory}/dist-unpacked + directory + + perm + /opt/liquibase + 755 + + + + ${project.basedir}/src/${project.artifactId}/main/archive/${project.artifactId}-env.sh + file + + perm + /etc/profile.d/ + 755 + + + + + + + + + + + + remote-repositories + + + env.CI + true + + + + + liquibase + https://maven.pkg.github.com/liquibase/liquibase + + true + + + + liquibase-pro + https://maven.pkg.github.com/liquibase/liquibase-pro + + true + + + + + + From e9f124dc9711bff9e6930fc1a8e6647c01644463 Mon Sep 17 00:00:00 2001 From: jandroav Date: Thu, 10 Aug 2023 13:54:50 +0200 Subject: [PATCH 054/147] chore(pom.xml): remove liquibase-pro repository from the project configuration The liquibase-pro repository was removed from the project configuration as it is no longer needed. This repository was previously used to fetch dependencies for the Liquibase Pro version, but it is no longer required for the current project setup. --- pom.xml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/pom.xml b/pom.xml index 80d47d3e..a7811e3f 100644 --- a/pom.xml +++ b/pom.xml @@ -97,13 +97,6 @@ true - - liquibase-pro - https://maven.pkg.github.com/liquibase/liquibase-pro - - true - - From c49bee24583f778f05ec43d2fdca648863969898 Mon Sep 17 00:00:00 2001 From: jandroav Date: Thu, 10 Aug 2023 15:53:56 +0200 Subject: [PATCH 055/147] fix(deb-packaging.yml): update mvn package command to use deb-pom.xml file for deb packaging feat(deb-pom.xml): add pom.xml file for deb packaging with necessary plugins and configurations --- .github/workflows/deb-packaging.yml | 2 +- pom.xml => .github/workflows/deb-pom.xml | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename pom.xml => .github/workflows/deb-pom.xml (100%) diff --git a/.github/workflows/deb-packaging.yml b/.github/workflows/deb-packaging.yml index 4001fec7..dc3e7605 100644 --- a/.github/workflows/deb-packaging.yml +++ b/.github/workflows/deb-packaging.yml @@ -85,7 +85,7 @@ jobs: - name: Build ${{ inputs.artifactId }} deb package run: | - mvn package -DgroupId=${{ inputs.groupId }} -DartifactId=${{ inputs.artifactId }} -Drevision=${{ inputs.version }} -DskipTests + mvn package -DgroupId=${{ inputs.groupId }} -DartifactId=${{ inputs.artifactId }} -Drevision=${{ inputs.version }} -DskipTests -f ./.github/deb-pom.xml - name: Install deb-s3 gem run: gem install deb-s3 diff --git a/pom.xml b/.github/workflows/deb-pom.xml similarity index 100% rename from pom.xml rename to .github/workflows/deb-pom.xml From 88ace45e7b7bad0aafe4eb2f2ccff19f993545b8 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 11 Aug 2023 08:45:10 +0200 Subject: [PATCH 056/147] feat(package-deb.yml): add workflow for creating and uploading deb packages feat(package-deb.yml): add workflow for creating and uploading deb packages feat(control): add control file for Liquibase Debian Installer feat(postinst): add post-installation script for setting LIQUIBASE_HOME and PATH feat(liquibase-env.sh): add environment script for setting LIQUIBASE_HOME and PATH --- .github/workflows/{deb-packaging.yml => package-deb.yml} | 0 README.md | 2 +- src/liquibase/deb/control/control | 9 +++++++++ src/liquibase/deb/control/postinst | 6 ++++++ src/liquibase/main/archive/liquibase-env.sh | 6 ++++++ 5 files changed, 22 insertions(+), 1 deletion(-) rename .github/workflows/{deb-packaging.yml => package-deb.yml} (100%) create mode 100644 src/liquibase/deb/control/control create mode 100644 src/liquibase/deb/control/postinst create mode 100644 src/liquibase/main/archive/liquibase-env.sh diff --git a/.github/workflows/deb-packaging.yml b/.github/workflows/package-deb.yml similarity index 100% rename from .github/workflows/deb-packaging.yml rename to .github/workflows/package-deb.yml diff --git a/README.md b/README.md index 9763d38d..daaf7042 100644 --- a/README.md +++ b/README.md @@ -62,11 +62,11 @@ Please review the below table of reusable workflows and their descriptions: |-----------------------------------------|---------------------------------------------------------------------------------------| | `build-artifact.yml` | Runs maven build and saves artifacts | | `create-release.yml` | Runs Release Drafter to auto create draft release notes | -| `deb-packaging.yml` | Creates and uploads deb packages | | `extension-attach-artifact-release.yml` | Attaches a tested artifact to the draft release | | `extension-release-published.yml` | Publishes a release to Maven Central | | `extension-update-version.yml` | Updates release and development `pom.xml` versions | | `os-extension-test.yml` | Unit tests across build matrix on previously built artifact | +| `package-deb.yml` | Creates and uploads deb packages | | `pro-extension-test.yml` | Same as OS job, but with additional Pro-only vars such as License Key | | `sonar-pull-request.yml` | Code Coverage Scan for PRs. Requires branch name parameter | | `sonar-push.yml` | Same as PR job, but for pushes to main. Does not require branch name parameter | diff --git a/src/liquibase/deb/control/control b/src/liquibase/deb/control/control new file mode 100644 index 00000000..56d47758 --- /dev/null +++ b/src/liquibase/deb/control/control @@ -0,0 +1,9 @@ +Package: liquibase +Version: [[version]] +Section: misc +Priority: optional +Architecture: all +Depends: +Maintainer: Nathan Voxland +Description: Liquibase Debian Installer +Distribution: development diff --git a/src/liquibase/deb/control/postinst b/src/liquibase/deb/control/postinst new file mode 100644 index 00000000..22fc2013 --- /dev/null +++ b/src/liquibase/deb/control/postinst @@ -0,0 +1,6 @@ +#!/bin/sh + +# Needed once the installation is complete. No need to open a new terminal +export LIQUIBASE_HOME=/opt/liquibase +export PATH=$PATH:$LIQUIBASE_HOME +exec $SHELL \ No newline at end of file diff --git a/src/liquibase/main/archive/liquibase-env.sh b/src/liquibase/main/archive/liquibase-env.sh new file mode 100644 index 00000000..641720a4 --- /dev/null +++ b/src/liquibase/main/archive/liquibase-env.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# Needed when restarting the terminal +export LIQUIBASE_HOME=/opt/liquibase +export PATH=$PATH:$LIQUIBASE_HOME +exec $SHELL \ No newline at end of file From a9dedae8e7eda9f7ccb9ccee9e18a7af1e29e850 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 11 Aug 2023 08:47:15 +0200 Subject: [PATCH 057/147] chore(package-deb-pom.xml): add pom.xml for deb packaging chore(package-deb.yml): rename workflow to "DEB packaging" for clarity chore(package-deb.yml): update path to package-deb-pom.xml in the workflow --- .github/workflows/{deb-pom.xml => package-deb-pom.xml} | 0 .github/workflows/package-deb.yml | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) rename .github/workflows/{deb-pom.xml => package-deb-pom.xml} (100%) diff --git a/.github/workflows/deb-pom.xml b/.github/workflows/package-deb-pom.xml similarity index 100% rename from .github/workflows/deb-pom.xml rename to .github/workflows/package-deb-pom.xml diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index dc3e7605..7b92d4ca 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -1,4 +1,4 @@ -name: deb packaging +name: DEB packaging on: repository_dispatch: types: [liquibase-release] @@ -85,7 +85,7 @@ jobs: - name: Build ${{ inputs.artifactId }} deb package run: | - mvn package -DgroupId=${{ inputs.groupId }} -DartifactId=${{ inputs.artifactId }} -Drevision=${{ inputs.version }} -DskipTests -f ./.github/deb-pom.xml + mvn package -DgroupId=${{ inputs.groupId }} -DartifactId=${{ inputs.artifactId }} -Drevision=${{ inputs.version }} -DskipTests -f ./.github/package-deb-pom.xml - name: Install deb-s3 gem run: gem install deb-s3 From 5ba9b8e4ee8e1efb0bb42883c1ba6689c3d7d627 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 11 Aug 2023 08:58:15 +0200 Subject: [PATCH 058/147] chore(package-deb-pom.xml): remove unused profile for remote repositories chore(package-deb.yml): remove unused maven-settings-xml-action step for configuring remote repositories --- .github/workflows/package-deb-pom.xml | 21 ------------------- .github/workflows/package-deb.yml | 30 +++------------------------ 2 files changed, 3 insertions(+), 48 deletions(-) diff --git a/.github/workflows/package-deb-pom.xml b/.github/workflows/package-deb-pom.xml index a7811e3f..e9a855ac 100644 --- a/.github/workflows/package-deb-pom.xml +++ b/.github/workflows/package-deb-pom.xml @@ -79,25 +79,4 @@ - - - - remote-repositories - - - env.CI - true - - - - - liquibase - https://maven.pkg.github.com/liquibase/liquibase - - true - - - - - diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index 7b92d4ca..ac4a4cd5 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -16,6 +16,7 @@ on: description: 'Value from the version field in pom.xml. i.e 4.23.0' required: true + env: MAVEN_VERSION: '3.9.2' @@ -39,33 +40,6 @@ jobs: with: maven-version: ${{ env.MAVEN_VERSION }} - # look for dependencies in maven - - name: maven-settings-xml-action - uses: whelk-io/maven-settings-xml-action@v20 - with: - repositories: | - [ - { - "id": "liquibase", - "url": "https://maven.pkg.github.com/liquibase/liquibase", - "releases": { - "enabled": "false" - }, - "snapshots": { - "enabled": "true", - "updatePolicy": "always" - } - } - ] - servers: | - [ - { - "id": "liquibase", - "username": "liquibot", - "password": "${{ secrets.LIQUIBOT_PAT }}" - } - ] - - name: Set up Ruby uses: ruby/setup-ruby@v1 with: @@ -98,4 +72,6 @@ jobs: export GPG_TTY=$(tty) echo '${{ secrets.GPG_PASSPHRASE }}' > pass.txt deb-s3 upload --preserve-versions --sign "${{ secrets.GPG_SECRET_KEY_ID }}" --gpg-options "\-\-pinentry-mode loopback \-\-batch \-\-passphrase\-file pass.txt \-\-yes \-\-quiet" --bucket repo.liquibase.com target/${{ inputs.artifactId }}-${{ inputs.version }}.deb + + From 0564f963a7a768efe7dc5a7c958182c990c70c73 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 11 Aug 2023 09:08:26 +0200 Subject: [PATCH 059/147] chore(package-deb.yml): update workflow to include required inputs and secrets for packaging DEB --- .github/workflows/package-deb.yml | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index ac4a4cd5..481a5fef 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -1,19 +1,33 @@ name: DEB packaging on: - repository_dispatch: - types: [liquibase-release] - workflow_dispatch: + workflow_call: inputs: groupId: description: 'Value from the groupId field in pom.xml. i.e. org.liquibase' required: true - default: 'org.liquibase' + type: string artifactId: description: 'Value from the artifactId field in pom.xml. i.e. liquibase' required: true - default: 'liquibase' + type: string version: description: 'Value from the version field in pom.xml. i.e 4.23.0' + type: string + secrets: + AWS_PROD_ACCESS_KEY_ID: + description: 'AWS_PROD_ACCESS_KEY_ID from the caller workflow' + required: true + AWS_PROD_SECRET_ACCESS_KEY: + description: 'AWS_PROD_SECRET_ACCESS_KEY from the caller workflow' + required: true + GPG_SECRET: + description: 'GPG_SECRET from the caller workflow' + required: true + GPG_PASSPHRASE: + description: 'GPG_PASSPHRASE from the caller workflow' + required: true + GPG_SECRET_KEY_ID: + description: 'GPG_SECRET_KEY_ID from the caller workflow' required: true From 338230d81464c7fedf72c600bfa3c710df16d372 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 11 Aug 2023 09:13:23 +0200 Subject: [PATCH 060/147] chore(package-deb.yml): add step to download reusable pom.xml file for packaging deb --- .github/workflows/package-deb.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index 481a5fef..17f9e2aa 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -48,7 +48,11 @@ jobs: java-version: '17' distribution: 'temurin' cache: 'maven' - + + - name: Get Reusable pom.xml + run: | + curl -o $PWD/.github/package-deb-pom.xml https://raw.githubusercontent.com/liquibase/build-logic/v0.3.7/.github/package-deb-pom.xml + - name: Set up Maven uses: stCarolas/setup-maven@v4.5 with: From ac539f0385cb78e5af834c9714e4bc7d20888508 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 11 Aug 2023 09:18:08 +0200 Subject: [PATCH 061/147] chore(package-deb-pom.xml): remove unnecessary dependencies and plugins from the pom.xml file chore(package-deb-pom.xml): clean up formatting and indentation in the pom.xml file --- .github/workflows/package-deb-pom.xml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/workflows/package-deb-pom.xml b/.github/workflows/package-deb-pom.xml index e9a855ac..739b3a33 100644 --- a/.github/workflows/package-deb-pom.xml +++ b/.github/workflows/package-deb-pom.xml @@ -4,7 +4,6 @@ ${groupId} ${artifactId} ${revision} - Universal pom for deb packaging @@ -12,10 +11,6 @@ 1.10 - - - - @@ -37,7 +32,6 @@ - org.vafer jdeb @@ -76,7 +70,6 @@ - From 8f73b4448c4fc39ab00531317cf263a108b70b1f Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 11 Aug 2023 09:20:06 +0200 Subject: [PATCH 062/147] chore(package-deb-pom.xml): reformat XML code for better readability and consistency --- .github/workflows/package-deb-pom.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/package-deb-pom.xml b/.github/workflows/package-deb-pom.xml index 739b3a33..4398de10 100644 --- a/.github/workflows/package-deb-pom.xml +++ b/.github/workflows/package-deb-pom.xml @@ -1,6 +1,8 @@ - - 4.0.0 + + 4.0.0 ${groupId} ${artifactId} ${revision} From fef954005386ada9fa9170ee752b45698d65c48a Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 11 Aug 2023 09:27:29 +0200 Subject: [PATCH 063/147] fix(package-deb.yml): add offline mode flag (-o) to the mvn package command to build the deb package without downloading dependencies from remote repositories fix(package-deb.yml): specify the local repository path using the -Dmaven.repo.local flag to ensure the deb package is built using the correct dependencies --- .github/workflows/package-deb.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index 17f9e2aa..744382ea 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -77,7 +77,7 @@ jobs: - name: Build ${{ inputs.artifactId }} deb package run: | - mvn package -DgroupId=${{ inputs.groupId }} -DartifactId=${{ inputs.artifactId }} -Drevision=${{ inputs.version }} -DskipTests -f ./.github/package-deb-pom.xml + mvn package -o -f ./.github/package-deb-pom.xml -DgroupId=${{ inputs.groupId }} -DartifactId=${{ inputs.artifactId }} -Drevision=${{ inputs.version }} -DskipTests -Dmaven.repo.local=$PWD/.github/.repository - name: Install deb-s3 gem run: gem install deb-s3 From 114f675423df6bfaa42a1779ca4f05381697dd63 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 11 Aug 2023 09:28:03 +0200 Subject: [PATCH 064/147] chore(package-deb.yml): remove unnecessary -o flag from mvn package command The -o flag is not needed in the mvn package command as it is not providing any additional functionality. Removing it to simplify the command. --- .github/workflows/package-deb.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index 744382ea..62199e47 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -77,7 +77,7 @@ jobs: - name: Build ${{ inputs.artifactId }} deb package run: | - mvn package -o -f ./.github/package-deb-pom.xml -DgroupId=${{ inputs.groupId }} -DartifactId=${{ inputs.artifactId }} -Drevision=${{ inputs.version }} -DskipTests -Dmaven.repo.local=$PWD/.github/.repository + mvn package -f ./.github/package-deb-pom.xml -DgroupId=${{ inputs.groupId }} -DartifactId=${{ inputs.artifactId }} -Drevision=${{ inputs.version }} -DskipTests -Dmaven.repo.local=$PWD/.github/.repository - name: Install deb-s3 gem run: gem install deb-s3 From cdd0048f6d99171fa95aca63c9b02f594ecfc9b5 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 11 Aug 2023 09:36:03 +0200 Subject: [PATCH 065/147] fix(package-deb.yml): remove unnecessary maven.repo.local argument from mvn package command fix(package-deb.yml): remove installation of deb-s3 gem as it is not needed --- .github/workflows/package-deb.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index 62199e47..63b0941e 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -77,7 +77,7 @@ jobs: - name: Build ${{ inputs.artifactId }} deb package run: | - mvn package -f ./.github/package-deb-pom.xml -DgroupId=${{ inputs.groupId }} -DartifactId=${{ inputs.artifactId }} -Drevision=${{ inputs.version }} -DskipTests -Dmaven.repo.local=$PWD/.github/.repository + mvn package -f $PWD/.github/package-deb-pom.xml -DgroupId=${{ inputs.groupId }} -DartifactId=${{ inputs.artifactId }} -Drevision=${{ inputs.version }} -DskipTests - name: Install deb-s3 gem run: gem install deb-s3 From d3cff2b01e2ccf26bc10da05d5c5bf5d45193a12 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 11 Aug 2023 09:38:31 +0200 Subject: [PATCH 066/147] chore(package-deb.yml): add verbose flag to mvn package command for debugging purposes chore(package-deb.yml): install deb-s3 gem as part of the workflow setup --- .github/workflows/package-deb.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index 63b0941e..9714ad3c 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -77,7 +77,7 @@ jobs: - name: Build ${{ inputs.artifactId }} deb package run: | - mvn package -f $PWD/.github/package-deb-pom.xml -DgroupId=${{ inputs.groupId }} -DartifactId=${{ inputs.artifactId }} -Drevision=${{ inputs.version }} -DskipTests + mvn package -e -X -f $PWD/.github/package-deb-pom.xml -DgroupId=${{ inputs.groupId }} -DartifactId=${{ inputs.artifactId }} -Drevision=${{ inputs.version }} -DskipTests - name: Install deb-s3 gem run: gem install deb-s3 From e1a83b80975175ee6ed26490d5feb1b8cd11df8a Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 11 Aug 2023 09:56:51 +0200 Subject: [PATCH 067/147] feat(package-deb): add support for packaging the application as a Debian package - Add `package-deb-pom.xml` file to define the Maven build configuration for creating a Debian package - Update `.github/workflows/package-deb.yml` to download the necessary control files and build the Debian package using Maven - Modify the Maven command in the workflow to include the `clean` goal before packaging the application This change allows the application to be packaged as a Debian package, making it easier to distribute and install on Debian-based systems. --- .github/{workflows => }/package-deb-pom.xml | 0 .github/workflows/package-deb.yml | 7 ++++++- 2 files changed, 6 insertions(+), 1 deletion(-) rename .github/{workflows => }/package-deb-pom.xml (100%) diff --git a/.github/workflows/package-deb-pom.xml b/.github/package-deb-pom.xml similarity index 100% rename from .github/workflows/package-deb-pom.xml rename to .github/package-deb-pom.xml diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index 9714ad3c..7105c728 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -51,6 +51,11 @@ jobs: - name: Get Reusable pom.xml run: | + mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/deb/control + mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/main/archive + curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/control https://raw.githubusercontent.com/liquibase/build-logic/v0.3.7/src/${{ inputs.artifactId }}/deb/control/control + curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/postinst https://raw.githubusercontent.com/liquibase/build-logic/v0.3.7/src/${{ inputs.artifactId }}/deb/control/postinst + curl -o $PWD/.github/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.7/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh curl -o $PWD/.github/package-deb-pom.xml https://raw.githubusercontent.com/liquibase/build-logic/v0.3.7/.github/package-deb-pom.xml - name: Set up Maven @@ -77,7 +82,7 @@ jobs: - name: Build ${{ inputs.artifactId }} deb package run: | - mvn package -e -X -f $PWD/.github/package-deb-pom.xml -DgroupId=${{ inputs.groupId }} -DartifactId=${{ inputs.artifactId }} -Drevision=${{ inputs.version }} -DskipTests + mvn clean package -f $PWD/.github/package-deb-pom.xml -DgroupId=${{ inputs.groupId }} -DartifactId=${{ inputs.artifactId }} -Drevision=${{ inputs.version }} -DskipTests - name: Install deb-s3 gem run: gem install deb-s3 From b266e5490faf1cff2f4c93d19f113ae134c1deca Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 11 Aug 2023 10:01:24 +0200 Subject: [PATCH 068/147] chore(package-deb.yml): update step name to reflect the purpose of getting reusable Maven files fix(package-deb.yml): update file paths to use absolute paths for consistency and to avoid potential issues with relative paths fix(package-deb.yml): update file path in the download step to use absolute path for consistency and to avoid potential issues with relative paths --- .github/workflows/package-deb.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index 7105c728..988c06bf 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -49,7 +49,7 @@ jobs: distribution: 'temurin' cache: 'maven' - - name: Get Reusable pom.xml + - name: Get Reusable Maven Files run: | mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/deb/control mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/main/archive @@ -77,8 +77,8 @@ jobs: - name: Download ${{ inputs.artifactId }} Release run: | - mkdir -p target - wget -q -O target/${{ inputs.artifactId }}-${{ inputs.version }}.tar.gz https://github.com/liquibase/${{ inputs.artifactId }}/releases/download/v${{ inputs.version }}/${{ inputs.artifactId }}-${{ inputs.version }}.tar.gz + mkdir -p $PWD/.github/target + wget -q -O $PWD/.github/target/${{ inputs.artifactId }}-${{ inputs.version }}.tar.gz https://github.com/liquibase/${{ inputs.artifactId }}/releases/download/v${{ inputs.version }}/${{ inputs.artifactId }}-${{ inputs.version }}.tar.gz - name: Build ${{ inputs.artifactId }} deb package run: | @@ -94,7 +94,7 @@ jobs: echo "${{ secrets.GPG_SECRET }}" | gpg --batch --import --pinentry-mode loopback --passphrase "${{ secrets.GPG_PASSPHRASE }}" export GPG_TTY=$(tty) echo '${{ secrets.GPG_PASSPHRASE }}' > pass.txt - deb-s3 upload --preserve-versions --sign "${{ secrets.GPG_SECRET_KEY_ID }}" --gpg-options "\-\-pinentry-mode loopback \-\-batch \-\-passphrase\-file pass.txt \-\-yes \-\-quiet" --bucket repo.liquibase.com target/${{ inputs.artifactId }}-${{ inputs.version }}.deb + deb-s3 upload --preserve-versions --sign "${{ secrets.GPG_SECRET_KEY_ID }}" --gpg-options "\-\-pinentry-mode loopback \-\-batch \-\-passphrase\-file pass.txt \-\-yes \-\-quiet" --bucket repo.liquibase.com $PWD/.github/target/${{ inputs.artifactId }}-${{ inputs.version }}.deb From 37ffcd17aac44f0a1d3851f4e49ee91db32b4a7c Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 11 Aug 2023 10:05:21 +0200 Subject: [PATCH 069/147] fix(package-deb.yml): remove 'clean' phase from the Maven build command to speed up the build process --- .github/workflows/package-deb.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index 988c06bf..bb18c75e 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -82,7 +82,7 @@ jobs: - name: Build ${{ inputs.artifactId }} deb package run: | - mvn clean package -f $PWD/.github/package-deb-pom.xml -DgroupId=${{ inputs.groupId }} -DartifactId=${{ inputs.artifactId }} -Drevision=${{ inputs.version }} -DskipTests + mvn package -f $PWD/.github/package-deb-pom.xml -DgroupId=${{ inputs.groupId }} -DartifactId=${{ inputs.artifactId }} -Drevision=${{ inputs.version }} -DskipTests - name: Install deb-s3 gem run: gem install deb-s3 From 32f67a252f94900a0e75717e125f69736371d0f4 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 11 Aug 2023 10:33:35 +0200 Subject: [PATCH 070/147] chore(package-deb.yml): add comments to explain the purpose of certain steps in the workflow docs(README.md): add explanation of inputs for package-deb.yml workflow --- .github/workflows/package-deb.yml | 2 ++ README.md | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index bb18c75e..24f97c02 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -51,6 +51,7 @@ jobs: - name: Get Reusable Maven Files run: | + # Under the src folder is where specific packages files live. The GitHub action inputs will modify the universal package-deb-pom.xml to tell the process which assets to use during the packaging step mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/deb/control mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/main/archive curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/control https://raw.githubusercontent.com/liquibase/build-logic/v0.3.7/src/${{ inputs.artifactId }}/deb/control/control @@ -78,6 +79,7 @@ jobs: - name: Download ${{ inputs.artifactId }} Release run: | mkdir -p $PWD/.github/target + # Creating deb packages needs to get release assets from somewhere so be sure to follow this pattern in the artifact repo: https://github.com/liquibase/ARTIFACT_ID/releases/download/vVERSION/ARTIFACT_ID-VERSION.tar.gz wget -q -O $PWD/.github/target/${{ inputs.artifactId }}-${{ inputs.version }}.tar.gz https://github.com/liquibase/${{ inputs.artifactId }}/releases/download/v${{ inputs.version }}/${{ inputs.artifactId }}-${{ inputs.version }}.tar.gz - name: Build ${{ inputs.artifactId }} deb package diff --git a/README.md b/README.md index daaf7042..6af37d2b 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,12 @@ jobs: If inputs are not provided, `'[8, 11, 17, 18]'` and `'["ubuntu-latest", "windows-latest"]'` will be used as default values +`package-deb.yml` is triggered by a workflow call event and runs some Maven goals needed to create and distribute `deb` packages. It has several inputs: + +- **groupId**: Value from the `groupId` field in the pom file. i.e. `org.liquibase` +- **artifactId**: Value from the `artifactId` field in the pom file. i.e. `liquibase` +- **version**: Value from the `version` field in the pom file. i.e `4.23.1` + ## Example Build/Test/Release Extension Workflow ```mermaid From 0283fa744f5592b56a6f2314916703bf92471d6f Mon Sep 17 00:00:00 2001 From: Jake Newton Date: Fri, 11 Aug 2023 14:37:57 -0500 Subject: [PATCH 071/147] bugfix: do not require input params for os and pro extension tests --- .github/workflows/create-release.yml | 2 +- .github/workflows/extension-attach-artifact-release.yml | 6 +++--- .github/workflows/extension-release-published.yml | 2 +- .github/workflows/os-extension-test.yml | 6 +++--- .github/workflows/package-deb.yml | 8 ++++---- .github/workflows/pro-extension-test.yml | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 450e5c3e..a0d2ca9a 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -5,7 +5,7 @@ on: jobs: sonar: - uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.3.6 + uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.3.8 secrets: inherit create-release: diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index 7c9ae1d9..efcc39be 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -31,9 +31,9 @@ jobs: - name: Get Reusable Script Files run: | - curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.6/.github/get_draft_release.sh - curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.6/.github/sign_artifact.sh - curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.6/.github/upload_asset.sh + curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.8/.github/get_draft_release.sh + curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.8/.github/sign_artifact.sh + curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.8/.github/upload_asset.sh chmod +x $PWD/.github/get_draft_release.sh chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh diff --git a/.github/workflows/extension-release-published.yml b/.github/workflows/extension-release-published.yml index 2cbedf44..3a2ba2ff 100644 --- a/.github/workflows/extension-release-published.yml +++ b/.github/workflows/extension-release-published.yml @@ -68,5 +68,5 @@ jobs: maven-release: needs: release - uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.6 + uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.8 secrets: inherit \ No newline at end of file diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index a0244c9a..e1f20820 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -5,12 +5,12 @@ on: inputs: java: description: 'Java version to test' - required: true + required: false default: '[8, 11, 17, 18]' type: string os: description: 'Operating system to test' - required: true + required: false default: '["ubuntu-latest", "windows-latest"]' type: string jobs: @@ -88,5 +88,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.6 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.8 secrets: inherit diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index 24f97c02..0d22a21a 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -54,10 +54,10 @@ jobs: # Under the src folder is where specific packages files live. The GitHub action inputs will modify the universal package-deb-pom.xml to tell the process which assets to use during the packaging step mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/deb/control mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/main/archive - curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/control https://raw.githubusercontent.com/liquibase/build-logic/v0.3.7/src/${{ inputs.artifactId }}/deb/control/control - curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/postinst https://raw.githubusercontent.com/liquibase/build-logic/v0.3.7/src/${{ inputs.artifactId }}/deb/control/postinst - curl -o $PWD/.github/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.7/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh - curl -o $PWD/.github/package-deb-pom.xml https://raw.githubusercontent.com/liquibase/build-logic/v0.3.7/.github/package-deb-pom.xml + curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/control https://raw.githubusercontent.com/liquibase/build-logic/v0.3.8/src/${{ inputs.artifactId }}/deb/control/control + curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/postinst https://raw.githubusercontent.com/liquibase/build-logic/v0.3.8/src/${{ inputs.artifactId }}/deb/control/postinst + curl -o $PWD/.github/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.8/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh + curl -o $PWD/.github/package-deb-pom.xml https://raw.githubusercontent.com/liquibase/build-logic/v0.3.8/.github/package-deb-pom.xml - name: Set up Maven uses: stCarolas/setup-maven@v4.5 diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index e446a563..bb45100d 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -109,5 +109,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.6 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.8 secrets: inherit From 616fc512de975e287688fcb8e3885e73d08c57db Mon Sep 17 00:00:00 2001 From: Jake Newton Date: Fri, 11 Aug 2023 15:34:08 -0500 Subject: [PATCH 072/147] set default values if none passed in --- .github/workflows/os-extension-test.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index e1f20820..efff3983 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -13,6 +13,11 @@ on: required: false default: '["ubuntu-latest", "windows-latest"]' type: string + +env: + JAVA_INPUT: ${{ github.event.inputs.java || '[8, 11, 17, 18]' }} + OS_INPUT: ${{ github.event.inputs.os || '["ubuntu-latest", "windows-latest"]' }} + jobs: build: name: Build & Package @@ -54,8 +59,8 @@ jobs: strategy: fail-fast: false matrix: - java: ${{ fromJSON(github.event.inputs.java)}} - os: ${{ fromJSON(github.event.inputs.os)}} + java: ${{ fromJSON(env.JAVA_INPUT) }} + os: ${{ fromJSON(env.OS_INPUT) }} name: Test Java ${{ matrix.java }} - ${{ matrix.os }} runs-on: ${{ matrix.os }} needs: build @@ -89,4 +94,4 @@ jobs: sonar-pr: needs: [ unit-test ] uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.8 - secrets: inherit + secrets: inherit \ No newline at end of file From 51745cc07451151ac956ad5f2b2c69ad210d97ec Mon Sep 17 00:00:00 2001 From: Jake Newton Date: Fri, 11 Aug 2023 15:34:08 -0500 Subject: [PATCH 073/147] set default values if none passed in --- .github/workflows/os-extension-test.yml | 11 ++++++++--- .github/workflows/pro-extension-test.yml | 10 ++++++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index e1f20820..efff3983 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -13,6 +13,11 @@ on: required: false default: '["ubuntu-latest", "windows-latest"]' type: string + +env: + JAVA_INPUT: ${{ github.event.inputs.java || '[8, 11, 17, 18]' }} + OS_INPUT: ${{ github.event.inputs.os || '["ubuntu-latest", "windows-latest"]' }} + jobs: build: name: Build & Package @@ -54,8 +59,8 @@ jobs: strategy: fail-fast: false matrix: - java: ${{ fromJSON(github.event.inputs.java)}} - os: ${{ fromJSON(github.event.inputs.os)}} + java: ${{ fromJSON(env.JAVA_INPUT) }} + os: ${{ fromJSON(env.OS_INPUT) }} name: Test Java ${{ matrix.java }} - ${{ matrix.os }} runs-on: ${{ matrix.os }} needs: build @@ -89,4 +94,4 @@ jobs: sonar-pr: needs: [ unit-test ] uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.8 - secrets: inherit + secrets: inherit \ No newline at end of file diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index bb45100d..d854fa53 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -5,12 +5,12 @@ on: inputs: java: description: 'Java version to test' - required: true + required: false default: '[8, 11, 17, 18]' type: string os: description: 'Operating system to test' - required: true + required: false default: '["ubuntu-latest", "windows-latest"]' type: string secrets: @@ -33,6 +33,8 @@ env: AWS_ACCESS_KEY_ID: ${{ secrets.GHA_AWS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.GHA_AWS_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + JAVA_INPUT: ${{ github.event.inputs.java || '[8, 11, 17, 18]' }} + OS_INPUT: ${{ github.event.inputs.os || '["ubuntu-latest", "windows-latest"]' }} jobs: build: @@ -75,8 +77,8 @@ jobs: strategy: fail-fast: false matrix: - java: ${{ fromJSON(github.event.inputs.java)}} - os: ${{ fromJSON(github.event.inputs.os)}} + java: ${{ fromJSON(env.JAVA_INPUT) }} + os: ${{ fromJSON(env.OS_INPUT) }} name: Test Java ${{ matrix.java }} - ${{ matrix.os }} runs-on: ${{ matrix.os }} needs: build From acdc3ed521907e38ffb7c9909ba810671359bb9b Mon Sep 17 00:00:00 2001 From: Jake Newton Date: Fri, 11 Aug 2023 16:00:14 -0500 Subject: [PATCH 074/147] set default inputs for java and os if none provided --- .github/workflows/os-extension-test.yml | 4 ++-- .github/workflows/pro-extension-test.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index 729f074a..deeb4cd4 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -55,8 +55,8 @@ jobs: strategy: fail-fast: false matrix: - java: ${{fromJson(env.INPUT_JAVA)}} - os: ${{fromJson(env.INPUT_OS)}} + java: ${{fromJson(github.event.inputs.java || '[8, 11, 17, 18]')}} + os: ${{fromJson(github.event.inputs.os || '["ubuntu-latest", "windows-latest"]')}} name: Test Java ${{ matrix.java }} - ${{ matrix.os }} runs-on: ${{ matrix.os }} needs: build diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index dc342cca..0f75682d 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -75,8 +75,8 @@ jobs: strategy: fail-fast: false matrix: - java: ${{fromJson(env.INPUT_JAVA)}} - os: ${{fromJson(env.INPUT_OS)}} + java: ${{fromJson(github.event.inputs.java || '[8, 11, 17, 18]')}} + os: ${{fromJson(github.event.inputs.os || '["ubuntu-latest", "windows-latest"]')}} name: Test Java ${{ matrix.java }} - ${{ matrix.os }} runs-on: ${{ matrix.os }} needs: build From 9778d4f415443d0bd755c68e30a01191e5e7be05 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 16 Aug 2023 09:01:16 +0200 Subject: [PATCH 075/147] chore(create-release.yml): update sonar-push.yml version to v0.3.9 chore(extension-attach-artifact-release.yml): update script file versions to v0.3.9 chore(extension-release-published.yml): update extension-release-prepare.yml version to v0.3.9 chore(os-extension-test.yml): update sonar-pull-request.yml version to v0.3.9 chore(package-deb.yml): update file versions to v0.3.9 chore(pro-extension-test.yml): update sonar-pull-request.yml version to v0.3.9 fix(postinst): remove unnecessary shell execution fix(liquibase-env.sh): remove unnecessary shell execution --- .github/workflows/create-release.yml | 2 +- .github/workflows/extension-attach-artifact-release.yml | 6 +++--- .github/workflows/extension-release-published.yml | 2 +- .github/workflows/os-extension-test.yml | 2 +- .github/workflows/package-deb.yml | 8 ++++---- .github/workflows/pro-extension-test.yml | 2 +- src/liquibase/deb/control/postinst | 3 +-- src/liquibase/main/archive/liquibase-env.sh | 1 - 8 files changed, 12 insertions(+), 14 deletions(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index a0d2ca9a..812749b6 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -5,7 +5,7 @@ on: jobs: sonar: - uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.3.8 + uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.3.9 secrets: inherit create-release: diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index efcc39be..f7c97453 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -31,9 +31,9 @@ jobs: - name: Get Reusable Script Files run: | - curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.8/.github/get_draft_release.sh - curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.8/.github/sign_artifact.sh - curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.8/.github/upload_asset.sh + curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.9/.github/get_draft_release.sh + curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.9/.github/sign_artifact.sh + curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.9/.github/upload_asset.sh chmod +x $PWD/.github/get_draft_release.sh chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh diff --git a/.github/workflows/extension-release-published.yml b/.github/workflows/extension-release-published.yml index 3a2ba2ff..a74995ac 100644 --- a/.github/workflows/extension-release-published.yml +++ b/.github/workflows/extension-release-published.yml @@ -68,5 +68,5 @@ jobs: maven-release: needs: release - uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.8 + uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.9 secrets: inherit \ No newline at end of file diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index deeb4cd4..9ae3ca7f 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -89,5 +89,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.8 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.9 secrets: inherit \ No newline at end of file diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index 0d22a21a..dca42b8b 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -54,10 +54,10 @@ jobs: # Under the src folder is where specific packages files live. The GitHub action inputs will modify the universal package-deb-pom.xml to tell the process which assets to use during the packaging step mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/deb/control mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/main/archive - curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/control https://raw.githubusercontent.com/liquibase/build-logic/v0.3.8/src/${{ inputs.artifactId }}/deb/control/control - curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/postinst https://raw.githubusercontent.com/liquibase/build-logic/v0.3.8/src/${{ inputs.artifactId }}/deb/control/postinst - curl -o $PWD/.github/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.8/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh - curl -o $PWD/.github/package-deb-pom.xml https://raw.githubusercontent.com/liquibase/build-logic/v0.3.8/.github/package-deb-pom.xml + curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/control https://raw.githubusercontent.com/liquibase/build-logic/v0.3.9/src/${{ inputs.artifactId }}/deb/control/control + curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/postinst https://raw.githubusercontent.com/liquibase/build-logic/v0.3.9/src/${{ inputs.artifactId }}/deb/control/postinst + curl -o $PWD/.github/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.9/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh + curl -o $PWD/.github/package-deb-pom.xml https://raw.githubusercontent.com/liquibase/build-logic/v0.3.9/.github/package-deb-pom.xml - name: Set up Maven uses: stCarolas/setup-maven@v4.5 diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index 0f75682d..1049d70b 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -109,5 +109,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.8 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.9 secrets: inherit \ No newline at end of file diff --git a/src/liquibase/deb/control/postinst b/src/liquibase/deb/control/postinst index 22fc2013..8dc9e411 100644 --- a/src/liquibase/deb/control/postinst +++ b/src/liquibase/deb/control/postinst @@ -2,5 +2,4 @@ # Needed once the installation is complete. No need to open a new terminal export LIQUIBASE_HOME=/opt/liquibase -export PATH=$PATH:$LIQUIBASE_HOME -exec $SHELL \ No newline at end of file +export PATH=$PATH:$LIQUIBASE_HOME \ No newline at end of file diff --git a/src/liquibase/main/archive/liquibase-env.sh b/src/liquibase/main/archive/liquibase-env.sh index 641720a4..73e7dce9 100644 --- a/src/liquibase/main/archive/liquibase-env.sh +++ b/src/liquibase/main/archive/liquibase-env.sh @@ -3,4 +3,3 @@ # Needed when restarting the terminal export LIQUIBASE_HOME=/opt/liquibase export PATH=$PATH:$LIQUIBASE_HOME -exec $SHELL \ No newline at end of file From ae9ed4f073629e6e7d9b681f483c564667b37af7 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 16 Aug 2023 09:20:58 +0200 Subject: [PATCH 076/147] fix(liquibase): update postinst and liquibase-env.sh scripts to add LIQUIBASE_HOME and PATH to ~/.profile The postinst script was updated to append the `export LIQUIBASE_HOME=$LIQUIBASE_HOME` and `export PATH=$PATH:$LIQUIBASE_HOME` lines to the `~/.profile` file. This ensures that the LIQUIBASE_HOME environment variable and the liquibase executable are available in the user's profile. Similarly, the liquibase-env.sh script was also updated to append the same lines to the `~/.profile` file. These changes were made to ensure that the LIQUIBASE_HOME environment variable and the liquibase executable are automatically set up when the terminal is restarted, providing a more seamless experience for users. --- src/liquibase/deb/control/postinst | 5 +++-- src/liquibase/main/archive/liquibase-env.sh | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/liquibase/deb/control/postinst b/src/liquibase/deb/control/postinst index 8dc9e411..24d2734f 100644 --- a/src/liquibase/deb/control/postinst +++ b/src/liquibase/deb/control/postinst @@ -1,5 +1,6 @@ #!/bin/sh # Needed once the installation is complete. No need to open a new terminal -export LIQUIBASE_HOME=/opt/liquibase -export PATH=$PATH:$LIQUIBASE_HOME \ No newline at end of file +echo "export LIQUIBASE_HOME=$LIQUIBASE_HOME" >> ~/.profile +echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> ~/.profile +source ~/.profile \ No newline at end of file diff --git a/src/liquibase/main/archive/liquibase-env.sh b/src/liquibase/main/archive/liquibase-env.sh index 73e7dce9..975eba53 100644 --- a/src/liquibase/main/archive/liquibase-env.sh +++ b/src/liquibase/main/archive/liquibase-env.sh @@ -1,5 +1,6 @@ #!/bin/sh # Needed when restarting the terminal -export LIQUIBASE_HOME=/opt/liquibase -export PATH=$PATH:$LIQUIBASE_HOME +echo "export LIQUIBASE_HOME=$LIQUIBASE_HOME" >> ~/.profile +echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> ~/.profile +source ~/.profile \ No newline at end of file From 772044546de3752ef241b6bccf7f51bfa0338968 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 16 Aug 2023 09:28:12 +0200 Subject: [PATCH 077/147] fix(liquibase): update LIQUIBASE_HOME path in postinst and liquibase-env.sh scripts The LIQUIBASE_HOME path in the postinst and liquibase-env.sh scripts was updated to "/opt/liquibase" to reflect the correct installation directory. This change ensures that the LIQUIBASE_HOME environment variable is set correctly and that the liquibase executable is added to the PATH. --- src/liquibase/deb/control/postinst | 2 +- src/liquibase/main/archive/liquibase-env.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/liquibase/deb/control/postinst b/src/liquibase/deb/control/postinst index 24d2734f..8a5dd11f 100644 --- a/src/liquibase/deb/control/postinst +++ b/src/liquibase/deb/control/postinst @@ -1,6 +1,6 @@ #!/bin/sh # Needed once the installation is complete. No need to open a new terminal -echo "export LIQUIBASE_HOME=$LIQUIBASE_HOME" >> ~/.profile +echo "export LIQUIBASE_HOME=/opt/liquibase" >> ~/.profile echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> ~/.profile source ~/.profile \ No newline at end of file diff --git a/src/liquibase/main/archive/liquibase-env.sh b/src/liquibase/main/archive/liquibase-env.sh index 975eba53..4c3d62c6 100644 --- a/src/liquibase/main/archive/liquibase-env.sh +++ b/src/liquibase/main/archive/liquibase-env.sh @@ -1,6 +1,6 @@ #!/bin/sh # Needed when restarting the terminal -echo "export LIQUIBASE_HOME=$LIQUIBASE_HOME" >> ~/.profile +echo "export LIQUIBASE_HOME=/opt/liquibase" >> ~/.profile echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> ~/.profile -source ~/.profile \ No newline at end of file +source ~/.profile From 3ad27a056a946f0e4801599c378563f5c9070073 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 16 Aug 2023 09:41:18 +0200 Subject: [PATCH 078/147] fix(liquibase): change shebang from /bin/sh to /bin/bash in postinst script for compatibility feat(liquibase): add post-removal script (postrm) to remove liquibase-related lines from the profile --- src/liquibase/deb/control/postinst | 11 ++++++++--- src/liquibase/deb/control/postrm | 10 ++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) mode change 100644 => 100755 src/liquibase/deb/control/postinst create mode 100755 src/liquibase/deb/control/postrm diff --git a/src/liquibase/deb/control/postinst b/src/liquibase/deb/control/postinst old mode 100644 new mode 100755 index 8a5dd11f..77fda03a --- a/src/liquibase/deb/control/postinst +++ b/src/liquibase/deb/control/postinst @@ -1,6 +1,11 @@ -#!/bin/sh +#!/bin/bash + +LIQUIBASE_HOME=/opt/liquibase # Needed once the installation is complete. No need to open a new terminal -echo "export LIQUIBASE_HOME=/opt/liquibase" >> ~/.profile +sudo echo "export LIQUIBASE_HOME=$LIQUIBASE_HOME" >> sudo /etc/profile +sudo echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> sudo /etc/profile + echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> ~/.profile -source ~/.profile \ No newline at end of file + +source /etc/profile \ No newline at end of file diff --git a/src/liquibase/deb/control/postrm b/src/liquibase/deb/control/postrm new file mode 100755 index 00000000..c595e319 --- /dev/null +++ b/src/liquibase/deb/control/postrm @@ -0,0 +1,10 @@ +#!/bin/bash + +LIQUIBASE_HOME=/opt/liquibase + +# Remove the liquibase-related lines from the profile +sudo sed -i '/LIQUIBASE_HOME=/d' /etc/profile +sudo sed -i '/export PATH=\$PATH:\$LIQUIBASE_HOME/d' /etc/profile + +# Source the profile to apply changes immediately +source /etc/profile From 3e50da98924b1ed0314273b750001baf3f372bdf Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 16 Aug 2023 09:41:38 +0200 Subject: [PATCH 079/147] fix(liquibase-env.sh): change shebang from /bin/sh to /bin/bash for compatibility with bash syntax fix(liquibase-env.sh): add LIQUIBASE_HOME variable assignment to /opt/liquibase for proper installation fix(liquibase-env.sh): add LIQUIBASE_HOME and PATH exports to /etc/profile for persistent environment variables fix(liquibase-env.sh): remove unnecessary export of LIQUIBASE_HOME and PATH to ~/.profile fix(liquibase-env.sh): source /etc/profile to load the updated environment variables --- src/liquibase/main/archive/liquibase-env.sh | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) mode change 100644 => 100755 src/liquibase/main/archive/liquibase-env.sh diff --git a/src/liquibase/main/archive/liquibase-env.sh b/src/liquibase/main/archive/liquibase-env.sh old mode 100644 new mode 100755 index 4c3d62c6..77fda03a --- a/src/liquibase/main/archive/liquibase-env.sh +++ b/src/liquibase/main/archive/liquibase-env.sh @@ -1,6 +1,11 @@ -#!/bin/sh +#!/bin/bash + +LIQUIBASE_HOME=/opt/liquibase + +# Needed once the installation is complete. No need to open a new terminal +sudo echo "export LIQUIBASE_HOME=$LIQUIBASE_HOME" >> sudo /etc/profile +sudo echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> sudo /etc/profile -# Needed when restarting the terminal -echo "export LIQUIBASE_HOME=/opt/liquibase" >> ~/.profile echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> ~/.profile -source ~/.profile + +source /etc/profile \ No newline at end of file From 7a9e3cd87b8db914df851d045baec364bb32c2c4 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 16 Aug 2023 09:52:14 +0200 Subject: [PATCH 080/147] chore(package-deb-pom.xml): remove unused data entry for artifactId-env.sh file fix(postinst): modify postinst script to use sh instead of bash for compatibility fix(postrm): modify postrm script to use sh instead of bash for compatibility refactor(postinst, postrm): update postinst and postrm scripts to modify and load user's shell configuration file using sh instead of sudo refactor(postinst, postrm): remove unnecessary lines from postinst and postrm scripts that source /etc/profile and add LIQUIBASE_HOME to ~/.profile refactor(postrm): remove unnecessary lines from postrm script that remove LIQUIBASE_HOME and export PATH from /etc/profile --- .github/package-deb-pom.xml | 9 --------- src/liquibase/deb/control/postinst | 15 ++++++--------- src/liquibase/deb/control/postrm | 14 ++++++-------- src/liquibase/main/archive/liquibase-env.sh | 11 ----------- 4 files changed, 12 insertions(+), 37 deletions(-) delete mode 100755 src/liquibase/main/archive/liquibase-env.sh diff --git a/.github/package-deb-pom.xml b/.github/package-deb-pom.xml index 4398de10..cdd264c6 100644 --- a/.github/package-deb-pom.xml +++ b/.github/package-deb-pom.xml @@ -60,15 +60,6 @@ 755 - - ${project.basedir}/src/${project.artifactId}/main/archive/${project.artifactId}-env.sh - file - - perm - /etc/profile.d/ - 755 - - diff --git a/src/liquibase/deb/control/postinst b/src/liquibase/deb/control/postinst index 77fda03a..65a92de7 100755 --- a/src/liquibase/deb/control/postinst +++ b/src/liquibase/deb/control/postinst @@ -1,11 +1,8 @@ -#!/bin/bash +#!/bin/sh -LIQUIBASE_HOME=/opt/liquibase +# Modify the user's shell configuration file +echo 'export LIQUIBASE_HOME=/opt/liquibase' >> "$HOME/.bashrc" +echo 'export PATH=$PATH:$LIQUIBASE_HOME' >> "$HOME/.bashrc" -# Needed once the installation is complete. No need to open a new terminal -sudo echo "export LIQUIBASE_HOME=$LIQUIBASE_HOME" >> sudo /etc/profile -sudo echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> sudo /etc/profile - -echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> ~/.profile - -source /etc/profile \ No newline at end of file +# Load the updated configuration into the current shell session +. "$HOME/.bashrc" diff --git a/src/liquibase/deb/control/postrm b/src/liquibase/deb/control/postrm index c595e319..3cbbea5f 100755 --- a/src/liquibase/deb/control/postrm +++ b/src/liquibase/deb/control/postrm @@ -1,10 +1,8 @@ -#!/bin/bash +#!/bin/sh -LIQUIBASE_HOME=/opt/liquibase +# Remove the lines added by the postinst script from the user's shell configuration file +sed -i '/LIQUIBASE_HOME=\/opt\/liquibase/d' "$HOME/.bashrc" +sed -i '/export PATH=\$PATH:\$LIQUIBASE_HOME/d' "$HOME/.bashrc" -# Remove the liquibase-related lines from the profile -sudo sed -i '/LIQUIBASE_HOME=/d' /etc/profile -sudo sed -i '/export PATH=\$PATH:\$LIQUIBASE_HOME/d' /etc/profile - -# Source the profile to apply changes immediately -source /etc/profile +# Load the updated configuration into the current shell session +. "$HOME/.bashrc" \ No newline at end of file diff --git a/src/liquibase/main/archive/liquibase-env.sh b/src/liquibase/main/archive/liquibase-env.sh deleted file mode 100755 index 77fda03a..00000000 --- a/src/liquibase/main/archive/liquibase-env.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -LIQUIBASE_HOME=/opt/liquibase - -# Needed once the installation is complete. No need to open a new terminal -sudo echo "export LIQUIBASE_HOME=$LIQUIBASE_HOME" >> sudo /etc/profile -sudo echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> sudo /etc/profile - -echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> ~/.profile - -source /etc/profile \ No newline at end of file From b0b6fa7115350b13590bfddf4d7cab56197b0010 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 16 Aug 2023 10:01:16 +0200 Subject: [PATCH 081/147] fix(liquibase): change shebang from /bin/sh to /bin/bash for compatibility with bash syntax fix(liquibase): update postinst script to set LIQUIBASE_HOME and PATH in /etc/profile instead of user's .bashrc fix(liquibase): update postrm script to remove liquibase-related lines from /etc/profile instead of user's .bashrc --- src/liquibase/deb/control/postinst | 15 +++++++++------ src/liquibase/deb/control/postrm | 14 ++++++++------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/liquibase/deb/control/postinst b/src/liquibase/deb/control/postinst index 65a92de7..77fda03a 100755 --- a/src/liquibase/deb/control/postinst +++ b/src/liquibase/deb/control/postinst @@ -1,8 +1,11 @@ -#!/bin/sh +#!/bin/bash -# Modify the user's shell configuration file -echo 'export LIQUIBASE_HOME=/opt/liquibase' >> "$HOME/.bashrc" -echo 'export PATH=$PATH:$LIQUIBASE_HOME' >> "$HOME/.bashrc" +LIQUIBASE_HOME=/opt/liquibase -# Load the updated configuration into the current shell session -. "$HOME/.bashrc" +# Needed once the installation is complete. No need to open a new terminal +sudo echo "export LIQUIBASE_HOME=$LIQUIBASE_HOME" >> sudo /etc/profile +sudo echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> sudo /etc/profile + +echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> ~/.profile + +source /etc/profile \ No newline at end of file diff --git a/src/liquibase/deb/control/postrm b/src/liquibase/deb/control/postrm index 3cbbea5f..c595e319 100755 --- a/src/liquibase/deb/control/postrm +++ b/src/liquibase/deb/control/postrm @@ -1,8 +1,10 @@ -#!/bin/sh +#!/bin/bash -# Remove the lines added by the postinst script from the user's shell configuration file -sed -i '/LIQUIBASE_HOME=\/opt\/liquibase/d' "$HOME/.bashrc" -sed -i '/export PATH=\$PATH:\$LIQUIBASE_HOME/d' "$HOME/.bashrc" +LIQUIBASE_HOME=/opt/liquibase -# Load the updated configuration into the current shell session -. "$HOME/.bashrc" \ No newline at end of file +# Remove the liquibase-related lines from the profile +sudo sed -i '/LIQUIBASE_HOME=/d' /etc/profile +sudo sed -i '/export PATH=\$PATH:\$LIQUIBASE_HOME/d' /etc/profile + +# Source the profile to apply changes immediately +source /etc/profile From 184e03c2532293d2cb1c7b611972ded395d3b6d7 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 16 Aug 2023 11:04:40 +0200 Subject: [PATCH 082/147] fix(liquibase): change shebang from bash to sh in postinst script for better compatibility fix(liquibase): update path to ~/.profile instead of /etc/profile in postinst and postrm scripts for correct environment variable setup and removal --- src/liquibase/deb/control/postinst | 10 ++++------ src/liquibase/deb/control/postrm | 6 +++--- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/liquibase/deb/control/postinst b/src/liquibase/deb/control/postinst index 77fda03a..7696bc2e 100755 --- a/src/liquibase/deb/control/postinst +++ b/src/liquibase/deb/control/postinst @@ -1,11 +1,9 @@ -#!/bin/bash +#!/bin/sh LIQUIBASE_HOME=/opt/liquibase # Needed once the installation is complete. No need to open a new terminal -sudo echo "export LIQUIBASE_HOME=$LIQUIBASE_HOME" >> sudo /etc/profile -sudo echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> sudo /etc/profile +sudo echo "export LIQUIBASE_HOME=$LIQUIBASE_HOME" >> ~/.profile +sudo echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> ~/.profile -echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> ~/.profile - -source /etc/profile \ No newline at end of file +source ~/.profile \ No newline at end of file diff --git a/src/liquibase/deb/control/postrm b/src/liquibase/deb/control/postrm index c595e319..cb259f1a 100755 --- a/src/liquibase/deb/control/postrm +++ b/src/liquibase/deb/control/postrm @@ -3,8 +3,8 @@ LIQUIBASE_HOME=/opt/liquibase # Remove the liquibase-related lines from the profile -sudo sed -i '/LIQUIBASE_HOME=/d' /etc/profile -sudo sed -i '/export PATH=\$PATH:\$LIQUIBASE_HOME/d' /etc/profile +sudo sed -i '/LIQUIBASE_HOME=/d' ~/.profile +sudo sed -i '/export PATH=\$PATH:\$LIQUIBASE_HOME/d' ~/.profile # Source the profile to apply changes immediately -source /etc/profile +source ~/.profile From 1f8d4fd48e9e42b8fc3733732a87f03c57cf9dc2 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 16 Aug 2023 11:11:13 +0200 Subject: [PATCH 083/147] fix(postrm): remove liquibase path from PATH environment variable to ensure proper uninstallation --- src/liquibase/deb/control/postrm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/liquibase/deb/control/postrm b/src/liquibase/deb/control/postrm index cb259f1a..65c1a112 100755 --- a/src/liquibase/deb/control/postrm +++ b/src/liquibase/deb/control/postrm @@ -5,6 +5,8 @@ LIQUIBASE_HOME=/opt/liquibase # Remove the liquibase-related lines from the profile sudo sed -i '/LIQUIBASE_HOME=/d' ~/.profile sudo sed -i '/export PATH=\$PATH:\$LIQUIBASE_HOME/d' ~/.profile - +path=$PATH +path_without_liquibase=$(echo "$path" | sed 's/:\/opt\/liquibase//g') +export PATH=$path_without_liquibase # Source the profile to apply changes immediately source ~/.profile From dea9f996ad9a379b975369a609c93dd42fd0c062 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 16 Aug 2023 11:17:29 +0200 Subject: [PATCH 084/147] fix(postinst): change shebang from /bin/sh to /bin/bash for better compatibility with bash scripts --- src/liquibase/deb/control/postinst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/liquibase/deb/control/postinst b/src/liquibase/deb/control/postinst index 7696bc2e..d0bd4067 100755 --- a/src/liquibase/deb/control/postinst +++ b/src/liquibase/deb/control/postinst @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash LIQUIBASE_HOME=/opt/liquibase From 2a43737c31bee4cebb782ec611bad1c3f71f690f Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 16 Aug 2023 11:23:13 +0200 Subject: [PATCH 085/147] fix(postinst, postrm): change shebang from bash to sh for better compatibility fix(postinst, postrm): change sourcing of ~/.profile from 'source' to '.' for better compatibility --- src/liquibase/deb/control/postinst | 4 ++-- src/liquibase/deb/control/postrm | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/liquibase/deb/control/postinst b/src/liquibase/deb/control/postinst index d0bd4067..6312f55e 100755 --- a/src/liquibase/deb/control/postinst +++ b/src/liquibase/deb/control/postinst @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh LIQUIBASE_HOME=/opt/liquibase @@ -6,4 +6,4 @@ LIQUIBASE_HOME=/opt/liquibase sudo echo "export LIQUIBASE_HOME=$LIQUIBASE_HOME" >> ~/.profile sudo echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> ~/.profile -source ~/.profile \ No newline at end of file +. ~/.profile \ No newline at end of file diff --git a/src/liquibase/deb/control/postrm b/src/liquibase/deb/control/postrm index 65c1a112..a46d6763 100755 --- a/src/liquibase/deb/control/postrm +++ b/src/liquibase/deb/control/postrm @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh LIQUIBASE_HOME=/opt/liquibase @@ -9,4 +9,4 @@ path=$PATH path_without_liquibase=$(echo "$path" | sed 's/:\/opt\/liquibase//g') export PATH=$path_without_liquibase # Source the profile to apply changes immediately -source ~/.profile +. ~/.profile From 10f73a96b50b0c2fa10ec751a76dbd7497f02130 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 16 Aug 2023 11:35:05 +0200 Subject: [PATCH 086/147] chore(liquibase): add debug mode to postinst and postrm scripts for troubleshooting --- src/liquibase/deb/control/postinst | 2 +- src/liquibase/deb/control/postrm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/liquibase/deb/control/postinst b/src/liquibase/deb/control/postinst index 6312f55e..9e1f779c 100755 --- a/src/liquibase/deb/control/postinst +++ b/src/liquibase/deb/control/postinst @@ -1,5 +1,5 @@ #!/bin/sh - +set -x LIQUIBASE_HOME=/opt/liquibase # Needed once the installation is complete. No need to open a new terminal diff --git a/src/liquibase/deb/control/postrm b/src/liquibase/deb/control/postrm index a46d6763..183ca6d8 100755 --- a/src/liquibase/deb/control/postrm +++ b/src/liquibase/deb/control/postrm @@ -1,5 +1,5 @@ #!/bin/sh - +set -x LIQUIBASE_HOME=/opt/liquibase # Remove the liquibase-related lines from the profile From e517f3c0a64874e19fcfd5066fd375b421d7333b Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 16 Aug 2023 12:01:48 +0200 Subject: [PATCH 087/147] fix(liquibase): change shebang from `#!/bin/sh` to `#!/bin/bash` for better compatibility feat(liquibase): add support for adding and removing LIQUIBASE_HOME environment variable and PATH to user's .profile file --- src/liquibase/deb/control/postinst | 27 ++++++++++++++++++------- src/liquibase/deb/control/postrm | 32 ++++++++++++++++++++---------- 2 files changed, 41 insertions(+), 18 deletions(-) diff --git a/src/liquibase/deb/control/postinst b/src/liquibase/deb/control/postinst index 9e1f779c..402e78fa 100755 --- a/src/liquibase/deb/control/postinst +++ b/src/liquibase/deb/control/postinst @@ -1,9 +1,22 @@ -#!/bin/sh -set -x -LIQUIBASE_HOME=/opt/liquibase +#!/bin/bash -# Needed once the installation is complete. No need to open a new terminal -sudo echo "export LIQUIBASE_HOME=$LIQUIBASE_HOME" >> ~/.profile -sudo echo "export PATH=\$PATH:\$LIQUIBASE_HOME" >> ~/.profile +# Define LIQUIBASE_HOME +LIQUIBASE_HOME="/opt/liquibase" -. ~/.profile \ No newline at end of file +# Iterate through all user home directories +for user_home in /home/*; do + if [ -d "$user_home" ]; then + user=$(basename "$user_home") + profile_file="$user_home/.profile" + + # Check if the .profile file exists for the user + if [ -f "$profile_file" ]; then + echo "Adding LIQUIBASE_HOME to .profile for user: $user" + echo "export LIQUIBASE_HOME=$LIQUIBASE_HOME" | sudo tee -a "$profile_file" + echo "export PATH=\$PATH:\$LIQUIBASE_HOME" | sudo tee -a "$profile_file" + . "$profile_file" + else + echo "No .profile found for user: $user" + fi + fi +done \ No newline at end of file diff --git a/src/liquibase/deb/control/postrm b/src/liquibase/deb/control/postrm index 183ca6d8..0995a227 100755 --- a/src/liquibase/deb/control/postrm +++ b/src/liquibase/deb/control/postrm @@ -1,12 +1,22 @@ -#!/bin/sh -set -x -LIQUIBASE_HOME=/opt/liquibase +#!/bin/bash -# Remove the liquibase-related lines from the profile -sudo sed -i '/LIQUIBASE_HOME=/d' ~/.profile -sudo sed -i '/export PATH=\$PATH:\$LIQUIBASE_HOME/d' ~/.profile -path=$PATH -path_without_liquibase=$(echo "$path" | sed 's/:\/opt\/liquibase//g') -export PATH=$path_without_liquibase -# Source the profile to apply changes immediately -. ~/.profile +# Define LIQUIBASE_HOME +LIQUIBASE_HOME="/opt/liquibase" + +# Iterate through all user home directories +for user_home in /home/*; do + if [ -d "$user_home" ]; then + user=$(basename "$user_home") + profile_file="$user_home/.profile" + + # Check if the .profile file exists for the user + if [ -f "$profile_file" ]; then + echo "Removing LIQUIBASE_HOME from .profile for user: $user" + sed -i '/LIQUIBASE_HOME=/d' "$profile_file" + sed -i '/export PATH=\$PATH:\$LIQUIBASE_HOME/d' "$profile_file" + . "$profile_file" + else + echo "No .profile found for user: $user" + fi + fi +done \ No newline at end of file From 6939ecada2739abcd6d906d2c61cbd32dfd5ae9a Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 16 Aug 2023 12:52:42 +0200 Subject: [PATCH 088/147] fix(postinst): check if LIQUIBASE_HOME is already in PATH before adding it to .profile file to avoid duplication The changes were made to the postinst file in the src/liquibase/deb/control directory. The script checks if the LIQUIBASE_HOME environment variable is already present in the .profile file for each user's home directory. If it is not present, the script adds the LIQUIBASE_HOME variable and appends it to the PATH variable in the .profile file. This change was made to prevent duplication of the LIQUIBASE_HOME variable in the .profile file. --- src/liquibase/deb/control/postinst | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/liquibase/deb/control/postinst b/src/liquibase/deb/control/postinst index 402e78fa..385374a7 100755 --- a/src/liquibase/deb/control/postinst +++ b/src/liquibase/deb/control/postinst @@ -12,9 +12,13 @@ for user_home in /home/*; do # Check if the .profile file exists for the user if [ -f "$profile_file" ]; then echo "Adding LIQUIBASE_HOME to .profile for user: $user" - echo "export LIQUIBASE_HOME=$LIQUIBASE_HOME" | sudo tee -a "$profile_file" - echo "export PATH=\$PATH:\$LIQUIBASE_HOME" | sudo tee -a "$profile_file" - . "$profile_file" + if grep -q "$LIQUIBASE_HOME" "$profile_file"; then + echo "LIQUIBASE_HOME already in PATH for user: $user" + else + echo "export LIQUIBASE_HOME=$LIQUIBASE_HOME" | sudo tee -a "$profile_file" + echo "export PATH=\$PATH:\$LIQUIBASE_HOME" | sudo tee -a "$profile_file" + . "$profile_file" + fi else echo "No .profile found for user: $user" fi From a2b0d052fb5d23657ac548667667999a72be9bd7 Mon Sep 17 00:00:00 2001 From: jandroav Date: Thu, 17 Aug 2023 08:38:44 +0200 Subject: [PATCH 089/147] refactor(package-deb-pom.xml): update prefix in mapper to /usr/bin for better installation location refactor(postinst): update LIQUIBASE_HOME to /usr/bin for better installation location and remove unnecessary code for updating user profiles refactor(postrm): unset LIQUIBASE_HOME and remove unnecessary code for updating user profiles --- .github/package-deb-pom.xml | 2 +- src/liquibase/deb/control/postinst | 24 +----------------------- src/liquibase/deb/control/postrm | 21 ++------------------- 3 files changed, 4 insertions(+), 43 deletions(-) diff --git a/.github/package-deb-pom.xml b/.github/package-deb-pom.xml index cdd264c6..48b9d9df 100644 --- a/.github/package-deb-pom.xml +++ b/.github/package-deb-pom.xml @@ -56,7 +56,7 @@ directory perm - /opt/liquibase + /usr/bin 755 diff --git a/src/liquibase/deb/control/postinst b/src/liquibase/deb/control/postinst index 385374a7..0013840c 100755 --- a/src/liquibase/deb/control/postinst +++ b/src/liquibase/deb/control/postinst @@ -1,26 +1,4 @@ #!/bin/bash # Define LIQUIBASE_HOME -LIQUIBASE_HOME="/opt/liquibase" - -# Iterate through all user home directories -for user_home in /home/*; do - if [ -d "$user_home" ]; then - user=$(basename "$user_home") - profile_file="$user_home/.profile" - - # Check if the .profile file exists for the user - if [ -f "$profile_file" ]; then - echo "Adding LIQUIBASE_HOME to .profile for user: $user" - if grep -q "$LIQUIBASE_HOME" "$profile_file"; then - echo "LIQUIBASE_HOME already in PATH for user: $user" - else - echo "export LIQUIBASE_HOME=$LIQUIBASE_HOME" | sudo tee -a "$profile_file" - echo "export PATH=\$PATH:\$LIQUIBASE_HOME" | sudo tee -a "$profile_file" - . "$profile_file" - fi - else - echo "No .profile found for user: $user" - fi - fi -done \ No newline at end of file +LIQUIBASE_HOME="/usr/bin" diff --git a/src/liquibase/deb/control/postrm b/src/liquibase/deb/control/postrm index 0995a227..2983b159 100755 --- a/src/liquibase/deb/control/postrm +++ b/src/liquibase/deb/control/postrm @@ -1,22 +1,5 @@ #!/bin/bash -# Define LIQUIBASE_HOME -LIQUIBASE_HOME="/opt/liquibase" +# unset LIQUIBASE_HOME +unset LIQUIBASE_HOME -# Iterate through all user home directories -for user_home in /home/*; do - if [ -d "$user_home" ]; then - user=$(basename "$user_home") - profile_file="$user_home/.profile" - - # Check if the .profile file exists for the user - if [ -f "$profile_file" ]; then - echo "Removing LIQUIBASE_HOME from .profile for user: $user" - sed -i '/LIQUIBASE_HOME=/d' "$profile_file" - sed -i '/export PATH=\$PATH:\$LIQUIBASE_HOME/d' "$profile_file" - . "$profile_file" - else - echo "No .profile found for user: $user" - fi - fi -done \ No newline at end of file From 4d14b2be58acc7c54be6bcc5929867c0eab7808f Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 18 Aug 2023 10:56:12 +0200 Subject: [PATCH 090/147] feat: add script to upload zip file to GitHub release - Added a new script `upload_zip.sh` to the `.github` directory. - The script uploads a zip file to a GitHub release. - The script requires the `GITHUB_TOKEN`, `ASSET_NAME_PREFIX`, and `ASSET_DIR` environment variables to be set. - The script takes the version as a parameter. - The script retrieves the upload URL from the `get_draft_release.sh` script. - The script uploads the zip file to the release using the `curl` command. feat: add workflow to attach zip file to release - Added a new workflow `extension-attach-artifact-release.yml` to the `.github/workflows` directory. - The workflow is triggered by a workflow call. - The workflow has an optional input `zip` to specify whether to attach a zip file to the release. - The workflow retrieves the `BOT_TOKEN` secret from the caller workflow. - The workflow sets the `ASSET_NAME_PREFIX` and `ASSET_DIR` environment variables. - If the `zip` input is `true`, the workflow downloads the `upload_zip.sh` script and attaches the zip file to the release using the script. --- .github/upload_zip.sh | 54 +++++++++++++++++++ .../extension-attach-artifact-release.yml | 21 ++++++++ 2 files changed, 75 insertions(+) create mode 100644 .github/upload_zip.sh diff --git a/.github/upload_zip.sh b/.github/upload_zip.sh new file mode 100644 index 00000000..5dee32f5 --- /dev/null +++ b/.github/upload_zip.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +set -e + +if [[ -z "$GITHUB_TOKEN" ]]; then + echo "Set the GITHUB_TOKEN env variable." + exit 1 +fi + +if [[ -z "$ASSET_NAME_PREFIX" ]]; then + echo "Set the ASSET_NAME_PREFIX env variable." + exit 1 +fi + +if [[ -z "$ASSET_DIR" ]]; then + echo "Set the ASSET_DIR env variable." + exit 1 +fi + +VERSION=$1 +if [[ -z "$VERSION" ]]; then + echo "Set the VERSION parameter." + exit 1 +fi + +_DIR=$(dirname "$0") +UPLOAD_URL=$($_DIR/get_draft_release.sh UPLOAD_URL) + +upload_asset() { + local file=$1 + local size=$2 + local content_type=$3 + echo "Uploading $file ($size bytes) to $UPLOAD_URL" + curl \ + -H "Authorization: token $GITHUB_TOKEN" \ + -H "Content-Length: $size"\ + -H "Content-Type: $content_type" \ + --data-binary @$file "$UPLOAD_URL?name=$(basename $file)" +} + +EXTENSION=".zip" +FILE=$ASSET_DIR/$ASSET_NAME_PREFIX$VERSION$EXTENSION +# Skip if zip files do not exist (some extensions do not generate examples in zip format) +if [[ ! -f "$FILE" && "$FILE" != *".zip" ]]; then + echo "$FILE does not exist." +fi +SIZE=$(wc -c $FILE | awk '{print $1}') +if [[ $SIZE -eq 0 ]]; then + echo "$FILE is empty." +fi +MIME=$(file -b --mime-type $FILE) +upload_asset $FILE $SIZE $MIME + + diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index f7c97453..31f9ce4c 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -2,6 +2,12 @@ name: Attach Artifact to Release on: workflow_call: + inputs: + zip: + description: 'Specify it if you want to attach a zip file to the release' + required: false + default: false + type: boolean secrets: BOT_TOKEN: description: 'BOT_TOKEN from the caller workflow' @@ -93,3 +99,18 @@ jobs: GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} ASSET_NAME_PREFIX: "${{ env.artifact_id }}-" ASSET_DIR: ./target + + - name: Get upload_zip.sh Script File + if: ${{ github.event.inputs.zip == 'true' }} + run: | + curl -o $PWD/.github/upload_zip.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.9/.github/upload_zip.sh + chmod +x $PWD/.github/upload_zip.sh + + - name: Attach Zip File to Draft Release + if: ${{ github.event.inputs.zip == 'true' }} + id: upload-release-zip + run: ./.github/upload_zip.sh $(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) + env: + GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} + ASSET_NAME_PREFIX: "${{ env.artifact_id }}-" + ASSET_DIR: ./target From 637259cf5c688b300bd31d4e846a4b8448960b09 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 18 Aug 2023 10:59:27 +0200 Subject: [PATCH 091/147] chore(README.md): improve formatting and readability of the table of reusable workflows and their descriptions --- README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 6af37d2b..303cb6d9 100644 --- a/README.md +++ b/README.md @@ -64,20 +64,20 @@ graph LR Please review the below table of reusable workflows and their descriptions: -| Workflow | Description | -|-----------------------------------------|---------------------------------------------------------------------------------------| -| `build-artifact.yml` | Runs maven build and saves artifacts | -| `create-release.yml` | Runs Release Drafter to auto create draft release notes | -| `extension-attach-artifact-release.yml` | Attaches a tested artifact to the draft release | -| `extension-release-published.yml` | Publishes a release to Maven Central | -| `extension-update-version.yml` | Updates release and development `pom.xml` versions | -| `os-extension-test.yml` | Unit tests across build matrix on previously built artifact | -| `package-deb.yml` | Creates and uploads deb packages | -| `pro-extension-test.yml` | Same as OS job, but with additional Pro-only vars such as License Key | -| `sonar-pull-request.yml` | Code Coverage Scan for PRs. Requires branch name parameter | -| `sonar-push.yml` | Same as PR job, but for pushes to main. Does not require branch name parameter | -| `snyk-nightly.yml` | Nightly Security Scans | -| various shell scripts | helper scripts for getting the draft release, signing artifacts, and uploading assets | +| Workflow | Description | +|-----------------------------------------|-------------------------------------------------------------------------------------------------------| +| `build-artifact.yml` | Runs maven build and saves artifacts | +| `create-release.yml` | Runs Release Drafter to auto create draft release notes | +| `extension-attach-artifact-release.yml` | Attaches a tested artifact to the draft release. Receives a `zip` input to upload generated zip files | +| `extension-release-published.yml` | Publishes a release to Maven Central | +| `extension-update-version.yml` | Updates release and development `pom.xml` versions | +| `os-extension-test.yml` | Unit tests across build matrix on previously built artifact | +| `package-deb.yml` | Creates and uploads deb packages | +| `pro-extension-test.yml` | Same as OS job, but with additional Pro-only vars such as License Key | +| `sonar-pull-request.yml` | Code Coverage Scan for PRs. Requires branch name parameter | +| `sonar-push.yml` | Same as PR job, but for pushes to main. Does not require branch name parameter | +| `snyk-nightly.yml` | Nightly Security Scans | +| various shell scripts | helper scripts for getting the draft release, signing artifacts, and uploading assets | ## Requirements ### pom.xml From e691dfd9af15b72980e36b9e85795df52e1531c3 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 18 Aug 2023 11:21:15 +0200 Subject: [PATCH 092/147] chore(extension-attach-artifact-release.yml): update zip input type to string and default value to 'false' for better consistency and compatibility with GitHub Actions --- .github/workflows/extension-attach-artifact-release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index 31f9ce4c..c9aee23a 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -6,8 +6,8 @@ on: zip: description: 'Specify it if you want to attach a zip file to the release' required: false - default: false - type: boolean + default: 'false' + type: string secrets: BOT_TOKEN: description: 'BOT_TOKEN from the caller workflow' From 8f5063e87bdb766541f132701a4fc0766e4d02c1 Mon Sep 17 00:00:00 2001 From: jandroav Date: Fri, 18 Aug 2023 11:56:27 +0200 Subject: [PATCH 093/147] fix(extension-attach-artifact-release.yml): remove unnecessary curly braces in if condition to improve readability fix(extension-attach-artifact-release.yml): update URL of upload_zip.sh script file to use the latest version fix(extension-attach-artifact-release.yml): add execute permission to upload_zip.sh script file --- .github/workflows/extension-attach-artifact-release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index c9aee23a..4ac8abdc 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -101,13 +101,13 @@ jobs: ASSET_DIR: ./target - name: Get upload_zip.sh Script File - if: ${{ github.event.inputs.zip == 'true' }} + if: github.event.inputs.zip == 'true' run: | curl -o $PWD/.github/upload_zip.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.9/.github/upload_zip.sh chmod +x $PWD/.github/upload_zip.sh - name: Attach Zip File to Draft Release - if: ${{ github.event.inputs.zip == 'true' }} + if: github.event.inputs.zip == 'true' id: upload-release-zip run: ./.github/upload_zip.sh $(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) env: From 547fe183ce8c6f9da93284fa7ab7306065b3b05f Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 23 Aug 2023 11:08:03 +0200 Subject: [PATCH 094/147] fix(extension-attach-artifact-release.yml): change assets pattern from "${{ env.artifact_id }}-*" to '*.*' to include all files as assets in the release --- .github/workflows/extension-attach-artifact-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index f7c97453..d2dd090c 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -68,7 +68,7 @@ jobs: tag: ${{ env.release_tag }} fail-if-no-assets: false fail-if-no-release: false - assets: "${{ env.artifact_id }}-*" + assets: '*.*' - name: Import GPG key id: import_gpg From c584483a0a3904cc0af570c50b1949bf345e68da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Aug 2023 01:11:35 +0000 Subject: [PATCH 095/147] chore(deps): bump aws-actions/configure-aws-credentials from 2 to 3 Bumps [aws-actions/configure-aws-credentials](https://github.com/aws-actions/configure-aws-credentials) from 2 to 3. - [Release notes](https://github.com/aws-actions/configure-aws-credentials/releases) - [Changelog](https://github.com/aws-actions/configure-aws-credentials/blob/main/CHANGELOG.md) - [Commits](https://github.com/aws-actions/configure-aws-credentials/compare/v2...v3) --- updated-dependencies: - dependency-name: aws-actions/configure-aws-credentials dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/package-deb.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index dca42b8b..8a4590ef 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -70,7 +70,7 @@ jobs: ruby-version: 3.1.4 - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v2 + uses: aws-actions/configure-aws-credentials@v3 with: aws-access-key-id: ${{ secrets.AWS_PROD_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_PROD_SECRET_ACCESS_KEY }} From f199fa578cf3ced2bf16d176c56b117b4e78b35b Mon Sep 17 00:00:00 2001 From: Alejandro Alvarez Date: Fri, 1 Sep 2023 15:34:41 +0200 Subject: [PATCH 096/147] DAT-15348 DevOps :: run nightly builds for extensions against core master-snapshot (#62) * chore(create-release.yml): update sonar-push.yml version to v0.4.1 for improved functionality chore(extension-attach-artifact-release.yml): update script file versions to v0.4.1 for improved functionality chore(extension-release-published.yml): update extension-release-prepare.yml version to v0.4.1 for improved functionality chore(os-extension-test.yml): update sonar-pull-request.yml version to v0.4.1 for improved functionality chore(package-deb.yml): update build-logic versions to v0.4.1 for improved functionality chore(pro-extension-test.yml): set latest liquibase version to master-SNAPSHOT if nightly build is specified * fix(pro-extension-test.yml): correct typo in description of nightly build option The description of the nightly build option was misspelled as "nigthly" instead of "nightly". This commit fixes the typo to improve clarity and consistency in the codebase. * chore(pro-extension-test.yml): fix typo in description of nightly option * chore(os-extension-test.yml): add support for nightly builds against liquibase master-SNAPSHOT feat(os-extension-test.yml): set latest liquibase version to master-SNAPSHOT if nightly flag is set --- .github/workflows/create-release.yml | 2 +- .../workflows/extension-attach-artifact-release.yml | 6 +++--- .github/workflows/extension-release-published.yml | 2 +- .github/workflows/os-extension-test.yml | 11 ++++++++++- .github/workflows/package-deb.yml | 8 ++++---- .github/workflows/pro-extension-test.yml | 11 ++++++++++- 6 files changed, 29 insertions(+), 11 deletions(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 812749b6..87c864b6 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -5,7 +5,7 @@ on: jobs: sonar: - uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.3.9 + uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.4.1 secrets: inherit create-release: diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index d2dd090c..3b8d627b 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -31,9 +31,9 @@ jobs: - name: Get Reusable Script Files run: | - curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.9/.github/get_draft_release.sh - curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.9/.github/sign_artifact.sh - curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.9/.github/upload_asset.sh + curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.1/.github/get_draft_release.sh + curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.1/.github/sign_artifact.sh + curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.1/.github/upload_asset.sh chmod +x $PWD/.github/get_draft_release.sh chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh diff --git a/.github/workflows/extension-release-published.yml b/.github/workflows/extension-release-published.yml index a74995ac..dba2e183 100644 --- a/.github/workflows/extension-release-published.yml +++ b/.github/workflows/extension-release-published.yml @@ -68,5 +68,5 @@ jobs: maven-release: needs: release - uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.3.9 + uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.4.1 secrets: inherit \ No newline at end of file diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index 9ae3ca7f..54832d24 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -13,6 +13,11 @@ on: required: false default: '["ubuntu-latest", "windows-latest"]' type: string + nigthly: + description: 'Specifies nightly builds against liquibase master-SNAPSHOT' + required: false + default: false + type: boolean jobs: build: @@ -28,6 +33,10 @@ jobs: distribution: 'temurin' cache: 'maven' + - name: Set latest liquibase version + if: ${{ inputs.nigthly }} + run: mvn versions:set-property -Dproperty=liquibase.version -DnewVersion=master-SNAPSHOT + - name: Build and Package run: mvn -B dependency:go-offline clean package -DskipTests=true @@ -89,5 +98,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.9 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.1 secrets: inherit \ No newline at end of file diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index dca42b8b..df0a7801 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -54,10 +54,10 @@ jobs: # Under the src folder is where specific packages files live. The GitHub action inputs will modify the universal package-deb-pom.xml to tell the process which assets to use during the packaging step mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/deb/control mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/main/archive - curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/control https://raw.githubusercontent.com/liquibase/build-logic/v0.3.9/src/${{ inputs.artifactId }}/deb/control/control - curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/postinst https://raw.githubusercontent.com/liquibase/build-logic/v0.3.9/src/${{ inputs.artifactId }}/deb/control/postinst - curl -o $PWD/.github/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.9/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh - curl -o $PWD/.github/package-deb-pom.xml https://raw.githubusercontent.com/liquibase/build-logic/v0.3.9/.github/package-deb-pom.xml + curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/control https://raw.githubusercontent.com/liquibase/build-logic/v0.4.1/src/${{ inputs.artifactId }}/deb/control/control + curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/postinst https://raw.githubusercontent.com/liquibase/build-logic/v0.4.1/src/${{ inputs.artifactId }}/deb/control/postinst + curl -o $PWD/.github/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.1/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh + curl -o $PWD/.github/package-deb-pom.xml https://raw.githubusercontent.com/liquibase/build-logic/v0.4.1/.github/package-deb-pom.xml - name: Set up Maven uses: stCarolas/setup-maven@v4.5 diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index 1049d70b..2eecb520 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -13,6 +13,11 @@ on: required: false default: '["ubuntu-latest", "windows-latest"]' type: string + nigthly: + description: 'Specifies nightly builds against liquibase master-SNAPSHOT' + required: false + default: false + type: boolean secrets: SONAR_TOKEN: description: 'SONAR_TOKEN from the caller workflow' @@ -48,6 +53,10 @@ jobs: distribution: 'temurin' cache: 'maven' + - name: Set latest liquibase version + if: ${{ inputs.nigthly }} + run: mvn versions:set-property -Dproperty=liquibase.version -DnewVersion=master-SNAPSHOT + - name: Build and Package run: mvn -B dependency:go-offline clean package -DskipTests=true @@ -109,5 +118,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.3.9 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.1 secrets: inherit \ No newline at end of file From 9f06781d9cbcea13124303bf0dc53a981b069081 Mon Sep 17 00:00:00 2001 From: jandroav Date: Mon, 4 Sep 2023 09:11:05 +0200 Subject: [PATCH 097/147] feat(sonar-test-scan.yml): add Sonar Scan workflow for scanning branches and pull requests This commit adds a new workflow file `sonar-test-scan.yml` that sets up a Sonar Scan job. The workflow is triggered by a `workflow_call` event and requires several input parameters such as `thisBranchName`, `liquibaseBranchName`, `thisSha`, `pullRequestNumber`, `pullRequestBranchName`, `pullRequestBaseBranchName`, and `mavenArgs`. The job runs on an Ubuntu 22.04 runner and consists of the following steps: 1. Checkout the repository with disabled shallow clones. 2. Set up JDK 11 using the `actions/setup-java` action. 3. Set up Maven 3.8.7 using the `stCarolas/setup-maven` action. 4. Install `mvnd` for improved Maven performance. 5. Set up Maven `settings.xml` with Liquibase repositories and credentials. 6. Login to GitHub Container Registry using the `docker/login-action` action. 7. Install `sqlplus` for integration tests. 8. Cache SonarCloud packages using the `actions/cache` action. 9. Run the Sonar Scan using the provided environment variables and Maven command. The Sonar Scan command includes various parameters for configuring the scan, such as the Liquibase version, build information, SonarCloud tokens, branch and pull request details, quality gate settings, and AWS region. This workflow enables automated code analysis and quality checks for branches and pull requests in the repository. --- .github/workflows/sonar-test-scan.yml | 162 ++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 .github/workflows/sonar-test-scan.yml diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml new file mode 100644 index 00000000..5d9bdb18 --- /dev/null +++ b/.github/workflows/sonar-test-scan.yml @@ -0,0 +1,162 @@ +name: Sonar Scan + +on: + workflow_call: + inputs: + thisBranchName: + description: 'The name of the branch to be scanned' + type: string + required: true + liquibaseBranchName: + description: 'The name of the liquibase branch to be scanned' + type: string + required: true + thisSha: + description: 'The sha of the branch to be scanned' + type: string + required: true + pullRequestNumber: + description: 'The pull request number to be scanned' + type: string + required: false + pullRequestBranchName: + description: 'The name of the pull request branch to be scanned' + type: string + required: false + pullRequestBaseBranchName: + description: 'The name of the pull request base branch to be scanned' + type: string + required: false + mavenArgs: + description: 'The maven arguments to be passed to the mvn command' + type: string + required: false + +env: + MAVEN_VERSION: '3.8.7' + +jobs: + sonar-push: + name: Sonar Scan + runs-on: ubuntu-22.04 + + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + + - name: Set up JDK + uses: actions/setup-java@v3 + with: + java-version: 11 + distribution: 'temurin' + cache: 'maven' + overwrite-settings: false + + - name: Set up Maven + uses: stCarolas/setup-maven@v4.5 + with: + maven-version: ${{ env.MAVEN_VERSION }} + + - name: Install mvnd + run: | + wget https://github.com/apache/maven-mvnd/releases/download/1.0-m7/maven-mvnd-1.0-m7-m39-linux-amd64.zip + unzip maven-mvnd-1.0-m7-m39-linux-amd64.zip && mv maven-mvnd-1.0-m7-m39-linux-amd64 mvnd && chmod +x mvnd/bin/mvnd + ls -ltr + ls -ltr ./mvnd + + - name: Set up Maven settings.xml + uses: whelk-io/maven-settings-xml-action@v20 + with: + repositories: | + [ + { + "id": "liquibase", + "url": "https://maven.pkg.github.com/liquibase/liquibase", + "releases": { + "enabled": "false" + }, + "snapshots": { + "enabled": "true", + "updatePolicy": "always" + } + }, + { + "id": "liquibase-pro", + "url": "https://maven.pkg.github.com/liquibase/liquibase-pro", + "releases": { + "enabled": "false" + }, + "snapshots": { + "enabled": "true", + "updatePolicy": "always" + } + } + ] + servers: | + [ + { + "id": "liquibase-pro", + "username": "liquibot", + "password": "${{ secrets.LIQUIBOT_PAT }}" + }, + { + "id": "liquibase", + "username": "liquibot", + "password": "${{ secrets.LIQUIBOT_PAT }}" + } + ] + + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: liquibot + password: ${{ secrets.GHCR_PAT }} + + - name: Install sqlplus for Integration tests + run: | + wget -nv --directory-prefix=$HOME -nc https://download.oracle.com/otn_software/linux/instantclient/215000/instantclient-sqlplus-linux.x64-21.5.0.0.0dbru.zip + unzip $HOME/instantclient-sqlplus-linux.x64-21.5.0.0.0dbru.zip -d $HOME + sleep 3 + wget -nv --directory-prefix=$HOME -nc https://download.oracle.com/otn_software/linux/instantclient/215000/instantclient-basiclite-linux.x64-21.5.0.0.0dbru.zip + unzip $HOME/instantclient-basiclite-linux.x64-21.5.0.0.0dbru.zip -d $HOME + chmod -R a+x $HOME/instantclient_21_5/ + + - name: Cache SonarCloud packages + uses: actions/cache@v3 + with: + path: ~/.sonar/cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + + - name: Sonar Scan + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} + run: | + export ORACLE_HOME=$ORACLE_HOME:$HOME/instantclient_21_5; export PATH=$PATH:$HOME/instantclient_21_5; export SQLPATH=$HOME/instantclient_21_5; export NLS_LANG=AMERICAN_AMERICA.UTF8; export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/instantclient_21_5 + ./mvnd/bin/mvnd -B clean verify sonar:sonar \ + "${{ inputs.mavenArgs }}" \ + "-Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT" \ + "-Dbuild.pro.number=${{ github.run_number }}" \ + "-Dbuild.pro.commit=${{ inputs.thisSha }}" \ + "-Dbuild.pro.branch=${{ inputs.thisBranchName }}" \ + -Dsonar.scm.revision=${{ inputs.thisSha }} \ + -Dsonar.login=$SONAR_TOKEN \ + -Dsonar.java.coveragePlugin=jacoco \ + -Dsonar.branch.name=${{ inputs.thisBranchName}} \ + -Dsonar.pullrequest.key=${{ inputs.pullRequestNumber}} \ + -Dsonar.pullrequest.branch=${{ inputs.pullRequestBranchName}} \ + -Dsonar.pullrequest.base=${{ inputs.pullRequestBaseBranchName }} \ + -Dsonar.pullrequest.provider=GitHub \ + -Dsonar.pullrequest.github.repository="${{ github.repository_owner }}/${{ github.repository }}" \ + -Dsonar.pullrequest.github.endpoint='https://api.github.com/' \ + -Dsonar.qualitygate.wait=true \ + -Dsonar.organization=${{ github.repository_owner }} \ + -Dsonar.projectDescription='Liquibase Pro' \ + -Dsonar.host.url='https://sonarcloud.io' \ + -Dsonar.scm.provider=git \ + -Daws.region="us-east-1" \ + -T 1C From 2d078a9d506d73b83937f76f79cdbc52a03768f5 Mon Sep 17 00:00:00 2001 From: jandroav Date: Mon, 4 Sep 2023 09:28:14 +0200 Subject: [PATCH 098/147] fix(workflows): update conditionals in extension-attach-artifact-release.yml, os-extension-test.yml, pro-extension-test.yml, and sonar-test-scan.yml to use 'inputs' instead of 'github.event.inputs' for improved readability and consistency. --- .github/workflows/extension-attach-artifact-release.yml | 4 ++-- .github/workflows/os-extension-test.yml | 4 ++-- .github/workflows/pro-extension-test.yml | 4 ++-- .github/workflows/sonar-test-scan.yml | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index f0457a78..2df2b7ed 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -102,13 +102,13 @@ jobs: ASSET_DIR: ./target - name: Get upload_zip.sh Script File - if: github.event.inputs.zip == 'true' + if: inputs.zip == 'true' run: | curl -o $PWD/.github/upload_zip.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.9/.github/upload_zip.sh chmod +x $PWD/.github/upload_zip.sh - name: Attach Zip File to Draft Release - if: github.event.inputs.zip == 'true' + if: inputs.zip == 'true' id: upload-release-zip run: ./.github/upload_zip.sh $(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) env: diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index 54832d24..48f44237 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -64,8 +64,8 @@ jobs: strategy: fail-fast: false matrix: - java: ${{fromJson(github.event.inputs.java || '[8, 11, 17, 18]')}} - os: ${{fromJson(github.event.inputs.os || '["ubuntu-latest", "windows-latest"]')}} + java: ${{fromJson(inputs.java || '[8, 11, 17, 18]')}} + os: ${{fromJson(inputs.os || '["ubuntu-latest", "windows-latest"]')}} name: Test Java ${{ matrix.java }} - ${{ matrix.os }} runs-on: ${{ matrix.os }} needs: build diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index 2eecb520..fda042ef 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -84,8 +84,8 @@ jobs: strategy: fail-fast: false matrix: - java: ${{fromJson(github.event.inputs.java || '[8, 11, 17, 18]')}} - os: ${{fromJson(github.event.inputs.os || '["ubuntu-latest", "windows-latest"]')}} + java: ${{fromJson(inputs.java || '[8, 11, 17, 18]')}} + os: ${{fromJson(inputs.os || '["ubuntu-latest", "windows-latest"]')}} name: Test Java ${{ matrix.java }} - ${{ matrix.os }} runs-on: ${{ matrix.os }} needs: build diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index 5d9bdb18..569d1a04 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -137,7 +137,7 @@ jobs: LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} run: | export ORACLE_HOME=$ORACLE_HOME:$HOME/instantclient_21_5; export PATH=$PATH:$HOME/instantclient_21_5; export SQLPATH=$HOME/instantclient_21_5; export NLS_LANG=AMERICAN_AMERICA.UTF8; export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/instantclient_21_5 - ./mvnd/bin/mvnd -B clean verify sonar:sonar \ + ./mvnd/bin/mvnd -B clean verify sonar:sonar -P 'testAll,!run-proguard' \ "${{ inputs.mavenArgs }}" \ "-Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT" \ "-Dbuild.pro.number=${{ github.run_number }}" \ From c3f517a24db46ae3f954839d0bcdc134baa2146d Mon Sep 17 00:00:00 2001 From: jandroav Date: Mon, 4 Sep 2023 10:00:51 +0200 Subject: [PATCH 099/147] fix(sonar-test-scan.yml): remove unnecessary double quotes around ${{ inputs.mavenArgs }} to fix variable substitution issue --- .github/workflows/sonar-test-scan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index 569d1a04..1aaee29c 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -138,7 +138,7 @@ jobs: run: | export ORACLE_HOME=$ORACLE_HOME:$HOME/instantclient_21_5; export PATH=$PATH:$HOME/instantclient_21_5; export SQLPATH=$HOME/instantclient_21_5; export NLS_LANG=AMERICAN_AMERICA.UTF8; export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/instantclient_21_5 ./mvnd/bin/mvnd -B clean verify sonar:sonar -P 'testAll,!run-proguard' \ - "${{ inputs.mavenArgs }}" \ + ${{ inputs.mavenArgs }} \ "-Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT" \ "-Dbuild.pro.number=${{ github.run_number }}" \ "-Dbuild.pro.commit=${{ inputs.thisSha }}" \ From 0bef09d2606a4809e0a89a79ee96914eb2c9032a Mon Sep 17 00:00:00 2001 From: jandroav Date: Mon, 4 Sep 2023 11:42:40 +0200 Subject: [PATCH 100/147] chore: add .DS_Store files to .gitignore docs(README.md): update documentation for Liquibase test and Sonar configuration The README.md file has been updated to provide detailed information on how to configure the project for Liquibase test and Sonar. It includes instructions on setting up the Maven plugins, specifying the coverage report paths, and configuring the modules with and without integration tests. Additionally, it provides an example of the coverage module configuration. The purpose of this update is to improve the documentation and make it easier for developers to understand and configure the project for Liquibase test and Sonar. No functional changes have been made to the code. --- .DS_Store | Bin 0 -> 6148 bytes README.md | 252 +++++++++++++++++++++++++++++++++++- doc/.DS_Store | Bin 0 -> 6148 bytes doc/img/coverage-module.png | Bin 0 -> 33539 bytes doc/img/sonar-test.png | Bin 0 -> 53170 bytes 5 files changed, 251 insertions(+), 1 deletion(-) create mode 100644 .DS_Store create mode 100644 doc/.DS_Store create mode 100644 doc/img/coverage-module.png create mode 100644 doc/img/sonar-test.png diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3cd05d8359b0f814370b7d3e71a6c2470a338991 GIT binary patch literal 6148 zcmeHK%}T>S5Z<-bBorYB1-&hJE!dXQB3?qRFJMFuDm5`hgE3p0)Er77cYPsW#OHBl zcLNr47O^w1`_1oe_JiyXV~md$QI|27F=j(U|Q;Ud7X5 z;_jWvG!No*I#&g8G=-Gg>o|>MF_Mck%2chd1CC=m6Zder?Dhtowixz?tF~C4^g!=?;jnXUQC{omsGxKJ~_~>WY=H?@1U6Fy!!Jrk?A9Ns_ZI@kQg8ahyh|?qZu&A zg5BC^7HILr05MR<0PYV08lq>g)Tp)&=7p`UpzfkFndm5=H28e-m1{&IQ@%%rBU#9kvzg|KX zF+dFbGX{8b?2kvVD08;{SRS6W0@^(^6wE780ResO5&#D7BL^y|;{tWa^9+_6aTN5c QazMHWC_< + 3.0.0-M7 + 0.8.5 + 3.0.0-M7 + ${basedir}/../ + ${basedir}/target/ + true + true + + liquibase-pro-coverage/target/site/jacoco-aggregate/jacoco.xml + + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + ${skip.unit.tests} + + liquibase-pro-integration-tests/**/*IntegrationTest.java + + 1 + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + + integration-tests + + integration-test + verify + + + ${skip.integration.tests} + + **/*IntegrationTest.java + + true + ${itCoverageAgent} + + + + + + org.jacoco + jacoco-maven-plugin + ${jacoco-maven-plugin.version} + + + prepare-unit-tests + + prepare-agent + + + + + prepare-agent + + prepare-agent + + pre-integration-test + + itCoverageAgent + + + + + + org.sonarsource.scanner.maven + sonar-maven-plugin + 3.9.1.2184 + + + sonar + + sonar + + + + + + +``` + +```xml + + unit + + true + false + + + + integration-test + + false + true + + + + testAll + + false + false + + +``` + +#### modules with integration tests (pom.xml) + +`maven-surefire-plugin` had to be added here because `liquibase-pro` integration tests are not following the `*ITest.java` or `*IntegrationTest.java` naming for integration tests. + +```xml + + ${project.basedir}/../liquibase-pro-coverage/target/site/jacoco-aggregate/jacoco.xml + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + ${skip.integration.tests} + 1 + + + + +``` + +#### Modules without integration tests (pom.xml) + +```xml + + ${project.basedir}/../liquibase-pro-coverage/target/site/jacoco-aggregate/jacoco.xml + +``` + +#### Coverage module (pom.xml) + +Here the modules we want to generate and aggregate test reports must be specified as `dependencies`. + +```xml + + target/site/jacoco-aggregate/jacoco.xml + ${basedir}/../ + ${basedir}/target/ + true + true + + + + + ${project.groupId} + liquibase-commercial + ${project.version} + + + ${project.groupId} + liquibase-commercial-integration-tests + ${project.version} + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + ${argLine} -Xms256m -Xmx2048m + 1 + random + + + + + org.jacoco + jacoco-maven-plugin + + + report-aggregate + verify + + report-aggregate + + + + + merge-results + verify + + merge + + + + + ${code.coverage.project.folder} + + **/target/jacoco.exec + + + + ${code.coverage.overall.data.folder}/aggregate.exec + + + + + + +``` \ No newline at end of file diff --git a/doc/.DS_Store b/doc/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..89066db13b73aa2938c87d67db4a9893d09b9b0c GIT binary patch literal 6148 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 literal 0 HcmV?d00001 From eb6fa55b75f1b95a9c17a7e1accd482f0b95403e Mon Sep 17 00:00:00 2001 From: jandroav Date: Mon, 4 Sep 2023 11:42:50 +0200 Subject: [PATCH 101/147] chore(doc): remove .DS_Store file from the doc directory --- doc/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 doc/.DS_Store diff --git a/doc/.DS_Store b/doc/.DS_Store deleted file mode 100644 index 89066db13b73aa2938c87d67db4a9893d09b9b0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}T>S5Z-O8Z7D(y3VI88E!dXQB3?qRFJMFuDm5{s2GeY5QgbMU-1UWg5ueAI z-3eIi!IOxcf!%L*em1)wWOqjhAqR_~Ercb6s6j)NsB924Z*-L?xC|(9j%4OX%7@Xr zKO^5?2V8qugkmZte)e_!QJAEy)`u*WD?7VYkVf_1eNvg5dg&q=c=KBvT`3j$h3@&+ z;W!&v`{yc7y)YinbwU`7A>{5Rj02So)FKWNo$DG$9b{x3Etl<1uhq2so&Kt6FHbw5 zcYEE{s$M%dJ~_J_Jx9}6y&66x(5+>Uuz)vEXgfjj82PX~3?Hlah9 z8w3xCG^v0lRZ@u|O*+_ZigO5agC<=_Dn2BAxhP(w{yNNW>u@0*gWNL%%)mMWSo?xl zc>iC(FSD`8*CE_71I)mGWk6Pj?r;FRqr3InKJl)#p*=uD!MGe15YX2i0WiRG Date: Mon, 4 Sep 2023 11:43:56 +0200 Subject: [PATCH 102/147] feat(README.md): add new workflow `sonar-test-scan.yml` for code coverage scan of unit and integration tests --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 896a769d..925bed74 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,7 @@ Please review the below table of reusable workflows and their descriptions: | `package-deb.yml` | Creates and uploads deb packages | | `pro-extension-test.yml` | Same as OS job, but with additional Pro-only vars such as License Key | | `sonar-pull-request.yml` | Code Coverage Scan for PRs. Requires branch name parameter | +| `sonar-test-scan.yml` | Code Coverage Scan for unit and integration tests | | `sonar-push.yml` | Same as PR job, but for pushes to main. Does not require branch name parameter | | `snyk-nightly.yml` | Nightly Security Scans | | various shell scripts | helper scripts for getting the draft release, signing artifacts, and uploading assets | From dcd930a967ff0d5b19b3ce91a1f91361d1d2d808 Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 5 Sep 2023 09:57:54 +0200 Subject: [PATCH 103/147] chore(sonar-test-scan.yml): update mvnd command to include package phase before verify to ensure proper build before running tests and scanning with SonarQube chore(sonar-test-scan.yml): remove unnecessary build properties from mvnd command as they are not used in the build process chore(sonar-test-scan.yml): update sonar.pullrequest.github.repository property to only include repository name instead of owner/repository format chore(sonar-test-scan.yml): remove sonar.projectDescription property as it is not needed feat(doc): add .DS_Store file to the doc directory --- .github/workflows/sonar-test-scan.yml | 9 ++------- doc/.DS_Store | Bin 0 -> 6148 bytes 2 files changed, 2 insertions(+), 7 deletions(-) create mode 100644 doc/.DS_Store diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index 1aaee29c..996f6d00 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -137,12 +137,8 @@ jobs: LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} run: | export ORACLE_HOME=$ORACLE_HOME:$HOME/instantclient_21_5; export PATH=$PATH:$HOME/instantclient_21_5; export SQLPATH=$HOME/instantclient_21_5; export NLS_LANG=AMERICAN_AMERICA.UTF8; export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/instantclient_21_5 - ./mvnd/bin/mvnd -B clean verify sonar:sonar -P 'testAll,!run-proguard' \ + ./mvnd/bin/mvnd -B clean package verify sonar:sonar -P 'testAll,!run-proguard' \ ${{ inputs.mavenArgs }} \ - "-Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT" \ - "-Dbuild.pro.number=${{ github.run_number }}" \ - "-Dbuild.pro.commit=${{ inputs.thisSha }}" \ - "-Dbuild.pro.branch=${{ inputs.thisBranchName }}" \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ -Dsonar.login=$SONAR_TOKEN \ -Dsonar.java.coveragePlugin=jacoco \ @@ -151,11 +147,10 @@ jobs: -Dsonar.pullrequest.branch=${{ inputs.pullRequestBranchName}} \ -Dsonar.pullrequest.base=${{ inputs.pullRequestBaseBranchName }} \ -Dsonar.pullrequest.provider=GitHub \ - -Dsonar.pullrequest.github.repository="${{ github.repository_owner }}/${{ github.repository }}" \ + -Dsonar.pullrequest.github.repository="${{ github.repository }}" \ -Dsonar.pullrequest.github.endpoint='https://api.github.com/' \ -Dsonar.qualitygate.wait=true \ -Dsonar.organization=${{ github.repository_owner }} \ - -Dsonar.projectDescription='Liquibase Pro' \ -Dsonar.host.url='https://sonarcloud.io' \ -Dsonar.scm.provider=git \ -Daws.region="us-east-1" \ diff --git a/doc/.DS_Store b/doc/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..89066db13b73aa2938c87d67db4a9893d09b9b0c GIT binary patch literal 6148 zcmeHK%}T>S5Z-O8Z7D(y3VI88E!dXQB3?qRFJMFuDm5{s2GeY5QgbMU-1UWg5ueAI z-3eIi!IOxcf!%L*em1)wWOqjhAqR_~Ercb6s6j)NsB924Z*-L?xC|(9j%4OX%7@Xr zKO^5?2V8qugkmZte)e_!QJAEy)`u*WD?7VYkVf_1eNvg5dg&q=c=KBvT`3j$h3@&+ z;W!&v`{yc7y)YinbwU`7A>{5Rj02So)FKWNo$DG$9b{x3Etl<1uhq2so&Kt6FHbw5 zcYEE{s$M%dJ~_J_Jx9}6y&66x(5+>Uuz)vEXgfjj82PX~3?Hlah9 z8w3xCG^v0lRZ@u|O*+_ZigO5agC<=_Dn2BAxhP(w{yNNW>u@0*gWNL%%)mMWSo?xl zc>iC(FSD`8*CE_71I)mGWk6Pj?r;FRqr3InKJl)#p*=uD!MGe15YX2i0WiRG Date: Tue, 5 Sep 2023 10:28:15 +0200 Subject: [PATCH 104/147] fix(sonar-test-scan.yml): remove unnecessary 'package' phase from the Maven command to improve build performance --- .github/workflows/sonar-test-scan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index 996f6d00..3866c54f 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -137,7 +137,7 @@ jobs: LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} run: | export ORACLE_HOME=$ORACLE_HOME:$HOME/instantclient_21_5; export PATH=$PATH:$HOME/instantclient_21_5; export SQLPATH=$HOME/instantclient_21_5; export NLS_LANG=AMERICAN_AMERICA.UTF8; export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/instantclient_21_5 - ./mvnd/bin/mvnd -B clean package verify sonar:sonar -P 'testAll,!run-proguard' \ + ./mvnd/bin/mvnd -B clean verify sonar:sonar -P 'testAll,!run-proguard' \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ -Dsonar.login=$SONAR_TOKEN \ From 375b0d0ef605595251c7107fa72a13e6ecd2610b Mon Sep 17 00:00:00 2001 From: jandroav Date: Tue, 5 Sep 2023 11:25:54 +0200 Subject: [PATCH 105/147] chore(extension-attach-artifact-release.yml): update upload_zip.sh script version to v0.4.1 for compatibility with Liquibase build logic --- .github/workflows/extension-attach-artifact-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index 2df2b7ed..b4acb469 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -104,7 +104,7 @@ jobs: - name: Get upload_zip.sh Script File if: inputs.zip == 'true' run: | - curl -o $PWD/.github/upload_zip.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.3.9/.github/upload_zip.sh + curl -o $PWD/.github/upload_zip.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.1/.github/upload_zip.sh chmod +x $PWD/.github/upload_zip.sh - name: Attach Zip File to Draft Release From 98fab922b2cff82db159dab5fcc2e7217d0a5fa6 Mon Sep 17 00:00:00 2001 From: Jake Newton Date: Tue, 5 Sep 2023 16:55:47 -0500 Subject: [PATCH 106/147] Update pro-extension-test.yml fix typo --- .github/workflows/pro-extension-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index 2eecb520..86b02b85 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -13,7 +13,7 @@ on: required: false default: '["ubuntu-latest", "windows-latest"]' type: string - nigthly: + nightly: description: 'Specifies nightly builds against liquibase master-SNAPSHOT' required: false default: false @@ -119,4 +119,4 @@ jobs: sonar-pr: needs: [ unit-test ] uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.1 - secrets: inherit \ No newline at end of file + secrets: inherit From 448a0b892a09ef10319b0b3220955c7568ce1f1c Mon Sep 17 00:00:00 2001 From: Jake Newton Date: Tue, 5 Sep 2023 16:56:06 -0500 Subject: [PATCH 107/147] Update os-extension-test.yml fix typo --- .github/workflows/os-extension-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index 54832d24..cdc38c06 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -13,7 +13,7 @@ on: required: false default: '["ubuntu-latest", "windows-latest"]' type: string - nigthly: + nightly: description: 'Specifies nightly builds against liquibase master-SNAPSHOT' required: false default: false @@ -99,4 +99,4 @@ jobs: sonar-pr: needs: [ unit-test ] uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.1 - secrets: inherit \ No newline at end of file + secrets: inherit From 558e47b551464fabd036e0556c915c67a1e31e0a Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 09:51:32 +0200 Subject: [PATCH 108/147] fix(sonar-pull-request.yml): change `github.event.pull_request.id` to `github.event.pull_request.number` to correctly identify the pull request key --- .github/workflows/sonar-pull-request.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sonar-pull-request.yml b/.github/workflows/sonar-pull-request.yml index 35810483..e5779b7b 100644 --- a/.github/workflows/sonar-pull-request.yml +++ b/.github/workflows/sonar-pull-request.yml @@ -43,7 +43,7 @@ jobs: AWS_REGION: "us-east-1" run: | mvn -B -Daws.region="us-east-1" -Dsonar.login=$SONAR_TOKEN \ - -Dsonar.pullrequest.key=${{ github.event.pull_request.id }} \ + -Dsonar.pullrequest.key=${{ github.event.pull_request.number }} \ -Dsonar.pullrequest.branch=${{ github.event.pull_request.head.ref }} \ -Dsonar.pullrequest.base=${{ github.event.pull_request.base.ref }} \ -Dsonar.scm.revision=${{ github.event.pull_request.head.sha }} \ From f18ba72d44333867b72b9aa17800c0df97d239ed Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 10:01:28 +0200 Subject: [PATCH 109/147] chore(extension-attach-artifact-release.yml): remove unnecessary step to chmod +x upload_zip.sh script --- .github/workflows/extension-attach-artifact-release.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index b4acb469..223f07c1 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -43,7 +43,6 @@ jobs: chmod +x $PWD/.github/get_draft_release.sh chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh - chmod +x $PWD/.github/upload_zip.sh - name: Configure Git run: | From 1e236e49cc51132430cf557e41d6cacbc61b709c Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 10:20:40 +0200 Subject: [PATCH 110/147] fix(extension-release-prepare.yml): remove unnecessary spaces around the equal sign in the maven command fix(extension-release-prepare.yml): fix the argument name from -DreleaseVersion to -DnewVersion in the maven command --- .github/workflows/extension-release-prepare.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/extension-release-prepare.yml b/.github/workflows/extension-release-prepare.yml index 4f2fe9bf..96ae747a 100644 --- a/.github/workflows/extension-release-prepare.yml +++ b/.github/workflows/extension-release-prepare.yml @@ -32,7 +32,7 @@ jobs: mvn -B build-helper:parse-version versions:set release:clean release:prepare \ -Dusername=liquibot -Dpassword=$GITHUB_TOKEN \ -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ - -DdevelopmentVersion =\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0-SNAPSHOT -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} + -DdevelopmentVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0-SNAPSHOT -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0 - name: Save Release files uses: actions/upload-artifact@v3 From cfba77a133815fcf73214df8884531ed4bd9095f Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 10:25:23 +0200 Subject: [PATCH 111/147] chore(extension-release-rollback.yml): update Maven release:rollback command to fix versioning issue The Maven release:rollback command in the extension-release-rollback.yml workflow file has been updated to fix a versioning issue. The following changes were made: - Removed the "releaseVersion" argument and replaced it with "newVersion" argument to set the new version as the current major version and next minor version. - Removed the "developmentVersion" argument and replaced it with "\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0-SNAPSHOT" to set the development version as the current major version and next minor version with a SNAPSHOT suffix. These changes ensure that the versioning is correctly handled during the rollback process. --- .github/workflows/extension-release-rollback.yml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/extension-release-rollback.yml b/.github/workflows/extension-release-rollback.yml index a3f01ba9..553251e8 100644 --- a/.github/workflows/extension-release-rollback.yml +++ b/.github/workflows/extension-release-rollback.yml @@ -15,6 +15,18 @@ jobs: git config user.name "liquibot" git config user.email "liquibot@liquibase.org" + - name: Checkout code + uses: actions/checkout@v3 + with: + ref: main + + - name: Set up JDK + uses: actions/setup-java@v2 + with: + java-version: 17 + distribution: 'temurin' + cache: 'maven' + - name: Download release files id: download-release-files uses: actions/download-artifact@v3 @@ -26,5 +38,5 @@ jobs: mvn -B release:rollback \ -Dusername=liquibot -Dpassword=$GITHUB_TOKEN \ -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ - -DdevelopmentVersion =\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0-SNAPSHOT -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} \ - -DconnectionUrl=scm:git:https://github.com/${{ github.repository }}.git -Dtag=${{ github.event.inputs.liquibaseVersion }} \ No newline at end of file + -DdevelopmentVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0-SNAPSHOT -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0 \ + -DconnectionUrl=scm:git:https://github.com/${{ github.repository }}.git -Dtag=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0 \ No newline at end of file From 848db49fbf51aba10391f73044f0fdaeb6c441cd Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 10:29:40 +0200 Subject: [PATCH 112/147] fix(extension-release-prepare.yml): update versioning scheme to include incremental version in development and new version fix(extension-release-rollback.yml): update versioning scheme to include incremental version in development and new version --- .github/workflows/extension-release-prepare.yml | 2 +- .github/workflows/extension-release-rollback.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/extension-release-prepare.yml b/.github/workflows/extension-release-prepare.yml index 96ae747a..bdf1dec7 100644 --- a/.github/workflows/extension-release-prepare.yml +++ b/.github/workflows/extension-release-prepare.yml @@ -32,7 +32,7 @@ jobs: mvn -B build-helper:parse-version versions:set release:clean release:prepare \ -Dusername=liquibot -Dpassword=$GITHUB_TOKEN \ -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ - -DdevelopmentVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0-SNAPSHOT -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0 + -DdevelopmentVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.\${parsedVersion.incrementalversion}-SNAPSHOT -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.\${parsedVersion.incrementalversion} - name: Save Release files uses: actions/upload-artifact@v3 diff --git a/.github/workflows/extension-release-rollback.yml b/.github/workflows/extension-release-rollback.yml index 553251e8..7a16396b 100644 --- a/.github/workflows/extension-release-rollback.yml +++ b/.github/workflows/extension-release-rollback.yml @@ -38,5 +38,5 @@ jobs: mvn -B release:rollback \ -Dusername=liquibot -Dpassword=$GITHUB_TOKEN \ -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ - -DdevelopmentVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0-SNAPSHOT -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0 \ - -DconnectionUrl=scm:git:https://github.com/${{ github.repository }}.git -Dtag=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0 \ No newline at end of file + -DdevelopmentVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.\${parsedVersion.incrementalversion}-SNAPSHOT -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.\${parsedVersion.incrementalversion} \ + -DconnectionUrl=scm:git:https://github.com/${{ github.repository }}.git -Dtag=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.\${parsedVersion.incrementalversion} \ No newline at end of file From a00c9a5e270ddee0a11c01412f6d43f70ab0b000 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 10:56:12 +0200 Subject: [PATCH 113/147] fix(extension-release-prepare.yml): add checkModificationExcludeList option to mvn command to exclude pom.xml from modification check during release preparation fix(extension-release-rollback.yml): add checkModificationExcludeList option to mvn command to exclude pom.xml from modification check during release rollback --- .github/workflows/extension-release-prepare.yml | 3 ++- .github/workflows/extension-release-rollback.yml | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/extension-release-prepare.yml b/.github/workflows/extension-release-prepare.yml index bdf1dec7..d3e85c1e 100644 --- a/.github/workflows/extension-release-prepare.yml +++ b/.github/workflows/extension-release-prepare.yml @@ -32,7 +32,8 @@ jobs: mvn -B build-helper:parse-version versions:set release:clean release:prepare \ -Dusername=liquibot -Dpassword=$GITHUB_TOKEN \ -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ - -DdevelopmentVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.\${parsedVersion.incrementalversion}-SNAPSHOT -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.\${parsedVersion.incrementalversion} + -DdevelopmentVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.\${parsedVersion.incrementalVersion}-SNAPSHOT -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.\${parsedVersion.incrementalVersion} \ + -DcheckModificationExcludeList=pom.xml - name: Save Release files uses: actions/upload-artifact@v3 diff --git a/.github/workflows/extension-release-rollback.yml b/.github/workflows/extension-release-rollback.yml index 7a16396b..c8823a64 100644 --- a/.github/workflows/extension-release-rollback.yml +++ b/.github/workflows/extension-release-rollback.yml @@ -38,5 +38,6 @@ jobs: mvn -B release:rollback \ -Dusername=liquibot -Dpassword=$GITHUB_TOKEN \ -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ - -DdevelopmentVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.\${parsedVersion.incrementalversion}-SNAPSHOT -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.\${parsedVersion.incrementalversion} \ - -DconnectionUrl=scm:git:https://github.com/${{ github.repository }}.git -Dtag=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.\${parsedVersion.incrementalversion} \ No newline at end of file + -DdevelopmentVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.\${parsedVersion.incrementalVersion}-SNAPSHOT -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.\${parsedVersion.incrementalVersion} \ + -DconnectionUrl=scm:git:https://github.com/${{ github.repository }}.git -Dtag=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.\${parsedVersion.incrementalVersion} \ + -DcheckModificationExcludeList=pom.xml \ No newline at end of file From d2e0ab5a3e2e257f393e22fa35b766c89cf36d63 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 11:50:12 +0200 Subject: [PATCH 114/147] chore(extension-release-prepare.yml): add write permissions for contents and pull-requests to the workflow chore(extension-release-rollback.yml): add write permissions for contents and pull-requests to the workflow chore(extension-release-rollback.yml): configure Git with liquibot username and email for proper attribution --- .github/workflows/extension-release-prepare.yml | 4 ++++ .github/workflows/extension-release-rollback.yml | 13 +++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.github/workflows/extension-release-prepare.yml b/.github/workflows/extension-release-prepare.yml index d3e85c1e..bbc0043c 100644 --- a/.github/workflows/extension-release-prepare.yml +++ b/.github/workflows/extension-release-prepare.yml @@ -3,6 +3,10 @@ name: Prepare release on: workflow_call: +permissions: + contents: write + pull-requests: write + jobs: prepare-release: name: Prepare release diff --git a/.github/workflows/extension-release-rollback.yml b/.github/workflows/extension-release-rollback.yml index c8823a64..bbd4f23f 100644 --- a/.github/workflows/extension-release-rollback.yml +++ b/.github/workflows/extension-release-rollback.yml @@ -3,6 +3,10 @@ name: Release rollback on: workflow_call: +permissions: + contents: write + pull-requests: write + jobs: rollback-release: name: Release rollback @@ -10,16 +14,17 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} steps: - - name: Configure Git - run: | - git config user.name "liquibot" - git config user.email "liquibot@liquibase.org" - name: Checkout code uses: actions/checkout@v3 with: ref: main + - name: Configure Git + run: | + git config user.name "liquibot" + git config user.email "liquibot@liquibase.org" + - name: Set up JDK uses: actions/setup-java@v2 with: From be6f52892433963999ee80b7a7a7009c8068969b Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 12:25:53 +0200 Subject: [PATCH 115/147] chore(sonar-test-scan.yml): update runs-on value to macos-latest-xl for better compatibility with macOS chore(sonar-test-scan.yml): update mvnd installation command to use brew for easier installation on macOS chore(sonar-test-scan.yml): update Oracle instantclient download links and unzip commands for macOS chore(sonar-test-scan.yml): update instantclient folder name to match the downloaded version for macOS --- .github/workflows/sonar-test-scan.yml | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index 3866c54f..07ea2aac 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -38,7 +38,7 @@ env: jobs: sonar-push: name: Sonar Scan - runs-on: ubuntu-22.04 + runs-on: macos-latest-xl steps: - uses: actions/checkout@v3 @@ -60,10 +60,7 @@ jobs: - name: Install mvnd run: | - wget https://github.com/apache/maven-mvnd/releases/download/1.0-m7/maven-mvnd-1.0-m7-m39-linux-amd64.zip - unzip maven-mvnd-1.0-m7-m39-linux-amd64.zip && mv maven-mvnd-1.0-m7-m39-linux-amd64 mvnd && chmod +x mvnd/bin/mvnd - ls -ltr - ls -ltr ./mvnd + brew install mvndaemon/homebrew-mvnd/mvnd - name: Set up Maven settings.xml uses: whelk-io/maven-settings-xml-action@v20 @@ -116,12 +113,12 @@ jobs: - name: Install sqlplus for Integration tests run: | - wget -nv --directory-prefix=$HOME -nc https://download.oracle.com/otn_software/linux/instantclient/215000/instantclient-sqlplus-linux.x64-21.5.0.0.0dbru.zip - unzip $HOME/instantclient-sqlplus-linux.x64-21.5.0.0.0dbru.zip -d $HOME + wget -nv --directory-prefix=$HOME -nc https://download.oracle.com/otn_software/mac/instantclient/198000/instantclient-sqlplus-macos.x64-19.8.0.0.0dbru.zip + unzip $HOME/instantclient-sqlplus-macos.x64-19.8.0.0.0dbru.zip -d $HOME sleep 3 - wget -nv --directory-prefix=$HOME -nc https://download.oracle.com/otn_software/linux/instantclient/215000/instantclient-basiclite-linux.x64-21.5.0.0.0dbru.zip - unzip $HOME/instantclient-basiclite-linux.x64-21.5.0.0.0dbru.zip -d $HOME - chmod -R a+x $HOME/instantclient_21_5/ + wget -nv --directory-prefix=$HOME -nc https://download.oracle.com/otn_software/mac/instantclient/198000/instantclient-basiclite-macos.x64-19.8.0.0.0dbru.zip + unzip $HOME/instantclient-basiclite-macos.x64-19.8.0.0.0dbru.zip -d $HOME + chmod -R a+x $HOME/instantclient_19_8/ - name: Cache SonarCloud packages uses: actions/cache@v3 From 6aca571fccf1435a6f5caea0ce48f0c171dea01c Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 12:26:06 +0200 Subject: [PATCH 116/147] chore(sonar-test-scan.yml): remove unnecessary whitespace chore(sonar-test-scan.yml): update ORACLE_HOME and PATH environment variables to use instantclient 19.8 instead of instantclient 21.5 --- .github/workflows/sonar-test-scan.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index 07ea2aac..981273d6 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -119,6 +119,7 @@ jobs: wget -nv --directory-prefix=$HOME -nc https://download.oracle.com/otn_software/mac/instantclient/198000/instantclient-basiclite-macos.x64-19.8.0.0.0dbru.zip unzip $HOME/instantclient-basiclite-macos.x64-19.8.0.0.0dbru.zip -d $HOME chmod -R a+x $HOME/instantclient_19_8/ + - name: Cache SonarCloud packages uses: actions/cache@v3 @@ -133,8 +134,8 @@ jobs: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} run: | - export ORACLE_HOME=$ORACLE_HOME:$HOME/instantclient_21_5; export PATH=$PATH:$HOME/instantclient_21_5; export SQLPATH=$HOME/instantclient_21_5; export NLS_LANG=AMERICAN_AMERICA.UTF8; export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/instantclient_21_5 - ./mvnd/bin/mvnd -B clean verify sonar:sonar -P 'testAll,!run-proguard' \ + export ORACLE_HOME=$ORACLE_HOME:$HOME/instantclient_19_8; export PATH=$PATH:$HOME/instantclient_19_8; export SQLPATH=$HOME/instantclient_19_8; export NLS_LANG=AMERICAN_AMERICA.UTF8; export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/instantclient_19_8 + mvnd -B clean verify sonar:sonar -P 'testAll,!run-proguard' \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ -Dsonar.login=$SONAR_TOKEN \ From c1f81c696d174da38a8a899239eb752a3d5ce894 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 12:53:09 +0200 Subject: [PATCH 117/147] chore(sonar-test-scan.yml): add step to setup docker and colima for MacOS chore(sonar-test-scan.yml): remove unnecessary whitespace --- .github/workflows/sonar-test-scan.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index 981273d6..23e6cde6 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -104,6 +104,11 @@ jobs: } ] + - name: Setup docker (missing on MacOS) + run: | + brew install docker + colima start + - name: Login to GitHub Container Registry uses: docker/login-action@v2 with: @@ -119,7 +124,7 @@ jobs: wget -nv --directory-prefix=$HOME -nc https://download.oracle.com/otn_software/mac/instantclient/198000/instantclient-basiclite-macos.x64-19.8.0.0.0dbru.zip unzip $HOME/instantclient-basiclite-macos.x64-19.8.0.0.0dbru.zip -d $HOME chmod -R a+x $HOME/instantclient_19_8/ - + - name: Cache SonarCloud packages uses: actions/cache@v3 From ee802e2aea0eac55ac390c477b5b9188e59e034b Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 13:24:16 +0200 Subject: [PATCH 118/147] chore(sonar-test-scan.yml): update mvnd command in Sonar test scan workflow to include liquibase version and fix formatting The mvnd command in the Sonar test scan workflow has been updated to include the liquibase version as a parameter and fix the formatting of the command. This change ensures that the correct liquibase version is used during the scan and improves the readability of the command. --- .github/workflows/sonar-test-scan.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index 23e6cde6..620803fb 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -140,14 +140,14 @@ jobs: LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} run: | export ORACLE_HOME=$ORACLE_HOME:$HOME/instantclient_19_8; export PATH=$PATH:$HOME/instantclient_19_8; export SQLPATH=$HOME/instantclient_19_8; export NLS_LANG=AMERICAN_AMERICA.UTF8; export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/instantclient_19_8 - mvnd -B clean verify sonar:sonar -P 'testAll,!run-proguard' \ + mvnd -B clean verify sonar:sonar -P 'testAll,!run-proguard' -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ -Dsonar.login=$SONAR_TOKEN \ -Dsonar.java.coveragePlugin=jacoco \ - -Dsonar.branch.name=${{ inputs.thisBranchName}} \ - -Dsonar.pullrequest.key=${{ inputs.pullRequestNumber}} \ - -Dsonar.pullrequest.branch=${{ inputs.pullRequestBranchName}} \ + -Dsonar.branch.name=${{ inputs.thisBranchName }} \ + -Dsonar.pullrequest.key=${{ inputs.pullRequestNumber }} \ + -Dsonar.pullrequest.branch=${{ inputs.pullRequestBranchName }} \ -Dsonar.pullrequest.base=${{ inputs.pullRequestBaseBranchName }} \ -Dsonar.pullrequest.provider=GitHub \ -Dsonar.pullrequest.github.repository="${{ github.repository }}" \ From c9922e8bae83c0d370d12c8cfcd7c876668b2ebe Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 13:35:41 +0200 Subject: [PATCH 119/147] fix(sonar-test-scan.yml): create a symbolic link between $HOME/.docker/run/docker.sock and /var/run/docker.sock to allow Docker commands to be executed within the workflow --- .github/workflows/sonar-test-scan.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index 620803fb..66e8135a 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -108,6 +108,7 @@ jobs: run: | brew install docker colima start + sudo ln -s $HOME/.docker/run/docker.sock /var/run/docker.sock - name: Login to GitHub Container Registry uses: docker/login-action@v2 From 19a7cb5aab60d4ce361215fb5add32b127c05781 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 14:16:15 +0200 Subject: [PATCH 120/147] fix(sonar-test-scan.yml): remove unnecessary steps for setting up Docker on MacOS feat(sonar-test-scan.yml): use docker-practice/actions-setup-docker action to setup Docker --- .github/workflows/sonar-test-scan.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index 66e8135a..7c21bd41 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -104,12 +104,9 @@ jobs: } ] - - name: Setup docker (missing on MacOS) - run: | - brew install docker - colima start - sudo ln -s $HOME/.docker/run/docker.sock /var/run/docker.sock - + - name: Setup Docker + uses: docker-practice/actions-setup-docker@v1 + - name: Login to GitHub Container Registry uses: docker/login-action@v2 with: From b75a96e80b7d705f0ce91bdfd7f357d706f9eab3 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 14:25:46 +0200 Subject: [PATCH 121/147] fix(sonar-test-scan.yml): add missing setup for Docker on MacOS to ensure compatibility and functionality feat(sonar-test-scan.yml): install Docker and configure Colima socket to enable testcontainers to find the Docker daemon --- .github/workflows/sonar-test-scan.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index 7c21bd41..9b534b0b 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -104,8 +104,13 @@ jobs: } ] - - name: Setup Docker - uses: docker-practice/actions-setup-docker@v1 + - name: Setup docker (missing on MacOS) + run: | + brew install docker + colima start + # For testcontainers to find the Colima socket + # https://github.com/abiosoft/colima/blob/main/docs/FAQ.md#cannot-connect-to-the-docker-daemon-at-unixvarrundockersock-is-the-docker-daemon-running + sudo ln -sf $HOME/.colima/default/docker.sock /var/run/docker.sock - name: Login to GitHub Container Registry uses: docker/login-action@v2 From 1fa0511e815987c4f8ada7b7f281845cda8b6df5 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 14:55:21 +0200 Subject: [PATCH 122/147] fix(sonar-test-scan.yml): update installation and configuration of Oracle Instant Client for integration tests The changes include: - Refactoring the installation process to create a directory for Oracle Instant Client at `~/bin/oracle` - Updating the download and extraction commands for `instantclient-sqlplus-macos.x64-19.8.0.0.0dbru.zip` and `instantclient-basic-macos.x64-19.8.0.0.0dbru.zip` - Setting the correct permissions for the `instantclient_19_8` directory - Updating the environment variables for `LD_LIBRARY_PATH`, `PATH`, `NLS_LANG`, `SQLPATH`, and `ORACLE_HOME` to use the new installation directory These changes improve the installation and configuration process for Oracle Instant Client, ensuring that the correct files are downloaded, extracted, and accessible for integration tests. --- .github/workflows/sonar-test-scan.yml | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index 9b534b0b..81c34201 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -121,13 +121,12 @@ jobs: - name: Install sqlplus for Integration tests run: | - wget -nv --directory-prefix=$HOME -nc https://download.oracle.com/otn_software/mac/instantclient/198000/instantclient-sqlplus-macos.x64-19.8.0.0.0dbru.zip - unzip $HOME/instantclient-sqlplus-macos.x64-19.8.0.0.0dbru.zip -d $HOME - sleep 3 - wget -nv --directory-prefix=$HOME -nc https://download.oracle.com/otn_software/mac/instantclient/198000/instantclient-basiclite-macos.x64-19.8.0.0.0dbru.zip - unzip $HOME/instantclient-basiclite-macos.x64-19.8.0.0.0dbru.zip -d $HOME - chmod -R a+x $HOME/instantclient_19_8/ - + mkdir -p ~/bin/oracle + wget https://download.oracle.com/otn_software/mac/instantclient/198000/instantclient-sqlplus-macos.x64-19.8.0.0.0dbru.zip + unzip -d -d ~/bin/oracle instantclient-sqlplus-macos.x64-19.8.0.0.0dbru.zip + wget https://download.oracle.com/otn_software/mac/instantclient/198000/instantclient-basic-macos.x64-19.8.0.0.0dbru.zip + unzip -d -d ~/bin/oracle instantclient-basiclite-macos.x64-19.8.0.0.0dbru.zip + chmod -R a+x ${HOME}/bin/oracle/instantclient_19_8/ - name: Cache SonarCloud packages uses: actions/cache@v3 @@ -142,7 +141,12 @@ jobs: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} run: | - export ORACLE_HOME=$ORACLE_HOME:$HOME/instantclient_19_8; export PATH=$PATH:$HOME/instantclient_19_8; export SQLPATH=$HOME/instantclient_19_8; export NLS_LANG=AMERICAN_AMERICA.UTF8; export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/instantclient_19_8 + export LD_LIBRARY_PATH=${HOME}/bin/oracle/instantclient_19_8:${LD_LIBRARY_PATH} + export PATH=${LD_LIBRARY_PATH}:${PATH} + export NLS_LANG=AMERICAN_AMERICA.UTF8 + export SQLPATH=${HOME}/bin/oracle/instantclient_19_8 + export PATH=$PATH:${HOME}/bin/oracle/instantclient_19_8 + ORACLE_HOME=$ORACLE_HOME:${HOME}/bin/oracle/instantclient_19_8 mvnd -B clean verify sonar:sonar -P 'testAll,!run-proguard' -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ From ea0a097631a9932be17876957e1279c126186564 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 15:03:32 +0200 Subject: [PATCH 123/147] fix(sonar-test-scan.yml): remove duplicate '-d' flag in unzip command to extract Oracle instantclient files correctly fix(sonar-test-scan.yml): update unzip command to extract correct Oracle instantclient file fix(sonar-test-scan.yml): add sourcing of .bash_profile to ensure correct environment variables are set fix(sonar-test-scan.yml): add echo of PATH variable for debugging purposes --- .github/workflows/sonar-test-scan.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index 81c34201..e3f04c27 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -123,9 +123,9 @@ jobs: run: | mkdir -p ~/bin/oracle wget https://download.oracle.com/otn_software/mac/instantclient/198000/instantclient-sqlplus-macos.x64-19.8.0.0.0dbru.zip - unzip -d -d ~/bin/oracle instantclient-sqlplus-macos.x64-19.8.0.0.0dbru.zip + unzip -d ~/bin/oracle instantclient-sqlplus-macos.x64-19.8.0.0.0dbru.zip wget https://download.oracle.com/otn_software/mac/instantclient/198000/instantclient-basic-macos.x64-19.8.0.0.0dbru.zip - unzip -d -d ~/bin/oracle instantclient-basiclite-macos.x64-19.8.0.0.0dbru.zip + unzip -d ~/bin/oracle instantclient-basic-macos.x64-19.8.0.0.0dbru.zip chmod -R a+x ${HOME}/bin/oracle/instantclient_19_8/ - name: Cache SonarCloud packages @@ -147,6 +147,8 @@ jobs: export SQLPATH=${HOME}/bin/oracle/instantclient_19_8 export PATH=$PATH:${HOME}/bin/oracle/instantclient_19_8 ORACLE_HOME=$ORACLE_HOME:${HOME}/bin/oracle/instantclient_19_8 + source ~/.bash_profile + echo $PATH mvnd -B clean verify sonar:sonar -P 'testAll,!run-proguard' -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ From b014e4ecaa4736d0be054cadaf7368548c7e9151 Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 15:11:38 +0200 Subject: [PATCH 124/147] fix(sonar-test-scan.yml): change java version from 11 to 8 to match project requirements and dependencies --- .github/workflows/sonar-test-scan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index e3f04c27..c6da358e 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -48,7 +48,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v3 with: - java-version: 11 + java-version: 8 distribution: 'temurin' cache: 'maven' overwrite-settings: false From faf490afd19cbb645ae1cf8f619feaca11afcc8a Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 15:21:01 +0200 Subject: [PATCH 125/147] chore(sonar-test-scan.yml): update java-version from 8 to 11 to align with project requirements and improve compatibility --- .github/workflows/sonar-test-scan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index c6da358e..e3f04c27 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -48,7 +48,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v3 with: - java-version: 8 + java-version: 11 distribution: 'temurin' cache: 'maven' overwrite-settings: false From 89b5515ea5205c456ae859002ad4162cdcf73d3f Mon Sep 17 00:00:00 2001 From: jandroav Date: Wed, 6 Sep 2023 15:40:55 +0200 Subject: [PATCH 126/147] chore(sonar-test-scan.yml): remove unnecessary echo statement in the job configuration --- .github/workflows/sonar-test-scan.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index e3f04c27..c68fc441 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -148,7 +148,6 @@ jobs: export PATH=$PATH:${HOME}/bin/oracle/instantclient_19_8 ORACLE_HOME=$ORACLE_HOME:${HOME}/bin/oracle/instantclient_19_8 source ~/.bash_profile - echo $PATH mvnd -B clean verify sonar:sonar -P 'testAll,!run-proguard' -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ From 5ffc6d8772e122e54c52acf88c51535040e08d5f Mon Sep 17 00:00:00 2001 From: Jake Newton Date: Wed, 6 Sep 2023 15:06:54 -0500 Subject: [PATCH 127/147] Update pro-extension-test.yml fix another typo with nightly --- .github/workflows/pro-extension-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index 5d829e3c..6b3dce85 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -54,7 +54,7 @@ jobs: cache: 'maven' - name: Set latest liquibase version - if: ${{ inputs.nigthly }} + if: ${{ inputs.nightly }} run: mvn versions:set-property -Dproperty=liquibase.version -DnewVersion=master-SNAPSHOT - name: Build and Package From f233f831132ebc44fda92ccffa747062083d150a Mon Sep 17 00:00:00 2001 From: Jake Newton Date: Wed, 6 Sep 2023 15:07:20 -0500 Subject: [PATCH 128/147] Update os-extension-test.yml fix another typo with nightly --- .github/workflows/os-extension-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index 909dec15..18dd0d6c 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -34,7 +34,7 @@ jobs: cache: 'maven' - name: Set latest liquibase version - if: ${{ inputs.nigthly }} + if: ${{ inputs.nightly }} run: mvn versions:set-property -Dproperty=liquibase.version -DnewVersion=master-SNAPSHOT - name: Build and Package From 9767e5c987a073168df05d0f67efa512f9fd785c Mon Sep 17 00:00:00 2001 From: jandroav Date: Thu, 14 Sep 2023 07:51:29 +0200 Subject: [PATCH 129/147] fix(extension-release-prepare.yml): change developmentVersion to use 0 as the incremental version to align with semantic versioning --- .github/workflows/extension-release-prepare.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/extension-release-prepare.yml b/.github/workflows/extension-release-prepare.yml index bbc0043c..12b3fb53 100644 --- a/.github/workflows/extension-release-prepare.yml +++ b/.github/workflows/extension-release-prepare.yml @@ -36,7 +36,7 @@ jobs: mvn -B build-helper:parse-version versions:set release:clean release:prepare \ -Dusername=liquibot -Dpassword=$GITHUB_TOKEN \ -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" \ - -DdevelopmentVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.\${parsedVersion.incrementalVersion}-SNAPSHOT -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.\${parsedVersion.incrementalVersion} \ + -DdevelopmentVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0-SNAPSHOT -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.\${parsedVersion.incrementalVersion} \ -DcheckModificationExcludeList=pom.xml - name: Save Release files From 04f073cd672fd0aa9d73c02530b42bfc077b78fe Mon Sep 17 00:00:00 2001 From: jandroav Date: Thu, 14 Sep 2023 07:52:36 +0200 Subject: [PATCH 130/147] chore(create-release.yml): update sonar-push.yml version to v0.4.2 chore(extension-attach-artifact-release.yml): update script file versions to v0.4.2 chore(extension-release-published.yml): update extension-release-prepare.yml version to v0.4.2 chore(os-extension-test.yml): update sonar-pull-request.yml version to v0.4.2 chore(package-deb.yml): update build-logic version to v0.4.2 chore(pro-extension-test.yml): update sonar-pull-request.yml version to v0.4.2 --- .github/workflows/create-release.yml | 2 +- .github/workflows/extension-attach-artifact-release.yml | 8 ++++---- .github/workflows/extension-release-published.yml | 2 +- .github/workflows/os-extension-test.yml | 2 +- .github/workflows/package-deb.yml | 8 ++++---- .github/workflows/pro-extension-test.yml | 2 +- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 87c864b6..80be7065 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -5,7 +5,7 @@ on: jobs: sonar: - uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.4.1 + uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.4.2 secrets: inherit create-release: diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index 223f07c1..41f82ba1 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -37,9 +37,9 @@ jobs: - name: Get Reusable Script Files run: | - curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.1/.github/get_draft_release.sh - curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.1/.github/sign_artifact.sh - curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.1/.github/upload_asset.sh + curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.2/.github/get_draft_release.sh + curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.2/.github/sign_artifact.sh + curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.2/.github/upload_asset.sh chmod +x $PWD/.github/get_draft_release.sh chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh @@ -103,7 +103,7 @@ jobs: - name: Get upload_zip.sh Script File if: inputs.zip == 'true' run: | - curl -o $PWD/.github/upload_zip.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.1/.github/upload_zip.sh + curl -o $PWD/.github/upload_zip.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.2/.github/upload_zip.sh chmod +x $PWD/.github/upload_zip.sh - name: Attach Zip File to Draft Release diff --git a/.github/workflows/extension-release-published.yml b/.github/workflows/extension-release-published.yml index dba2e183..bdf58657 100644 --- a/.github/workflows/extension-release-published.yml +++ b/.github/workflows/extension-release-published.yml @@ -68,5 +68,5 @@ jobs: maven-release: needs: release - uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.4.1 + uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.4.2 secrets: inherit \ No newline at end of file diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index 18dd0d6c..913749d7 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -98,5 +98,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.1 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.2 secrets: inherit diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index d9fab3e0..957f6169 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -54,10 +54,10 @@ jobs: # Under the src folder is where specific packages files live. The GitHub action inputs will modify the universal package-deb-pom.xml to tell the process which assets to use during the packaging step mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/deb/control mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/main/archive - curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/control https://raw.githubusercontent.com/liquibase/build-logic/v0.4.1/src/${{ inputs.artifactId }}/deb/control/control - curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/postinst https://raw.githubusercontent.com/liquibase/build-logic/v0.4.1/src/${{ inputs.artifactId }}/deb/control/postinst - curl -o $PWD/.github/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.1/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh - curl -o $PWD/.github/package-deb-pom.xml https://raw.githubusercontent.com/liquibase/build-logic/v0.4.1/.github/package-deb-pom.xml + curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/control https://raw.githubusercontent.com/liquibase/build-logic/v0.4.2/src/${{ inputs.artifactId }}/deb/control/control + curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/postinst https://raw.githubusercontent.com/liquibase/build-logic/v0.4.2/src/${{ inputs.artifactId }}/deb/control/postinst + curl -o $PWD/.github/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.2/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh + curl -o $PWD/.github/package-deb-pom.xml https://raw.githubusercontent.com/liquibase/build-logic/v0.4.2/.github/package-deb-pom.xml - name: Set up Maven uses: stCarolas/setup-maven@v4.5 diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index 6b3dce85..b967fada 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -118,5 +118,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.1 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.2 secrets: inherit From 8ec300b3cbcb19cd6bbe2c9d3ab78edeb412f156 Mon Sep 17 00:00:00 2001 From: jandroav Date: Thu, 14 Sep 2023 07:54:35 +0200 Subject: [PATCH 131/147] chore: remove .DS_Store file The .DS_Store file was deleted. This file is automatically created by macOS to store custom attributes of a folder. It is not necessary for the project and can be safely removed. --- .DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 3cd05d8359b0f814370b7d3e71a6c2470a338991..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}T>S5Z<-bBorYB1-&hJE!dXQB3?qRFJMFuDm5`hgE3p0)Er77cYPsW#OHBl zcLNr47O^w1`_1oe_JiyXV~md$QI|27F=j(U|Q;Ud7X5 z;_jWvG!No*I#&g8G=-Gg>o|>MF_Mck%2chd1CC=m6Zder?Dhtowixz?tF~C4^g!=?;jnXUQC{omsGxKJ~_~>WY=H?@1U6Fy!!Jrk?A9Ns_ZI@kQg8ahyh|?qZu&A zg5BC^7HILr05MR<0PYV08lq>g)Tp)&=7p`UpzfkFndm5=H28e-m1{&IQ@%%rBU#9kvzg|KX zF+dFbGX{8b?2kvVD08;{SRS6W0@^(^6wE780ResO5&#D7BL^y|;{tWa^9+_6aTN5c QazMHWC_< Date: Fri, 15 Sep 2023 13:55:32 +0200 Subject: [PATCH 132/147] Dat 15505 (#69) * feat(pom-release-published.yml): add workflow for releasing extension to Sonatype Maven Central Repository This commit adds a new workflow file `pom-release-published.yml` that is triggered when a workflow call event occurs. The workflow is triggered by the caller workflow and requires the `SONATYPE_USERNAME` and `SONATYPE_TOKEN` secrets to be provided. The `release` job in the workflow runs on the `ubuntu-latest` environment and performs the following steps: 1. Checks out the repository using `actions/checkout@v3`. 2. Sets up Java for publishing to the Maven Central Repository using `actions/setup-java@v3`. The Java version is set to `17` and the distribution is set to `temurin`. The Maven cache is also configured. 3. Configures Git with the username and email. 4. Builds the release artifacts using Maven. The `release:clean` and `release:prepare` goals are executed with the necessary arguments. The release version is obtained from the `liquibaseVersion` input provided by the caller workflow. The changes are not pushed to the remote repository. 5. Retrieves the artifact ID from the Maven project and sets it as an environment variable. 6. Downloads the release artifacts using `robinraju/release-downloader@v1.6`. The artifacts are downloaded based on the tag name and the artifact ID. 7. Publishes the artifacts to the Maven Central Repository using the `maven-deploy-plugin`. The Maven username and password are obtained from the `SONATYPE_USERNAME` and `SONATYPE_TOKEN` secrets respectively. The POM file and its associated files are deployed to the Sonatype Nexus staging repository. The `maven-release` job is dependent on the `release` job and uses the `liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.4.2` action. The secrets are inherited from the `release` job. No newline at end of file. * chore(README.md): add new workflow `pom-release-published.yml` to the table The `pom-release-published.yml` workflow is responsible for publishing a release pom to Maven Central. This workflow is added to the table of reusable workflows in the README.md file to provide visibility and documentation for this new workflow. * chore(pom-release-published.yml): remove unnecessary line break and trailing whitespace for better readability chore(pom-release-published.yml): remove unused parameters in maven-release step to simplify the command * fix(pom-release-published.yml): add missing file and classifiers options to maven deploy command The maven deploy command was missing the file and classifiers options, which caused the pom.asc file to not be deployed. This commit adds the missing options to ensure that the pom.asc file is included in the deployment. * fix(pom-release-published.yml): remove unnecessary options from maven deploy command The options `-Dfiles`, `-Dtypes`, and `-Dclassifiers` were removed from the maven deploy command as they were not needed. * fix(pom-release-published.yml): add additional parameters to the Maven deploy command to include the .asc file for GPG signature feat(pom-release-published.yml): add a new job 'maven-release' that depends on the 'release' job * fix(pom-release-published.yml): remove unnecessary options from maven deploy command The options `-Dfiles=${{ env.artifact_id }}-${version}.pom.asc`, `-Dtypes=asc`, and `-Dclassifiers=asc` were removed from the maven deploy command as they are unnecessary and do not affect the deployment process. * fix(pom-release-published.yml): add the generated POM.asc file to the Maven release command to include it in the release artifacts * chore(pom-release-published.yml): add classifiers option to maven-release step to include pom.asc file in the release artifacts * fix(pom-release-published.yml): remove the 'classifiers' argument from the Maven command to fix an issue with releasing the POM file * fix(pom-release-published.yml): fix the file name in the -Dfiles parameter to include the file extension fix(pom-release-published.yml): add the pom.asc classifier to the -Dclassifiers parameter to include the asc file in the deployment * fix(pom-release-published.yml): fix the file name in the -Dfiles parameter to include the .pom extension fix(pom-release-published.yml): fix the -Dclassifiers parameter value to be 'asc' instead of 'pom.asc' * fix(pom-release-published.yml): remove unnecessary classifier value in maven-release step The classifier value in the maven-release step was set to a comma (,) which is unnecessary. This commit removes the classifier value to improve the clarity and correctness of the workflow. * fix(pom-release-published.yml): fix missing backslash at the end of line 58 to properly escape the line continuation fix(pom-release-published.yml): fix missing comma in line 62 to separate classifiers * fix(pom-release-published.yml): add a missing backslash to the end of the line to properly continue the command on the next line * fix(pom-release-published.yml): remove unnecessary configuration for generating pom.asc file during release The configuration for generating the pom.asc file was removed as it is not needed for the release process. * fix(pom-release-published.yml): change maven-deploy-plugin command from deploy-file to deploy to match the correct plugin goal * chore(pom-release-published.yml): update workflow name to accurately reflect its purpose feat(pom-release-published.yml): add support for deploying additional files (sources, javadoc, and signatures) to Sonatype repository for better artifact management --- .github/workflows/pom-release-published.yml | 72 +++++++++++++++++++++ README.md | 1 + 2 files changed, 73 insertions(+) create mode 100644 .github/workflows/pom-release-published.yml diff --git a/.github/workflows/pom-release-published.yml b/.github/workflows/pom-release-published.yml new file mode 100644 index 00000000..ec76f1d3 --- /dev/null +++ b/.github/workflows/pom-release-published.yml @@ -0,0 +1,72 @@ +name: Release POM to Sonatype + +on: + workflow_call: + secrets: + SONATYPE_USERNAME: + description: 'SONATYPE_USERNAME from the caller workflow' + required: true + SONATYPE_TOKEN: + description: 'SONATYPE_TOKEN from the caller workflow' + required: true + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up Java for publishing to Maven Central Repository + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + cache: 'maven' + server-id: sonatype-nexus-staging + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + + - name: Configure Git + run: | + git config user.name "liquibot" + git config user.email "liquibot@liquibase.org" + + - name: Build release artifacts + id: build-release-artifacts + run: | + mvn -B release:clean release:prepare -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DpushChanges=false + git reset HEAD~ --hard + + - name: Get Artifact ID + id: get-artifact-id + run: echo "artifact_id=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout)" >> $GITHUB_ENV + + - name: Download Release Artifacts + uses: robinraju/release-downloader@v1.6 + with: + tag: "${{ github.event.release.tag_name }}" + filename: "${{ env.artifact_id }}-*" + out-file-path: "." + + - name: Publish to Maven Central + env: + MAVEN_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.SONATYPE_TOKEN }} + run: | + version=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) + mvn -B org.apache.maven.plugins:maven-deploy-plugin:3.0.0-M1:deploy-file \ + -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ \ + -DrepositoryId=sonatype-nexus-staging \ + -DpomFile=${{ env.artifact_id }}-${version}.pom \ + -DgeneratePom=false \ + -Dfile=${{ env.artifact_id }}-${version}.pom \ + -Dsources=${{ env.artifact_id }}-${version}-sources.jar \ + -Djavadoc=${{ env.artifact_id }}-${version}-javadoc.jar \ + -Dfiles=${{ env.artifact_id }}-${version}-sources.jar.asc,${{ env.artifact_id }}-${version}-javadoc.jar.asc,${{ env.artifact_id }}-${version}.pom.asc \ + -Dtypes=jar.asc,jar.asc,pom.asc \ + -Dclassifiers=sources,javadoc, + + maven-release: + needs: release + uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.4.2 + secrets: inherit \ No newline at end of file diff --git a/README.md b/README.md index 925bed74..d7171c67 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,7 @@ Please review the below table of reusable workflows and their descriptions: | `extension-update-version.yml` | Updates release and development `pom.xml` versions | | `os-extension-test.yml` | Unit tests across build matrix on previously built artifact | | `package-deb.yml` | Creates and uploads deb packages | +| `pom-release-published.yml` | Publishes a release pom to Maven Central | | `pro-extension-test.yml` | Same as OS job, but with additional Pro-only vars such as License Key | | `sonar-pull-request.yml` | Code Coverage Scan for PRs. Requires branch name parameter | | `sonar-test-scan.yml` | Code Coverage Scan for unit and integration tests | From 08672cf858b0116dbf33cc6a85ed23fb7b95280c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 Sep 2023 07:16:14 -0700 Subject: [PATCH 133/147] chore(deps): bump whelk-io/maven-settings-xml-action from 20 to 21 (#67) Bumps [whelk-io/maven-settings-xml-action](https://github.com/whelk-io/maven-settings-xml-action) from 20 to 21. - [Release notes](https://github.com/whelk-io/maven-settings-xml-action/releases) - [Commits](https://github.com/whelk-io/maven-settings-xml-action/compare/v20...v21) --- updated-dependencies: - dependency-name: whelk-io/maven-settings-xml-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sayali Mohadikar <76010603+sayaliM0412@users.noreply.github.com> --- .github/workflows/sonar-test-scan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index c68fc441..b1450ac2 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -63,7 +63,7 @@ jobs: brew install mvndaemon/homebrew-mvnd/mvnd - name: Set up Maven settings.xml - uses: whelk-io/maven-settings-xml-action@v20 + uses: whelk-io/maven-settings-xml-action@v21 with: repositories: | [ From a1e8087c66b5a215841ce7892522ba8171bba1d8 Mon Sep 17 00:00:00 2001 From: Alejandro Alvarez Date: Tue, 19 Sep 2023 12:32:34 +0200 Subject: [PATCH 134/147] DAT-10564 (#72) * fix(sonar-test-scan.yml): add installation of sqlcmd to setup docker step for MacOS compatibility refactor(sonar-test-scan.yml): remove installation of sqlplus for integration tests as it is no longer needed refactor(sonar-test-scan.yml): remove unnecessary environment variable exports and sourcing of bash profile in SonarCloud step * chore(sonar-test-scan.yml): update runs-on field from macos-latest-xl to ubuntu-22.04 for better compatibility feat(sonar-test-scan.yml): update mvnd installation process to download and unzip the latest release from the official Apache Maven mvnd repository feat(sonar-test-scan.yml): add installation steps for sqlplus and instantclient for integration tests chore(sonar-test-scan.yml): remove unnecessary setup steps for docker and sqlcmd * chore(sonar-test-scan.yml): add support for downloading and merging integration test reports feat(sonar-test-scan.yml): add support for downloading unit test report artifact feat(sonar-test-scan.yml): add support for downloading integration test report artifacts for different databases (mssql, mysql, oracle, postgresql) chore(sonar-test-scan.yml): remove unnecessary step to install mvnd chore(sonar-test-scan.yml): remove unnecessary step to install sqlplus for integration tests chore(sonar-test-scan.yml): cache SonarCloud packages to improve build performance chore(sonar-test-scan.yml): merge integration and unit tests reports before running Sonar Scan * chore(sonar-test-scan.yml): add optional coverageModuleName input to specify the name of the coverage module fix(sonar-test-scan.yml): fix the directory change command to use the coverageModuleName input value instead of a hardcoded value * fix(sonar-test-scan.yml): fix typo in mvn command to merge integration and unit tests reports feat(sonar-test-scan.yml): add separate mvn command to merge jacoco results for better clarity and maintainability * chore(sonar-test-scan.yml): update Maven settings.xml action to version v21 for compatibility and potential bug fixes * fix(sonar-test-scan.yml): remove duplicate 'mvn' command in the 'Merge integration and unit tests reports' step * fix(sonar-test-scan.yml): update download-artifact action to use dawidd6/action-download-artifact@v2.27.0 to fix compatibility issue feat(sonar-test-scan.yml): add if_no_artifact_found: warn option to download-artifact actions to prevent failure when no artifact is found refactor(sonar-test-scan.yml): update download artifact names to use dynamic inputs for integration test reports to improve flexibility and reusability refactor(sonar-test-scan.yml): update download artifact names to use dynamic inputs for integration test reports to improve flexibility and reusability * chore(sonar-test-scan.yml): update maven-settings-xml-action to v20 for Maven settings.xml setup chore(sonar-test-scan.yml): update docker/login-action to v2 for GitHub Container Registry login chore(sonar-test-scan.yml): update action-download-artifact to v2.27.0 for downloading integration test reports chore(sonar-test-scan.yml): add installation steps for sqlplus and instantclient for Integration tests chore(sonar-test-scan.yml): remove merge integration and unit tests reports step chore(sonar-test-scan.yml): update mvn command to include ORACLE_HOME, PATH, SQLPATH, NLS_LANG, and LD_LIBRARY_PATH environment variables for Oracle integration tests * chore(sonar-test-scan.yml): add step to save test results as artifacts if archive_test_results input is true * chore(sonar-test-scan.yml): update Maven settings.xml action to version v21 for compatibility and potential bug fixes * chore(sonar-test-scan.yml): remove unnecessary if condition for saving test results artifact * chore(sonar-test-scan.yml): remove matrix variable from liquibase-integration-test-results artifact name to simplify naming convention * chore(sonar-test-scan.yml): add optional inputs for unit test report artifact name, integration test report artifact name, and coverage module name to improve flexibility and customization fix(sonar-test-scan.yml): remove unnecessary step to install mvnd feat(sonar-test-scan.yml): download unit test report artifact and integration test report artifacts for mssql, mysql, oracle, and postgresql databases feat(sonar-test-scan.yml): merge integration and unit tests reports using jacoco feat(sonar-test-scan.yml): add step to cache SonarCloud packages for faster subsequent runs feat(sonar-test-scan.yml): add step to perform Sonar Scan with necessary environment variables and configurations chore(sonar-test-scan.yml): remove unnecessary step to save test results as artifacts * fix(sonar-test-scan.yml): fix duplicate '-DskipTests' flag in the Maven command The duplicate '-DskipTests' flag in the Maven command was causing an error. Removed the duplicate flag to fix the issue. * fix(sonar-test-scan.yml): remove duplicate '-DskipTests' flag in the Maven command to avoid redundancy and improve readability * chore(sonar-test-scan.yml): update java-version from 11 to 17 to use the latest version of Java for the Sonar test scan workflow * chore(sonar-test-scan.yml): add specific paths for downloaded artifacts to improve organization and readability * chore(sonar-test-scan.yml): improve merging and moving of test reports The changes in this commit improve the merging and moving of test reports in the sonar-test-scan.yml workflow file. - Added commands to list the contents of directories for debugging purposes. - Created a new directory called "reports" to store the merged test reports. - Moved the unit test coverage report to the "reports" directory. - Moved the integration test coverage reports for different databases (mssql, mysql, oracle, postgresql) to the "reports" directory. - Moved the aggregated coverage reports for different databases to the "reports" directory. - Updated the commands to use the correct paths for moving the files. - Added comments to explain the purpose of each command. * chore(sonar-test-scan.yml): add ls command to list files in reports directory for debugging purposes * chore(sonar-test-scan.yml): update download-artifact action to version 3 for unit and integration test reports chore(sonar-test-scan.yml): remove if_no_artifact_found option from download-artifact action for integration test reports chore(sonar-test-scan.yml): update download-artifact action for integration test reports to use correct artifact names and paths chore(sonar-test-scan.yml): remove if_no_artifact_found option from download-artifact action for postgresql integration test report chore(sonar-test-scan.yml): remove unnecessary whitespace * chore(sonar-test-scan.yml): add a sleep step to wait for test reports before continuing the workflow execution chore(sonar-test-scan.yml): update comment to disable shallow clones for better analysis relevancy chore(sonar-test-scan.yml): add step to set up JDK for the workflow execution * chore(sonar-test-scan.yml): update file paths for jacoco coverage reports The file paths for the jacoco coverage reports have been updated in the sonar-test-scan.yml workflow file. The following changes were made: - The unit test coverage report file path has been changed from "unit-tests/liquibase-pro-coverage/target/aggregate.exec" to "unit-tests/liquibase-pro-coverage/target/jacoco.exec" and it has been moved to the "./reports/jacoco-unit.exec" directory. - The integration test coverage report file paths for mssql and mysql have been updated from "integration-tests/mssql/liquibase-pro-integration-tests/target/jacoco.exec" and "integration-tests/mysql/liquibase-pro-integration-tests/target/jacoco.exec" respectively. * fix(sonar-test-scan.yml): fix file path for moving coverage reports to the correct directory feat(sonar-test-scan.yml): add step to save Jacoco mixed results as an artifact for further analysis * chore(sonar-test-scan.yml): remove unnecessary ls command in the workflow file * fix(sonar-test-scan.yml): remove unnecessary directory creation step to simplify the workflow The directory creation step was creating an unnecessary directory in the workflow. This step has been removed to simplify the workflow and improve readability. * chore(sonar-test-scan.yml): update file paths for aggregated coverage reports to match new directory structure The file paths for the aggregated coverage reports in the integration tests have been updated to match the new directory structure. The "aggregate.exec" files are now moved to the "target" directory instead of the "reports" directory. This change ensures that the coverage reports are generated in the correct location for each database type (mssql, mysql, oracle, postgresql). * fix(sonar-test-scan.yml): update file paths for jacoco coverage reports to match the new directory structure feat(sonar-test-scan.yml): add steps to download jacoco cli, move it to the appropriate directory, and generate coverage report using jacoco cli * chore(sonar-test-scan.yml): reorganize build steps for better readability and maintainability fix(sonar-test-scan.yml): move 'mvn package' command before 'mvn jacoco:merge@cli-merge-results' to ensure correct coverage results feat(sonar-test-scan.yml): add liquibase version parameter to 'mvn package' command for better control over liquibase version used * refactor(sonar-test-scan.yml): simplify file paths for moving jacoco coverage files The file paths for moving jacoco coverage files were simplified to improve readability and maintainability. * fix(sonar-test-scan.yml): update jacoco download link to use the official GitHub release URL fix(sonar-test-scan.yml): fix the path to move jacococli.jar to the correct location * fix(sonar-test-scan.yml): fix typo in the file path for jacococli.jar fix(sonar-test-scan.yml): move the 'cd' command before merging jacoco results to the correct directory * fix(sonar-test-scan.yml): fix the path to jacococli.jar in the java command to generate Jacoco report * chore(sonar-test-scan.yml): add missing cd command to navigate to the target directory before running jacococli.jar command * fix(sonar-test-scan.yml): remove redundant file path in java -jar command to fix jacoco report generation The file path "./target" was duplicated in the java -jar command, causing the jacoco report generation to fail. This commit removes the redundant file path to fix the issue. * fix(sonar-test-scan.yml): fix the path to classfiles in the jacoco report command The path to the classfiles in the jacoco report command was incorrect. It was pointing to "../../pro/target/" instead of "../../pro/target/classes/". This fix corrects the path to ensure that the jacoco report command can find the necessary classfiles for generating the coverage report. * chore(sonar-test-scan.yml): downgrade Java version from 17 to 8 and change distribution from 'temurin' to 'adopt' for compatibility reasons * fix(sonar-test-scan.yml): fix classfiles path in Jacoco report command to point to the correct directory * chore(sonar-test-scan.yml): add optional inputs for testedClassesModuleName and integrationTestsModuleName to improve flexibility fix(sonar-test-scan.yml): update file paths to use the new inputs for testedClassesModuleName and integrationTestsModuleName fix(sonar-test-scan.yml): update artifact name for jacoco mixed report to improve clarity * chore(sonar-test-scan.yml): update Java version and distribution to use Java 17 with Temurin chore(sonar-test-scan.yml): refactor file moving logic to handle different integration test directories chore(sonar-test-scan.yml): remove unnecessary -T flag from Maven command * fix(sonar-test-scan.yml): remove redundant line that duplicates the mvn command The redundant line `mvn -B verify -P 'unit,!run-proguard' -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT` is removed to avoid duplication and improve code readability. * chore(sonar-test-scan.yml): update action-download-artifact version to v2.27.0 for all artifact downloads chore(sonar-test-scan.yml): add 'if_no_artifact_found: warn' option to all artifact downloads to handle missing artifacts gracefully chore(sonar-test-scan.yml): remove unnecessary whitespace * chore(sonar-test-scan.yml): install mvnd and use it instead of mvn for build and analysis steps * chore(sonar-test-scan.yml): add workflow and run_id parameters to download test reports The workflow file 'sonar-test-scan.yml' was modified to include the 'workflow' and 'run_id' parameters in the steps that download test reports. This change allows the download step to be associated with the correct workflow run and ensures that the test reports are downloaded from the correct workflow run. * chore(sonar-test-scan.yml): update download-artifact action to version 3 for unit and integration tests reports chore(sonar-test-scan.yml): remove unnecessary if_no_artifact_found option from download-artifact actions chore(sonar-test-scan.yml): remove unnecessary workflow and run_id options from download-artifact actions chore(sonar-test-scan.yml): add if: always() condition to download-artifact actions for integration tests reports chore(sonar-test-scan.yml): add if: always() condition to cache SonarCloud packages action chore(sonar-test-scan.yml): add if: always() condition to merge integration and unit tests reports step chore(sonar-test-scan.yml): add if: always() condition to save Jacoco Mixed Results step chore(sonar-test-scan.yml): add if: always() condition to Sonar Scan step * chore(sonar-test-scan.yml): remove unnecessary sleep command in the workflow chore(sonar-test-scan.yml): remove unused step to wait for test reports in the workflow * chore(sonar-test-scan.yml): remove installation of mvnd and update Maven commands to use 'mvn' command instead of './mvnd/bin/mvnd' The installation of mvnd has been removed as it is no longer needed. The Maven commands have been updated to use the 'mvn' command instead of './mvnd/bin/mvnd' for consistency and to align with standard Maven usage. * chore(sonar-test-scan.yml): remove unused integrationTestsModuleName input variable refactor(sonar-test-scan.yml): simplify file path for moving jacoco.exec files in integration tests * fix(sonar-test-scan.yml): add 'package' phase to the Maven command to ensure the project is built before running SonarQube analysis * fix(sonar-test-scan.yml): update file path for moving jacoco.exec file to improve accuracy and consistency * fix(sonar-test-scan.yml): update file path for moving jacoco.exec file to improve accuracy and consistency * chore(sonar-test-scan.yml): remove unnecessary artifact saving step for Jacoco mixed results chore(sonar-test-scan.yml): rename sonar-push job to sonar-scan for better clarity and consistency * fix(sonar-test-scan.yml): change sonar.login to sonar.token to align with SonarQube API changes and improve security The SonarQube API has changed and now requires the use of the `sonar.token` parameter instead of `sonar.login` for authentication. This change ensures that the correct parameter is used and improves the security of the SonarQube integration. * chore(sonar-test-scan.yml): add default value for sonar.coverage.exclusions to exclude test files and pom.xml from coverage analysis * chore(sonar-test-scan.yml): remove unused coverageModuleName input variable chore(sonar-test-scan.yml): update paths for merging and moving coverage reports to match new project structure chore(sonar-test-scan.yml): update paths for jacococli.jar and classfiles in jacoco:merge step to match new project structure * chore(sonar-test-scan.yml): download and move jacoco.exec files for h2, hsqldb, and mariadb integration tests to the appropriate directories The changes were made to the sonar-test-scan.yml workflow file. The following changes were made: - Added a step to download the h2 integration tests report artifact and move the jacoco.exec file to the integration-tests/h2 directory. - Added a step to download the hsqldb integration tests report artifact and move the jacoco.exec file to the integration-tests/hsqldb directory. - Added a step to download the mariadb integration tests report artifact and move the jacoco.exec file to the integration-tests/mariadb directory. These changes were made to ensure that the jacoco.exec files for the h2, hsqldb, and mariadb integration tests are available in the correct directories for further processing. * chore(sonar-test-scan.yml): add support for downloading and processing sqlite integration test reports chore(sonar-test-scan.yml): move jacoco.exec file from sqlite integration test report to liquibase-coverage target directory * chore(sonar-test-scan.yml): add step to download firebird integration tests report artifact chore(sonar-test-scan.yml): move firebird jacoco.exec file to target directory for coverage analysis * chore(create-release.yml): update sonar-push.yml version to v0.4.3 for improved functionality chore(extension-attach-artifact-release.yml): update script file versions to v0.4.3 for improved functionality chore(extension-release-published.yml): update extension-release-prepare.yml version to v0.4.3 for improved functionality chore(os-extension-test.yml): update sonar-pull-request.yml version to v0.4.3 for improved functionality chore(package-deb.yml): update file versions to v0.4.3 for improved functionality chore(pom-release-published.yml): update extension-release-prepare.yml version to v0.4.3 for improved functionality chore(pro-extension-test.yml): update sonar-pull-request.yml version to v0.4.3 for improved functionality --- .github/workflows/create-release.yml | 2 +- .../extension-attach-artifact-release.yml | 8 +- .../workflows/extension-release-published.yml | 2 +- .github/workflows/os-extension-test.yml | 2 +- .github/workflows/package-deb.yml | 8 +- .github/workflows/pom-release-published.yml | 2 +- .github/workflows/pro-extension-test.yml | 2 +- .github/workflows/sonar-test-scan.yml | 173 ++++++++++++++---- 8 files changed, 146 insertions(+), 53 deletions(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 80be7065..81154a72 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -5,7 +5,7 @@ on: jobs: sonar: - uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.4.2 + uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.4.3 secrets: inherit create-release: diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index 41f82ba1..7af5045e 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -37,9 +37,9 @@ jobs: - name: Get Reusable Script Files run: | - curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.2/.github/get_draft_release.sh - curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.2/.github/sign_artifact.sh - curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.2/.github/upload_asset.sh + curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.3/.github/get_draft_release.sh + curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.3/.github/sign_artifact.sh + curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.3/.github/upload_asset.sh chmod +x $PWD/.github/get_draft_release.sh chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh @@ -103,7 +103,7 @@ jobs: - name: Get upload_zip.sh Script File if: inputs.zip == 'true' run: | - curl -o $PWD/.github/upload_zip.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.2/.github/upload_zip.sh + curl -o $PWD/.github/upload_zip.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.3/.github/upload_zip.sh chmod +x $PWD/.github/upload_zip.sh - name: Attach Zip File to Draft Release diff --git a/.github/workflows/extension-release-published.yml b/.github/workflows/extension-release-published.yml index bdf58657..f8f6ae33 100644 --- a/.github/workflows/extension-release-published.yml +++ b/.github/workflows/extension-release-published.yml @@ -68,5 +68,5 @@ jobs: maven-release: needs: release - uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.4.2 + uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.4.3 secrets: inherit \ No newline at end of file diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index 913749d7..4b89f4ca 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -98,5 +98,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.2 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.3 secrets: inherit diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index 957f6169..f1b5a439 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -54,10 +54,10 @@ jobs: # Under the src folder is where specific packages files live. The GitHub action inputs will modify the universal package-deb-pom.xml to tell the process which assets to use during the packaging step mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/deb/control mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/main/archive - curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/control https://raw.githubusercontent.com/liquibase/build-logic/v0.4.2/src/${{ inputs.artifactId }}/deb/control/control - curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/postinst https://raw.githubusercontent.com/liquibase/build-logic/v0.4.2/src/${{ inputs.artifactId }}/deb/control/postinst - curl -o $PWD/.github/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.2/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh - curl -o $PWD/.github/package-deb-pom.xml https://raw.githubusercontent.com/liquibase/build-logic/v0.4.2/.github/package-deb-pom.xml + curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/control https://raw.githubusercontent.com/liquibase/build-logic/v0.4.3/src/${{ inputs.artifactId }}/deb/control/control + curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/postinst https://raw.githubusercontent.com/liquibase/build-logic/v0.4.3/src/${{ inputs.artifactId }}/deb/control/postinst + curl -o $PWD/.github/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.3/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh + curl -o $PWD/.github/package-deb-pom.xml https://raw.githubusercontent.com/liquibase/build-logic/v0.4.3/.github/package-deb-pom.xml - name: Set up Maven uses: stCarolas/setup-maven@v4.5 diff --git a/.github/workflows/pom-release-published.yml b/.github/workflows/pom-release-published.yml index ec76f1d3..41377fb9 100644 --- a/.github/workflows/pom-release-published.yml +++ b/.github/workflows/pom-release-published.yml @@ -68,5 +68,5 @@ jobs: maven-release: needs: release - uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.4.2 + uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.4.3 secrets: inherit \ No newline at end of file diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index b967fada..e0851051 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -118,5 +118,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.2 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.3 secrets: inherit diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index b1450ac2..5a973cfa 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -31,14 +31,27 @@ on: description: 'The maven arguments to be passed to the mvn command' type: string required: false + default: -Dsonar.coverage.exclusions='**/test/**/*.*, **/pom.xml' + unitTestReportArtifactName: + description: 'The name of the unit test report artifact' + type: string + required: false + integrationTestReportArtifactName: + description: 'The name of the integration test report artifact' + type: string + required: false + testedClassesModuleName: + description: 'The name of the tested classes module' + type: string + required: false env: MAVEN_VERSION: '3.8.7' jobs: - sonar-push: + sonar-scan: name: Sonar Scan - runs-on: macos-latest-xl + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 @@ -48,7 +61,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v3 with: - java-version: 11 + java-version: 17 distribution: 'temurin' cache: 'maven' overwrite-settings: false @@ -58,10 +71,6 @@ jobs: with: maven-version: ${{ env.MAVEN_VERSION }} - - name: Install mvnd - run: | - brew install mvndaemon/homebrew-mvnd/mvnd - - name: Set up Maven settings.xml uses: whelk-io/maven-settings-xml-action@v21 with: @@ -104,58 +113,142 @@ jobs: } ] - - name: Setup docker (missing on MacOS) - run: | - brew install docker - colima start - # For testcontainers to find the Colima socket - # https://github.com/abiosoft/colima/blob/main/docs/FAQ.md#cannot-connect-to-the-docker-daemon-at-unixvarrundockersock-is-the-docker-daemon-running - sudo ln -sf $HOME/.colima/default/docker.sock /var/run/docker.sock - - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + - name: Download unit tests report + uses: actions/download-artifact@v3 with: - registry: ghcr.io - username: liquibot - password: ${{ secrets.GHCR_PAT }} + name: ${{ inputs.unitTestReportArtifactName }} + path: unit-tests - - name: Install sqlplus for Integration tests - run: | - mkdir -p ~/bin/oracle - wget https://download.oracle.com/otn_software/mac/instantclient/198000/instantclient-sqlplus-macos.x64-19.8.0.0.0dbru.zip - unzip -d ~/bin/oracle instantclient-sqlplus-macos.x64-19.8.0.0.0dbru.zip - wget https://download.oracle.com/otn_software/mac/instantclient/198000/instantclient-basic-macos.x64-19.8.0.0.0dbru.zip - unzip -d ~/bin/oracle instantclient-basic-macos.x64-19.8.0.0.0dbru.zip - chmod -R a+x ${HOME}/bin/oracle/instantclient_19_8/ + - name: Download mssql integration tests report + if: always() + uses: actions/download-artifact@v3 + with: + name: ${{ inputs.integrationTestReportArtifactName }}-mssql + path: integration-tests/mssql + + - name: Download mysql integration tests report + if: always() + uses: actions/download-artifact@v3 + with: + name: ${{ inputs.integrationTestReportArtifactName }}-mysql + path: integration-tests/mysql + + - name: Download oracle integration tests report + if: always() + uses: actions/download-artifact@v3 + with: + name: ${{ inputs.integrationTestReportArtifactName }}-oracle + path: integration-tests/oracle + + - name: Download postgresql integration tests report + if: always() + uses: actions/download-artifact@v3 + with: + name: ${{ inputs.integrationTestReportArtifactName }}-postgresql + path: integration-tests/postgresql + + - name: Download h2 integration tests report + if: always() + uses: actions/download-artifact@v3 + with: + name: ${{ inputs.integrationTestReportArtifactName }}-h2 + path: integration-tests/h2 + + - name: Download hsqldb integration tests report + if: always() + uses: actions/download-artifact@v3 + with: + name: ${{ inputs.integrationTestReportArtifactName }}-hsqldb + path: integration-tests/hsqldb + + - name: Download mariadb integration tests report + if: always() + uses: actions/download-artifact@v3 + with: + name: ${{ inputs.integrationTestReportArtifactName }}-mariadb + path: integration-tests/mariadb + + - name: Download sqlite integration tests report + if: always() + uses: actions/download-artifact@v3 + with: + name: ${{ inputs.integrationTestReportArtifactName }}-sqlite + path: integration-tests/sqlite + + - name: Download firebird integration tests report + if: always() + uses: actions/download-artifact@v3 + with: + name: ${{ inputs.integrationTestReportArtifactName }}-firebird + path: integration-tests/firebird - name: Cache SonarCloud packages + if: always() uses: actions/cache@v3 with: path: ~/.sonar/cache key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar + - name: Merge integration and unit tests reports + if: always() + run: | + mkdir ./liquibase-coverage/target + + mv unit-tests/jacoco.exec ./liquibase-coverage/target/jacoco-unit.exec + if [ -d "integration-tests/mssql" ]; then + mv integration-tests/mssql/jacoco.exec ./liquibase-coverage/target/jacoco-mssql-aggregate.exec + fi + if [ -d "integration-tests/mysql" ]; then + mv integration-tests/mysql/jacoco.exec ./liquibase-coverage/target/jacoco-mysql-aggregate.exec + fi + if [ -d "integration-tests/oracle" ]; then + mv integration-tests/oracle/jacoco.exec ./liquibase-coverage/target/jacoco-oracle-aggregate.exec + fi + if [ -d "integration-tests/postgresql" ]; then + mv integration-tests/postgresql/jacoco.exec ./liquibase-coverage/target/jacoco-postgresql-aggregate.exec + fi + if [ -d "integration-tests/h2" ]; then + mv integration-tests/h2/jacoco.exec ./liquibase-coverage/target/jacoco-h2-aggregate.exec + fi + if [ -d "integration-tests/hsqldb" ]; then + mv integration-tests/hsqldb/jacoco.exec ./liquibase-coverage/target/jacoco-hsqldb-aggregate.exec + fi + if [ -d "integration-tests/mariadb" ]; then + mv integration-tests/mariadb/jacoco.exec ./liquibase-coverage/target/jacoco-mariadb-aggregate.exec + fi + if [ -d "integration-tests/sqlite" ]; then + mv integration-tests/sqlite/jacoco.exec ./liquibase-coverage/target/jacoco-sqlite-aggregate.exec + fi + if [ -d "integration-tests/firebird" ]; then + mv integration-tests/firebird/jacoco.exec ./liquibase-coverage/target/jacoco-firebird-aggregate.exec + fi + + mvn -B verify -P 'unit,!run-proguard' -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT -T 1C + wget -q https://github.com/jacoco/jacoco/releases/download/v0.8.10/jacoco-0.8.10.zip + unzip ./jacoco-0.8.10.zip + mv ./lib/jacococli.jar ./liquibase-coverage/target/jacococli.jar + chmod +x ./liquibase-coverage/target/jacococli.jar + cd liquibase-coverage + mvn jacoco:merge@cli-merge-results + cd ./target + java -jar jacococli.jar report aggregate.exec --classfiles=../../${{ inputs.testedClassesModuleName }}/target/classdumps + - name: Sonar Scan + if: always() env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} run: | - export LD_LIBRARY_PATH=${HOME}/bin/oracle/instantclient_19_8:${LD_LIBRARY_PATH} - export PATH=${LD_LIBRARY_PATH}:${PATH} - export NLS_LANG=AMERICAN_AMERICA.UTF8 - export SQLPATH=${HOME}/bin/oracle/instantclient_19_8 - export PATH=$PATH:${HOME}/bin/oracle/instantclient_19_8 - ORACLE_HOME=$ORACLE_HOME:${HOME}/bin/oracle/instantclient_19_8 - source ~/.bash_profile - mvnd -B clean verify sonar:sonar -P 'testAll,!run-proguard' -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ + mvn -B package sonar:sonar -P '!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ - -Dsonar.login=$SONAR_TOKEN \ + -Dsonar.token=$SONAR_TOKEN \ -Dsonar.java.coveragePlugin=jacoco \ - -Dsonar.branch.name=${{ inputs.thisBranchName }} \ - -Dsonar.pullrequest.key=${{ inputs.pullRequestNumber }} \ - -Dsonar.pullrequest.branch=${{ inputs.pullRequestBranchName }} \ + -Dsonar.branch.name=${{ inputs.thisBranchName}} \ + -Dsonar.pullrequest.key=${{ inputs.pullRequestNumber}} \ + -Dsonar.pullrequest.branch=${{ inputs.pullRequestBranchName}} \ -Dsonar.pullrequest.base=${{ inputs.pullRequestBaseBranchName }} \ -Dsonar.pullrequest.provider=GitHub \ -Dsonar.pullrequest.github.repository="${{ github.repository }}" \ From 2b9bdad93042a309a8991e1ddc6f6f2d213143d6 Mon Sep 17 00:00:00 2001 From: Alejandro Alvarez Date: Tue, 19 Sep 2023 14:25:40 +0200 Subject: [PATCH 135/147] Dat 10564 (#73) * fix(sonar-test-scan.yml): add installation of sqlcmd to setup docker step for MacOS compatibility refactor(sonar-test-scan.yml): remove installation of sqlplus for integration tests as it is no longer needed refactor(sonar-test-scan.yml): remove unnecessary environment variable exports and sourcing of bash profile in SonarCloud step * chore(sonar-test-scan.yml): update runs-on field from macos-latest-xl to ubuntu-22.04 for better compatibility feat(sonar-test-scan.yml): update mvnd installation process to download and unzip the latest release from the official Apache Maven mvnd repository feat(sonar-test-scan.yml): add installation steps for sqlplus and instantclient for integration tests chore(sonar-test-scan.yml): remove unnecessary setup steps for docker and sqlcmd * chore(sonar-test-scan.yml): add support for downloading and merging integration test reports feat(sonar-test-scan.yml): add support for downloading unit test report artifact feat(sonar-test-scan.yml): add support for downloading integration test report artifacts for different databases (mssql, mysql, oracle, postgresql) chore(sonar-test-scan.yml): remove unnecessary step to install mvnd chore(sonar-test-scan.yml): remove unnecessary step to install sqlplus for integration tests chore(sonar-test-scan.yml): cache SonarCloud packages to improve build performance chore(sonar-test-scan.yml): merge integration and unit tests reports before running Sonar Scan * chore(sonar-test-scan.yml): add optional coverageModuleName input to specify the name of the coverage module fix(sonar-test-scan.yml): fix the directory change command to use the coverageModuleName input value instead of a hardcoded value * fix(sonar-test-scan.yml): fix typo in mvn command to merge integration and unit tests reports feat(sonar-test-scan.yml): add separate mvn command to merge jacoco results for better clarity and maintainability * chore(sonar-test-scan.yml): update Maven settings.xml action to version v21 for compatibility and potential bug fixes * fix(sonar-test-scan.yml): remove duplicate 'mvn' command in the 'Merge integration and unit tests reports' step * fix(sonar-test-scan.yml): update download-artifact action to use dawidd6/action-download-artifact@v2.27.0 to fix compatibility issue feat(sonar-test-scan.yml): add if_no_artifact_found: warn option to download-artifact actions to prevent failure when no artifact is found refactor(sonar-test-scan.yml): update download artifact names to use dynamic inputs for integration test reports to improve flexibility and reusability refactor(sonar-test-scan.yml): update download artifact names to use dynamic inputs for integration test reports to improve flexibility and reusability * chore(sonar-test-scan.yml): update maven-settings-xml-action to v20 for Maven settings.xml setup chore(sonar-test-scan.yml): update docker/login-action to v2 for GitHub Container Registry login chore(sonar-test-scan.yml): update action-download-artifact to v2.27.0 for downloading integration test reports chore(sonar-test-scan.yml): add installation steps for sqlplus and instantclient for Integration tests chore(sonar-test-scan.yml): remove merge integration and unit tests reports step chore(sonar-test-scan.yml): update mvn command to include ORACLE_HOME, PATH, SQLPATH, NLS_LANG, and LD_LIBRARY_PATH environment variables for Oracle integration tests * chore(sonar-test-scan.yml): add step to save test results as artifacts if archive_test_results input is true * chore(sonar-test-scan.yml): update Maven settings.xml action to version v21 for compatibility and potential bug fixes * chore(sonar-test-scan.yml): remove unnecessary if condition for saving test results artifact * chore(sonar-test-scan.yml): remove matrix variable from liquibase-integration-test-results artifact name to simplify naming convention * chore(sonar-test-scan.yml): add optional inputs for unit test report artifact name, integration test report artifact name, and coverage module name to improve flexibility and customization fix(sonar-test-scan.yml): remove unnecessary step to install mvnd feat(sonar-test-scan.yml): download unit test report artifact and integration test report artifacts for mssql, mysql, oracle, and postgresql databases feat(sonar-test-scan.yml): merge integration and unit tests reports using jacoco feat(sonar-test-scan.yml): add step to cache SonarCloud packages for faster subsequent runs feat(sonar-test-scan.yml): add step to perform Sonar Scan with necessary environment variables and configurations chore(sonar-test-scan.yml): remove unnecessary step to save test results as artifacts * fix(sonar-test-scan.yml): fix duplicate '-DskipTests' flag in the Maven command The duplicate '-DskipTests' flag in the Maven command was causing an error. Removed the duplicate flag to fix the issue. * fix(sonar-test-scan.yml): remove duplicate '-DskipTests' flag in the Maven command to avoid redundancy and improve readability * chore(sonar-test-scan.yml): update java-version from 11 to 17 to use the latest version of Java for the Sonar test scan workflow * chore(sonar-test-scan.yml): add specific paths for downloaded artifacts to improve organization and readability * chore(sonar-test-scan.yml): improve merging and moving of test reports The changes in this commit improve the merging and moving of test reports in the sonar-test-scan.yml workflow file. - Added commands to list the contents of directories for debugging purposes. - Created a new directory called "reports" to store the merged test reports. - Moved the unit test coverage report to the "reports" directory. - Moved the integration test coverage reports for different databases (mssql, mysql, oracle, postgresql) to the "reports" directory. - Moved the aggregated coverage reports for different databases to the "reports" directory. - Updated the commands to use the correct paths for moving the files. - Added comments to explain the purpose of each command. * chore(sonar-test-scan.yml): add ls command to list files in reports directory for debugging purposes * chore(sonar-test-scan.yml): update download-artifact action to version 3 for unit and integration test reports chore(sonar-test-scan.yml): remove if_no_artifact_found option from download-artifact action for integration test reports chore(sonar-test-scan.yml): update download-artifact action for integration test reports to use correct artifact names and paths chore(sonar-test-scan.yml): remove if_no_artifact_found option from download-artifact action for postgresql integration test report chore(sonar-test-scan.yml): remove unnecessary whitespace * chore(sonar-test-scan.yml): add a sleep step to wait for test reports before continuing the workflow execution chore(sonar-test-scan.yml): update comment to disable shallow clones for better analysis relevancy chore(sonar-test-scan.yml): add step to set up JDK for the workflow execution * chore(sonar-test-scan.yml): update file paths for jacoco coverage reports The file paths for the jacoco coverage reports have been updated in the sonar-test-scan.yml workflow file. The following changes were made: - The unit test coverage report file path has been changed from "unit-tests/liquibase-pro-coverage/target/aggregate.exec" to "unit-tests/liquibase-pro-coverage/target/jacoco.exec" and it has been moved to the "./reports/jacoco-unit.exec" directory. - The integration test coverage report file paths for mssql and mysql have been updated from "integration-tests/mssql/liquibase-pro-integration-tests/target/jacoco.exec" and "integration-tests/mysql/liquibase-pro-integration-tests/target/jacoco.exec" respectively. * fix(sonar-test-scan.yml): fix file path for moving coverage reports to the correct directory feat(sonar-test-scan.yml): add step to save Jacoco mixed results as an artifact for further analysis * chore(sonar-test-scan.yml): remove unnecessary ls command in the workflow file * fix(sonar-test-scan.yml): remove unnecessary directory creation step to simplify the workflow The directory creation step was creating an unnecessary directory in the workflow. This step has been removed to simplify the workflow and improve readability. * chore(sonar-test-scan.yml): update file paths for aggregated coverage reports to match new directory structure The file paths for the aggregated coverage reports in the integration tests have been updated to match the new directory structure. The "aggregate.exec" files are now moved to the "target" directory instead of the "reports" directory. This change ensures that the coverage reports are generated in the correct location for each database type (mssql, mysql, oracle, postgresql). * fix(sonar-test-scan.yml): update file paths for jacoco coverage reports to match the new directory structure feat(sonar-test-scan.yml): add steps to download jacoco cli, move it to the appropriate directory, and generate coverage report using jacoco cli * chore(sonar-test-scan.yml): reorganize build steps for better readability and maintainability fix(sonar-test-scan.yml): move 'mvn package' command before 'mvn jacoco:merge@cli-merge-results' to ensure correct coverage results feat(sonar-test-scan.yml): add liquibase version parameter to 'mvn package' command for better control over liquibase version used * refactor(sonar-test-scan.yml): simplify file paths for moving jacoco coverage files The file paths for moving jacoco coverage files were simplified to improve readability and maintainability. * fix(sonar-test-scan.yml): update jacoco download link to use the official GitHub release URL fix(sonar-test-scan.yml): fix the path to move jacococli.jar to the correct location * fix(sonar-test-scan.yml): fix typo in the file path for jacococli.jar fix(sonar-test-scan.yml): move the 'cd' command before merging jacoco results to the correct directory * fix(sonar-test-scan.yml): fix the path to jacococli.jar in the java command to generate Jacoco report * chore(sonar-test-scan.yml): add missing cd command to navigate to the target directory before running jacococli.jar command * fix(sonar-test-scan.yml): remove redundant file path in java -jar command to fix jacoco report generation The file path "./target" was duplicated in the java -jar command, causing the jacoco report generation to fail. This commit removes the redundant file path to fix the issue. * fix(sonar-test-scan.yml): fix the path to classfiles in the jacoco report command The path to the classfiles in the jacoco report command was incorrect. It was pointing to "../../pro/target/" instead of "../../pro/target/classes/". This fix corrects the path to ensure that the jacoco report command can find the necessary classfiles for generating the coverage report. * chore(sonar-test-scan.yml): downgrade Java version from 17 to 8 and change distribution from 'temurin' to 'adopt' for compatibility reasons * fix(sonar-test-scan.yml): fix classfiles path in Jacoco report command to point to the correct directory * chore(sonar-test-scan.yml): add optional inputs for testedClassesModuleName and integrationTestsModuleName to improve flexibility fix(sonar-test-scan.yml): update file paths to use the new inputs for testedClassesModuleName and integrationTestsModuleName fix(sonar-test-scan.yml): update artifact name for jacoco mixed report to improve clarity * chore(sonar-test-scan.yml): update Java version and distribution to use Java 17 with Temurin chore(sonar-test-scan.yml): refactor file moving logic to handle different integration test directories chore(sonar-test-scan.yml): remove unnecessary -T flag from Maven command * fix(sonar-test-scan.yml): remove redundant line that duplicates the mvn command The redundant line `mvn -B verify -P 'unit,!run-proguard' -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT` is removed to avoid duplication and improve code readability. * chore(sonar-test-scan.yml): update action-download-artifact version to v2.27.0 for all artifact downloads chore(sonar-test-scan.yml): add 'if_no_artifact_found: warn' option to all artifact downloads to handle missing artifacts gracefully chore(sonar-test-scan.yml): remove unnecessary whitespace * chore(sonar-test-scan.yml): install mvnd and use it instead of mvn for build and analysis steps * chore(sonar-test-scan.yml): add workflow and run_id parameters to download test reports The workflow file 'sonar-test-scan.yml' was modified to include the 'workflow' and 'run_id' parameters in the steps that download test reports. This change allows the download step to be associated with the correct workflow run and ensures that the test reports are downloaded from the correct workflow run. * chore(sonar-test-scan.yml): update download-artifact action to version 3 for unit and integration tests reports chore(sonar-test-scan.yml): remove unnecessary if_no_artifact_found option from download-artifact actions chore(sonar-test-scan.yml): remove unnecessary workflow and run_id options from download-artifact actions chore(sonar-test-scan.yml): add if: always() condition to download-artifact actions for integration tests reports chore(sonar-test-scan.yml): add if: always() condition to cache SonarCloud packages action chore(sonar-test-scan.yml): add if: always() condition to merge integration and unit tests reports step chore(sonar-test-scan.yml): add if: always() condition to save Jacoco Mixed Results step chore(sonar-test-scan.yml): add if: always() condition to Sonar Scan step * chore(sonar-test-scan.yml): remove unnecessary sleep command in the workflow chore(sonar-test-scan.yml): remove unused step to wait for test reports in the workflow * chore(sonar-test-scan.yml): remove installation of mvnd and update Maven commands to use 'mvn' command instead of './mvnd/bin/mvnd' The installation of mvnd has been removed as it is no longer needed. The Maven commands have been updated to use the 'mvn' command instead of './mvnd/bin/mvnd' for consistency and to align with standard Maven usage. * chore(sonar-test-scan.yml): remove unused integrationTestsModuleName input variable refactor(sonar-test-scan.yml): simplify file path for moving jacoco.exec files in integration tests * fix(sonar-test-scan.yml): add 'package' phase to the Maven command to ensure the project is built before running SonarQube analysis * fix(sonar-test-scan.yml): update file path for moving jacoco.exec file to improve accuracy and consistency * fix(sonar-test-scan.yml): update file path for moving jacoco.exec file to improve accuracy and consistency * chore(sonar-test-scan.yml): remove unnecessary artifact saving step for Jacoco mixed results chore(sonar-test-scan.yml): rename sonar-push job to sonar-scan for better clarity and consistency * fix(sonar-test-scan.yml): change sonar.login to sonar.token to align with SonarQube API changes and improve security The SonarQube API has changed and now requires the use of the `sonar.token` parameter instead of `sonar.login` for authentication. This change ensures that the correct parameter is used and improves the security of the SonarQube integration. * chore(sonar-test-scan.yml): add default value for sonar.coverage.exclusions to exclude test files and pom.xml from coverage analysis * chore(sonar-test-scan.yml): remove unused coverageModuleName input variable chore(sonar-test-scan.yml): update paths for merging and moving coverage reports to match new project structure chore(sonar-test-scan.yml): update paths for jacococli.jar and classfiles in jacoco:merge step to match new project structure * chore(sonar-test-scan.yml): download and move jacoco.exec files for h2, hsqldb, and mariadb integration tests to the appropriate directories The changes were made to the sonar-test-scan.yml workflow file. The following changes were made: - Added a step to download the h2 integration tests report artifact and move the jacoco.exec file to the integration-tests/h2 directory. - Added a step to download the hsqldb integration tests report artifact and move the jacoco.exec file to the integration-tests/hsqldb directory. - Added a step to download the mariadb integration tests report artifact and move the jacoco.exec file to the integration-tests/mariadb directory. These changes were made to ensure that the jacoco.exec files for the h2, hsqldb, and mariadb integration tests are available in the correct directories for further processing. * chore(sonar-test-scan.yml): add support for downloading and processing sqlite integration test reports chore(sonar-test-scan.yml): move jacoco.exec file from sqlite integration test report to liquibase-coverage target directory * chore(sonar-test-scan.yml): add step to download firebird integration tests report artifact chore(sonar-test-scan.yml): move firebird jacoco.exec file to target directory for coverage analysis * chore(create-release.yml): update sonar-push.yml version to v0.4.3 for improved functionality chore(extension-attach-artifact-release.yml): update script file versions to v0.4.3 for improved functionality chore(extension-release-published.yml): update extension-release-prepare.yml version to v0.4.3 for improved functionality chore(os-extension-test.yml): update sonar-pull-request.yml version to v0.4.3 for improved functionality chore(package-deb.yml): update file versions to v0.4.3 for improved functionality chore(pom-release-published.yml): update extension-release-prepare.yml version to v0.4.3 for improved functionality chore(pro-extension-test.yml): update sonar-pull-request.yml version to v0.4.3 for improved functionality * chore(sonar-test-scan.yml): refactor Maven command to improve readability and remove unnecessary step The Maven command in the workflow file has been refactored to improve readability and remove an unnecessary step. The `mvn clean package` command has been separated from the `mvn sonar:sonar` command. This change allows for better organization and clarity in the workflow file. * chore(sonar-test-scan.yml): update Maven command to include package phase and exclude unnecessary profiles The Maven command in the workflow file has been updated to include the package phase and exclude unnecessary profiles. This change ensures that the project is built and packaged before running the SonarQube analysis. The profiles '!unit', '!integration-test', '!testAll', and '!run-proguard' have been added to exclude unnecessary tests and proguard execution. This improves the efficiency of the workflow and reduces the time required for the SonarQube scan. * chore(sonar-test-scan.yml): update Maven command to exclude unit and integration tests, and remove unused profiles The Maven command in the Sonar test scan workflow has been updated to exclude unit and integration tests. The profiles '!unit' and '!integration-test' have been removed from the command. Additionally, the 'testAll' profile has been removed as it is not being used. The 'run-proguard' profile is still included. This change improves the accuracy of the Sonar analysis by excluding unnecessary tests. The updated command is as follows: ``` mvn -B package sonar:sonar -P 'no-test,!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ -Dsonar.token=$SONAR_TOKEN ``` * chore(sonar-test-scan.yml): remove unnecessary whitespace and improve readability of the Maven command * feat(sonar-test-scan.yml): add support for specifying database platforms to be tested - Add `dbPlatforms` input parameter to specify the database platforms to be tested - Set default value of `dbPlatforms` to include `mssql`, `mysql`, `oracle`, `postgresql`, `hsqldb` - Modify the download steps for integration test reports to conditionally download based on the specified `dbPlatforms` - Add conditional checks for each database platform in the download steps to download the corresponding integration test report * fix(sonar-test-scan.yml): change 'mvn package' command to 'mvn verify' to include test execution in the build process --- .github/workflows/sonar-test-scan.yml | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index 5a973cfa..e182f9af 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -44,6 +44,11 @@ on: description: 'The name of the tested classes module' type: string required: false + dbPlatforms: + description: 'The database platforms to be tested' + type: string + required: false + default: mssql,mysql,oracle,postgresql,hsqldb, env: MAVEN_VERSION: '3.8.7' @@ -120,63 +125,63 @@ jobs: path: unit-tests - name: Download mssql integration tests report - if: always() + if: contains(inputs.dbPlatforms, 'mssql') uses: actions/download-artifact@v3 with: name: ${{ inputs.integrationTestReportArtifactName }}-mssql path: integration-tests/mssql - name: Download mysql integration tests report - if: always() + if: contains(inputs.dbPlatforms, 'mysql') uses: actions/download-artifact@v3 with: name: ${{ inputs.integrationTestReportArtifactName }}-mysql path: integration-tests/mysql - name: Download oracle integration tests report - if: always() + if: contains(inputs.dbPlatforms, 'oracle') uses: actions/download-artifact@v3 with: name: ${{ inputs.integrationTestReportArtifactName }}-oracle path: integration-tests/oracle - name: Download postgresql integration tests report - if: always() + if: contains(inputs.dbPlatforms, 'postgresql') uses: actions/download-artifact@v3 with: name: ${{ inputs.integrationTestReportArtifactName }}-postgresql path: integration-tests/postgresql - name: Download h2 integration tests report - if: always() + if: contains(inputs.dbPlatforms, 'h2') uses: actions/download-artifact@v3 with: name: ${{ inputs.integrationTestReportArtifactName }}-h2 path: integration-tests/h2 - name: Download hsqldb integration tests report - if: always() + if: contains(inputs.dbPlatforms, 'hsqldb') uses: actions/download-artifact@v3 with: name: ${{ inputs.integrationTestReportArtifactName }}-hsqldb path: integration-tests/hsqldb - name: Download mariadb integration tests report - if: always() + if: contains(inputs.dbPlatforms, 'mariadb') uses: actions/download-artifact@v3 with: name: ${{ inputs.integrationTestReportArtifactName }}-mariadb path: integration-tests/mariadb - name: Download sqlite integration tests report - if: always() + if: contains(inputs.dbPlatforms, 'sqlite') uses: actions/download-artifact@v3 with: name: ${{ inputs.integrationTestReportArtifactName }}-sqlite path: integration-tests/sqlite - name: Download firebird integration tests report - if: always() + if: contains(inputs.dbPlatforms, 'firebird') uses: actions/download-artifact@v3 with: name: ${{ inputs.integrationTestReportArtifactName }}-firebird @@ -241,7 +246,7 @@ jobs: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} run: | - mvn -B package sonar:sonar -P '!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ + mvn -B verify sonar:sonar -P 'no-test,!run-proguard' -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ -Dsonar.token=$SONAR_TOKEN \ From 90252af01bd230d8fc6948bdd8776bf25a56d570 Mon Sep 17 00:00:00 2001 From: Alejandro Alvarez Date: Tue, 19 Sep 2023 17:10:29 +0200 Subject: [PATCH 136/147] Dat 10564 (#74) * fix(sonar-test-scan.yml): add installation of sqlcmd to setup docker step for MacOS compatibility refactor(sonar-test-scan.yml): remove installation of sqlplus for integration tests as it is no longer needed refactor(sonar-test-scan.yml): remove unnecessary environment variable exports and sourcing of bash profile in SonarCloud step * chore(sonar-test-scan.yml): update runs-on field from macos-latest-xl to ubuntu-22.04 for better compatibility feat(sonar-test-scan.yml): update mvnd installation process to download and unzip the latest release from the official Apache Maven mvnd repository feat(sonar-test-scan.yml): add installation steps for sqlplus and instantclient for integration tests chore(sonar-test-scan.yml): remove unnecessary setup steps for docker and sqlcmd * chore(sonar-test-scan.yml): add support for downloading and merging integration test reports feat(sonar-test-scan.yml): add support for downloading unit test report artifact feat(sonar-test-scan.yml): add support for downloading integration test report artifacts for different databases (mssql, mysql, oracle, postgresql) chore(sonar-test-scan.yml): remove unnecessary step to install mvnd chore(sonar-test-scan.yml): remove unnecessary step to install sqlplus for integration tests chore(sonar-test-scan.yml): cache SonarCloud packages to improve build performance chore(sonar-test-scan.yml): merge integration and unit tests reports before running Sonar Scan * chore(sonar-test-scan.yml): add optional coverageModuleName input to specify the name of the coverage module fix(sonar-test-scan.yml): fix the directory change command to use the coverageModuleName input value instead of a hardcoded value * fix(sonar-test-scan.yml): fix typo in mvn command to merge integration and unit tests reports feat(sonar-test-scan.yml): add separate mvn command to merge jacoco results for better clarity and maintainability * chore(sonar-test-scan.yml): update Maven settings.xml action to version v21 for compatibility and potential bug fixes * fix(sonar-test-scan.yml): remove duplicate 'mvn' command in the 'Merge integration and unit tests reports' step * fix(sonar-test-scan.yml): update download-artifact action to use dawidd6/action-download-artifact@v2.27.0 to fix compatibility issue feat(sonar-test-scan.yml): add if_no_artifact_found: warn option to download-artifact actions to prevent failure when no artifact is found refactor(sonar-test-scan.yml): update download artifact names to use dynamic inputs for integration test reports to improve flexibility and reusability refactor(sonar-test-scan.yml): update download artifact names to use dynamic inputs for integration test reports to improve flexibility and reusability * chore(sonar-test-scan.yml): update maven-settings-xml-action to v20 for Maven settings.xml setup chore(sonar-test-scan.yml): update docker/login-action to v2 for GitHub Container Registry login chore(sonar-test-scan.yml): update action-download-artifact to v2.27.0 for downloading integration test reports chore(sonar-test-scan.yml): add installation steps for sqlplus and instantclient for Integration tests chore(sonar-test-scan.yml): remove merge integration and unit tests reports step chore(sonar-test-scan.yml): update mvn command to include ORACLE_HOME, PATH, SQLPATH, NLS_LANG, and LD_LIBRARY_PATH environment variables for Oracle integration tests * chore(sonar-test-scan.yml): add step to save test results as artifacts if archive_test_results input is true * chore(sonar-test-scan.yml): update Maven settings.xml action to version v21 for compatibility and potential bug fixes * chore(sonar-test-scan.yml): remove unnecessary if condition for saving test results artifact * chore(sonar-test-scan.yml): remove matrix variable from liquibase-integration-test-results artifact name to simplify naming convention * chore(sonar-test-scan.yml): add optional inputs for unit test report artifact name, integration test report artifact name, and coverage module name to improve flexibility and customization fix(sonar-test-scan.yml): remove unnecessary step to install mvnd feat(sonar-test-scan.yml): download unit test report artifact and integration test report artifacts for mssql, mysql, oracle, and postgresql databases feat(sonar-test-scan.yml): merge integration and unit tests reports using jacoco feat(sonar-test-scan.yml): add step to cache SonarCloud packages for faster subsequent runs feat(sonar-test-scan.yml): add step to perform Sonar Scan with necessary environment variables and configurations chore(sonar-test-scan.yml): remove unnecessary step to save test results as artifacts * fix(sonar-test-scan.yml): fix duplicate '-DskipTests' flag in the Maven command The duplicate '-DskipTests' flag in the Maven command was causing an error. Removed the duplicate flag to fix the issue. * fix(sonar-test-scan.yml): remove duplicate '-DskipTests' flag in the Maven command to avoid redundancy and improve readability * chore(sonar-test-scan.yml): update java-version from 11 to 17 to use the latest version of Java for the Sonar test scan workflow * chore(sonar-test-scan.yml): add specific paths for downloaded artifacts to improve organization and readability * chore(sonar-test-scan.yml): improve merging and moving of test reports The changes in this commit improve the merging and moving of test reports in the sonar-test-scan.yml workflow file. - Added commands to list the contents of directories for debugging purposes. - Created a new directory called "reports" to store the merged test reports. - Moved the unit test coverage report to the "reports" directory. - Moved the integration test coverage reports for different databases (mssql, mysql, oracle, postgresql) to the "reports" directory. - Moved the aggregated coverage reports for different databases to the "reports" directory. - Updated the commands to use the correct paths for moving the files. - Added comments to explain the purpose of each command. * chore(sonar-test-scan.yml): add ls command to list files in reports directory for debugging purposes * chore(sonar-test-scan.yml): update download-artifact action to version 3 for unit and integration test reports chore(sonar-test-scan.yml): remove if_no_artifact_found option from download-artifact action for integration test reports chore(sonar-test-scan.yml): update download-artifact action for integration test reports to use correct artifact names and paths chore(sonar-test-scan.yml): remove if_no_artifact_found option from download-artifact action for postgresql integration test report chore(sonar-test-scan.yml): remove unnecessary whitespace * chore(sonar-test-scan.yml): add a sleep step to wait for test reports before continuing the workflow execution chore(sonar-test-scan.yml): update comment to disable shallow clones for better analysis relevancy chore(sonar-test-scan.yml): add step to set up JDK for the workflow execution * chore(sonar-test-scan.yml): update file paths for jacoco coverage reports The file paths for the jacoco coverage reports have been updated in the sonar-test-scan.yml workflow file. The following changes were made: - The unit test coverage report file path has been changed from "unit-tests/liquibase-pro-coverage/target/aggregate.exec" to "unit-tests/liquibase-pro-coverage/target/jacoco.exec" and it has been moved to the "./reports/jacoco-unit.exec" directory. - The integration test coverage report file paths for mssql and mysql have been updated from "integration-tests/mssql/liquibase-pro-integration-tests/target/jacoco.exec" and "integration-tests/mysql/liquibase-pro-integration-tests/target/jacoco.exec" respectively. * fix(sonar-test-scan.yml): fix file path for moving coverage reports to the correct directory feat(sonar-test-scan.yml): add step to save Jacoco mixed results as an artifact for further analysis * chore(sonar-test-scan.yml): remove unnecessary ls command in the workflow file * fix(sonar-test-scan.yml): remove unnecessary directory creation step to simplify the workflow The directory creation step was creating an unnecessary directory in the workflow. This step has been removed to simplify the workflow and improve readability. * chore(sonar-test-scan.yml): update file paths for aggregated coverage reports to match new directory structure The file paths for the aggregated coverage reports in the integration tests have been updated to match the new directory structure. The "aggregate.exec" files are now moved to the "target" directory instead of the "reports" directory. This change ensures that the coverage reports are generated in the correct location for each database type (mssql, mysql, oracle, postgresql). * fix(sonar-test-scan.yml): update file paths for jacoco coverage reports to match the new directory structure feat(sonar-test-scan.yml): add steps to download jacoco cli, move it to the appropriate directory, and generate coverage report using jacoco cli * chore(sonar-test-scan.yml): reorganize build steps for better readability and maintainability fix(sonar-test-scan.yml): move 'mvn package' command before 'mvn jacoco:merge@cli-merge-results' to ensure correct coverage results feat(sonar-test-scan.yml): add liquibase version parameter to 'mvn package' command for better control over liquibase version used * refactor(sonar-test-scan.yml): simplify file paths for moving jacoco coverage files The file paths for moving jacoco coverage files were simplified to improve readability and maintainability. * fix(sonar-test-scan.yml): update jacoco download link to use the official GitHub release URL fix(sonar-test-scan.yml): fix the path to move jacococli.jar to the correct location * fix(sonar-test-scan.yml): fix typo in the file path for jacococli.jar fix(sonar-test-scan.yml): move the 'cd' command before merging jacoco results to the correct directory * fix(sonar-test-scan.yml): fix the path to jacococli.jar in the java command to generate Jacoco report * chore(sonar-test-scan.yml): add missing cd command to navigate to the target directory before running jacococli.jar command * fix(sonar-test-scan.yml): remove redundant file path in java -jar command to fix jacoco report generation The file path "./target" was duplicated in the java -jar command, causing the jacoco report generation to fail. This commit removes the redundant file path to fix the issue. * fix(sonar-test-scan.yml): fix the path to classfiles in the jacoco report command The path to the classfiles in the jacoco report command was incorrect. It was pointing to "../../pro/target/" instead of "../../pro/target/classes/". This fix corrects the path to ensure that the jacoco report command can find the necessary classfiles for generating the coverage report. * chore(sonar-test-scan.yml): downgrade Java version from 17 to 8 and change distribution from 'temurin' to 'adopt' for compatibility reasons * fix(sonar-test-scan.yml): fix classfiles path in Jacoco report command to point to the correct directory * chore(sonar-test-scan.yml): add optional inputs for testedClassesModuleName and integrationTestsModuleName to improve flexibility fix(sonar-test-scan.yml): update file paths to use the new inputs for testedClassesModuleName and integrationTestsModuleName fix(sonar-test-scan.yml): update artifact name for jacoco mixed report to improve clarity * chore(sonar-test-scan.yml): update Java version and distribution to use Java 17 with Temurin chore(sonar-test-scan.yml): refactor file moving logic to handle different integration test directories chore(sonar-test-scan.yml): remove unnecessary -T flag from Maven command * fix(sonar-test-scan.yml): remove redundant line that duplicates the mvn command The redundant line `mvn -B verify -P 'unit,!run-proguard' -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT` is removed to avoid duplication and improve code readability. * chore(sonar-test-scan.yml): update action-download-artifact version to v2.27.0 for all artifact downloads chore(sonar-test-scan.yml): add 'if_no_artifact_found: warn' option to all artifact downloads to handle missing artifacts gracefully chore(sonar-test-scan.yml): remove unnecessary whitespace * chore(sonar-test-scan.yml): install mvnd and use it instead of mvn for build and analysis steps * chore(sonar-test-scan.yml): add workflow and run_id parameters to download test reports The workflow file 'sonar-test-scan.yml' was modified to include the 'workflow' and 'run_id' parameters in the steps that download test reports. This change allows the download step to be associated with the correct workflow run and ensures that the test reports are downloaded from the correct workflow run. * chore(sonar-test-scan.yml): update download-artifact action to version 3 for unit and integration tests reports chore(sonar-test-scan.yml): remove unnecessary if_no_artifact_found option from download-artifact actions chore(sonar-test-scan.yml): remove unnecessary workflow and run_id options from download-artifact actions chore(sonar-test-scan.yml): add if: always() condition to download-artifact actions for integration tests reports chore(sonar-test-scan.yml): add if: always() condition to cache SonarCloud packages action chore(sonar-test-scan.yml): add if: always() condition to merge integration and unit tests reports step chore(sonar-test-scan.yml): add if: always() condition to save Jacoco Mixed Results step chore(sonar-test-scan.yml): add if: always() condition to Sonar Scan step * chore(sonar-test-scan.yml): remove unnecessary sleep command in the workflow chore(sonar-test-scan.yml): remove unused step to wait for test reports in the workflow * chore(sonar-test-scan.yml): remove installation of mvnd and update Maven commands to use 'mvn' command instead of './mvnd/bin/mvnd' The installation of mvnd has been removed as it is no longer needed. The Maven commands have been updated to use the 'mvn' command instead of './mvnd/bin/mvnd' for consistency and to align with standard Maven usage. * chore(sonar-test-scan.yml): remove unused integrationTestsModuleName input variable refactor(sonar-test-scan.yml): simplify file path for moving jacoco.exec files in integration tests * fix(sonar-test-scan.yml): add 'package' phase to the Maven command to ensure the project is built before running SonarQube analysis * fix(sonar-test-scan.yml): update file path for moving jacoco.exec file to improve accuracy and consistency * fix(sonar-test-scan.yml): update file path for moving jacoco.exec file to improve accuracy and consistency * chore(sonar-test-scan.yml): remove unnecessary artifact saving step for Jacoco mixed results chore(sonar-test-scan.yml): rename sonar-push job to sonar-scan for better clarity and consistency * fix(sonar-test-scan.yml): change sonar.login to sonar.token to align with SonarQube API changes and improve security The SonarQube API has changed and now requires the use of the `sonar.token` parameter instead of `sonar.login` for authentication. This change ensures that the correct parameter is used and improves the security of the SonarQube integration. * chore(sonar-test-scan.yml): add default value for sonar.coverage.exclusions to exclude test files and pom.xml from coverage analysis * chore(sonar-test-scan.yml): remove unused coverageModuleName input variable chore(sonar-test-scan.yml): update paths for merging and moving coverage reports to match new project structure chore(sonar-test-scan.yml): update paths for jacococli.jar and classfiles in jacoco:merge step to match new project structure * chore(sonar-test-scan.yml): download and move jacoco.exec files for h2, hsqldb, and mariadb integration tests to the appropriate directories The changes were made to the sonar-test-scan.yml workflow file. The following changes were made: - Added a step to download the h2 integration tests report artifact and move the jacoco.exec file to the integration-tests/h2 directory. - Added a step to download the hsqldb integration tests report artifact and move the jacoco.exec file to the integration-tests/hsqldb directory. - Added a step to download the mariadb integration tests report artifact and move the jacoco.exec file to the integration-tests/mariadb directory. These changes were made to ensure that the jacoco.exec files for the h2, hsqldb, and mariadb integration tests are available in the correct directories for further processing. * chore(sonar-test-scan.yml): add support for downloading and processing sqlite integration test reports chore(sonar-test-scan.yml): move jacoco.exec file from sqlite integration test report to liquibase-coverage target directory * chore(sonar-test-scan.yml): add step to download firebird integration tests report artifact chore(sonar-test-scan.yml): move firebird jacoco.exec file to target directory for coverage analysis * chore(create-release.yml): update sonar-push.yml version to v0.4.3 for improved functionality chore(extension-attach-artifact-release.yml): update script file versions to v0.4.3 for improved functionality chore(extension-release-published.yml): update extension-release-prepare.yml version to v0.4.3 for improved functionality chore(os-extension-test.yml): update sonar-pull-request.yml version to v0.4.3 for improved functionality chore(package-deb.yml): update file versions to v0.4.3 for improved functionality chore(pom-release-published.yml): update extension-release-prepare.yml version to v0.4.3 for improved functionality chore(pro-extension-test.yml): update sonar-pull-request.yml version to v0.4.3 for improved functionality * chore(sonar-test-scan.yml): refactor Maven command to improve readability and remove unnecessary step The Maven command in the workflow file has been refactored to improve readability and remove an unnecessary step. The `mvn clean package` command has been separated from the `mvn sonar:sonar` command. This change allows for better organization and clarity in the workflow file. * chore(sonar-test-scan.yml): update Maven command to include package phase and exclude unnecessary profiles The Maven command in the workflow file has been updated to include the package phase and exclude unnecessary profiles. This change ensures that the project is built and packaged before running the SonarQube analysis. The profiles '!unit', '!integration-test', '!testAll', and '!run-proguard' have been added to exclude unnecessary tests and proguard execution. This improves the efficiency of the workflow and reduces the time required for the SonarQube scan. * chore(sonar-test-scan.yml): update Maven command to exclude unit and integration tests, and remove unused profiles The Maven command in the Sonar test scan workflow has been updated to exclude unit and integration tests. The profiles '!unit' and '!integration-test' have been removed from the command. Additionally, the 'testAll' profile has been removed as it is not being used. The 'run-proguard' profile is still included. This change improves the accuracy of the Sonar analysis by excluding unnecessary tests. The updated command is as follows: ``` mvn -B package sonar:sonar -P 'no-test,!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ -Dsonar.token=$SONAR_TOKEN ``` * chore(sonar-test-scan.yml): remove unnecessary whitespace and improve readability of the Maven command * feat(sonar-test-scan.yml): add support for specifying database platforms to be tested - Add `dbPlatforms` input parameter to specify the database platforms to be tested - Set default value of `dbPlatforms` to include `mssql`, `mysql`, `oracle`, `postgresql`, `hsqldb` - Modify the download steps for integration test reports to conditionally download based on the specified `dbPlatforms` - Add conditional checks for each database platform in the download steps to download the corresponding integration test report * fix(sonar-test-scan.yml): change 'mvn package' command to 'mvn verify' to include test execution in the build process * fix(sonar-test-scan.yml): fix maven command to skip tests during SonarQube scan The maven command in the SonarQube scan workflow was modified to skip tests by adding the `-DskipTests=true` flag. This change was made to improve the efficiency of the workflow and reduce the overall execution time. * chore(sonar-test-scan.yml): reformat mvn command to improve readability and maintainability --- .github/workflows/sonar-test-scan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index e182f9af..81000526 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -246,7 +246,7 @@ jobs: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} run: | - mvn -B verify sonar:sonar -P 'no-test,!run-proguard' -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ + mvn -B verify sonar:sonar -P '!run-proguard' -DskipTests=true -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ -Dsonar.token=$SONAR_TOKEN \ From 7fcbfe276fd3de165ff3f2b03f30059f6693a2a3 Mon Sep 17 00:00:00 2001 From: Alejandro Alvarez Date: Wed, 20 Sep 2023 07:30:57 +0200 Subject: [PATCH 137/147] Dat 15941 (#75) * chore(pro-extension-test.yml): add maven settings for liquibase and liquibase-pro repositories feat(pro-extension-test.yml): set latest liquibase version to master-SNAPSHOT if nightly input is true * chore(pro-extension-test.yml): reformat maven settings XML action to improve readability and add support for additional repositories and servers The maven settings XML action in the pro-extension-test.yml workflow file has been reformatted to improve readability. Additionally, support for two additional repositories ("liquibase" and "liquibase-pro") and their corresponding servers has been added to the action. This allows the workflow to fetch dependencies from these repositories during the build process. --- .github/workflows/pro-extension-test.yml | 86 ++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index e0851051..8c7236e7 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -53,6 +53,49 @@ jobs: distribution: 'temurin' cache: 'maven' + # look for dependencies in maven + - name: maven-settings-xml-action + uses: whelk-io/maven-settings-xml-action@v20 + with: + repositories: | + [ + { + "id": "liquibase", + "url": "https://maven.pkg.github.com/liquibase/liquibase", + "releases": { + "enabled": "false" + }, + "snapshots": { + "enabled": "true", + "updatePolicy": "always" + } + }, + { + "id": "liquibase-pro", + "url": "https://maven.pkg.github.com/liquibase/liquibase-pro", + "releases": { + "enabled": "false" + }, + "snapshots": { + "enabled": "true", + "updatePolicy": "always" + } + } + ] + servers: | + [ + { + "id": "liquibase-pro", + "username": "liquibot", + "password": "${{ secrets.LIQUIBOT_PAT }}" + }, + { + "id": "liquibase", + "username": "liquibot", + "password": "${{ secrets.LIQUIBOT_PAT }}" + } + ] + - name: Set latest liquibase version if: ${{ inputs.nightly }} run: mvn versions:set-property -Dproperty=liquibase.version -DnewVersion=master-SNAPSHOT @@ -99,6 +142,49 @@ jobs: distribution: 'temurin' cache: 'maven' + # look for dependencies in maven + - name: maven-settings-xml-action + uses: whelk-io/maven-settings-xml-action@v20 + with: + repositories: | + [ + { + "id": "liquibase", + "url": "https://maven.pkg.github.com/liquibase/liquibase", + "releases": { + "enabled": "false" + }, + "snapshots": { + "enabled": "true", + "updatePolicy": "always" + } + }, + { + "id": "liquibase-pro", + "url": "https://maven.pkg.github.com/liquibase/liquibase-pro", + "releases": { + "enabled": "false" + }, + "snapshots": { + "enabled": "true", + "updatePolicy": "always" + } + } + ] + servers: | + [ + { + "id": "liquibase-pro", + "username": "liquibot", + "password": "${{ secrets.LIQUIBOT_PAT }}" + }, + { + "id": "liquibase", + "username": "liquibot", + "password": "${{ secrets.LIQUIBOT_PAT }}" + } + ] + - uses: actions/download-artifact@v3 with: name: ${{needs.build.outputs.artifact_id}}-artifacts From 9c9ad58371812bdb5aa25a21cb7c665642cd2a61 Mon Sep 17 00:00:00 2001 From: Alejandro Alvarez Date: Wed, 20 Sep 2023 11:36:13 +0200 Subject: [PATCH 138/147] Dat 10564 (#76) * fix(sonar-test-scan.yml): add installation of sqlcmd to setup docker step for MacOS compatibility refactor(sonar-test-scan.yml): remove installation of sqlplus for integration tests as it is no longer needed refactor(sonar-test-scan.yml): remove unnecessary environment variable exports and sourcing of bash profile in SonarCloud step * chore(sonar-test-scan.yml): update runs-on field from macos-latest-xl to ubuntu-22.04 for better compatibility feat(sonar-test-scan.yml): update mvnd installation process to download and unzip the latest release from the official Apache Maven mvnd repository feat(sonar-test-scan.yml): add installation steps for sqlplus and instantclient for integration tests chore(sonar-test-scan.yml): remove unnecessary setup steps for docker and sqlcmd * chore(sonar-test-scan.yml): add support for downloading and merging integration test reports feat(sonar-test-scan.yml): add support for downloading unit test report artifact feat(sonar-test-scan.yml): add support for downloading integration test report artifacts for different databases (mssql, mysql, oracle, postgresql) chore(sonar-test-scan.yml): remove unnecessary step to install mvnd chore(sonar-test-scan.yml): remove unnecessary step to install sqlplus for integration tests chore(sonar-test-scan.yml): cache SonarCloud packages to improve build performance chore(sonar-test-scan.yml): merge integration and unit tests reports before running Sonar Scan * chore(sonar-test-scan.yml): add optional coverageModuleName input to specify the name of the coverage module fix(sonar-test-scan.yml): fix the directory change command to use the coverageModuleName input value instead of a hardcoded value * fix(sonar-test-scan.yml): fix typo in mvn command to merge integration and unit tests reports feat(sonar-test-scan.yml): add separate mvn command to merge jacoco results for better clarity and maintainability * chore(sonar-test-scan.yml): update Maven settings.xml action to version v21 for compatibility and potential bug fixes * fix(sonar-test-scan.yml): remove duplicate 'mvn' command in the 'Merge integration and unit tests reports' step * fix(sonar-test-scan.yml): update download-artifact action to use dawidd6/action-download-artifact@v2.27.0 to fix compatibility issue feat(sonar-test-scan.yml): add if_no_artifact_found: warn option to download-artifact actions to prevent failure when no artifact is found refactor(sonar-test-scan.yml): update download artifact names to use dynamic inputs for integration test reports to improve flexibility and reusability refactor(sonar-test-scan.yml): update download artifact names to use dynamic inputs for integration test reports to improve flexibility and reusability * chore(sonar-test-scan.yml): update maven-settings-xml-action to v20 for Maven settings.xml setup chore(sonar-test-scan.yml): update docker/login-action to v2 for GitHub Container Registry login chore(sonar-test-scan.yml): update action-download-artifact to v2.27.0 for downloading integration test reports chore(sonar-test-scan.yml): add installation steps for sqlplus and instantclient for Integration tests chore(sonar-test-scan.yml): remove merge integration and unit tests reports step chore(sonar-test-scan.yml): update mvn command to include ORACLE_HOME, PATH, SQLPATH, NLS_LANG, and LD_LIBRARY_PATH environment variables for Oracle integration tests * chore(sonar-test-scan.yml): add step to save test results as artifacts if archive_test_results input is true * chore(sonar-test-scan.yml): update Maven settings.xml action to version v21 for compatibility and potential bug fixes * chore(sonar-test-scan.yml): remove unnecessary if condition for saving test results artifact * chore(sonar-test-scan.yml): remove matrix variable from liquibase-integration-test-results artifact name to simplify naming convention * chore(sonar-test-scan.yml): add optional inputs for unit test report artifact name, integration test report artifact name, and coverage module name to improve flexibility and customization fix(sonar-test-scan.yml): remove unnecessary step to install mvnd feat(sonar-test-scan.yml): download unit test report artifact and integration test report artifacts for mssql, mysql, oracle, and postgresql databases feat(sonar-test-scan.yml): merge integration and unit tests reports using jacoco feat(sonar-test-scan.yml): add step to cache SonarCloud packages for faster subsequent runs feat(sonar-test-scan.yml): add step to perform Sonar Scan with necessary environment variables and configurations chore(sonar-test-scan.yml): remove unnecessary step to save test results as artifacts * fix(sonar-test-scan.yml): fix duplicate '-DskipTests' flag in the Maven command The duplicate '-DskipTests' flag in the Maven command was causing an error. Removed the duplicate flag to fix the issue. * fix(sonar-test-scan.yml): remove duplicate '-DskipTests' flag in the Maven command to avoid redundancy and improve readability * chore(sonar-test-scan.yml): update java-version from 11 to 17 to use the latest version of Java for the Sonar test scan workflow * chore(sonar-test-scan.yml): add specific paths for downloaded artifacts to improve organization and readability * chore(sonar-test-scan.yml): improve merging and moving of test reports The changes in this commit improve the merging and moving of test reports in the sonar-test-scan.yml workflow file. - Added commands to list the contents of directories for debugging purposes. - Created a new directory called "reports" to store the merged test reports. - Moved the unit test coverage report to the "reports" directory. - Moved the integration test coverage reports for different databases (mssql, mysql, oracle, postgresql) to the "reports" directory. - Moved the aggregated coverage reports for different databases to the "reports" directory. - Updated the commands to use the correct paths for moving the files. - Added comments to explain the purpose of each command. * chore(sonar-test-scan.yml): add ls command to list files in reports directory for debugging purposes * chore(sonar-test-scan.yml): update download-artifact action to version 3 for unit and integration test reports chore(sonar-test-scan.yml): remove if_no_artifact_found option from download-artifact action for integration test reports chore(sonar-test-scan.yml): update download-artifact action for integration test reports to use correct artifact names and paths chore(sonar-test-scan.yml): remove if_no_artifact_found option from download-artifact action for postgresql integration test report chore(sonar-test-scan.yml): remove unnecessary whitespace * chore(sonar-test-scan.yml): add a sleep step to wait for test reports before continuing the workflow execution chore(sonar-test-scan.yml): update comment to disable shallow clones for better analysis relevancy chore(sonar-test-scan.yml): add step to set up JDK for the workflow execution * chore(sonar-test-scan.yml): update file paths for jacoco coverage reports The file paths for the jacoco coverage reports have been updated in the sonar-test-scan.yml workflow file. The following changes were made: - The unit test coverage report file path has been changed from "unit-tests/liquibase-pro-coverage/target/aggregate.exec" to "unit-tests/liquibase-pro-coverage/target/jacoco.exec" and it has been moved to the "./reports/jacoco-unit.exec" directory. - The integration test coverage report file paths for mssql and mysql have been updated from "integration-tests/mssql/liquibase-pro-integration-tests/target/jacoco.exec" and "integration-tests/mysql/liquibase-pro-integration-tests/target/jacoco.exec" respectively. * fix(sonar-test-scan.yml): fix file path for moving coverage reports to the correct directory feat(sonar-test-scan.yml): add step to save Jacoco mixed results as an artifact for further analysis * chore(sonar-test-scan.yml): remove unnecessary ls command in the workflow file * fix(sonar-test-scan.yml): remove unnecessary directory creation step to simplify the workflow The directory creation step was creating an unnecessary directory in the workflow. This step has been removed to simplify the workflow and improve readability. * chore(sonar-test-scan.yml): update file paths for aggregated coverage reports to match new directory structure The file paths for the aggregated coverage reports in the integration tests have been updated to match the new directory structure. The "aggregate.exec" files are now moved to the "target" directory instead of the "reports" directory. This change ensures that the coverage reports are generated in the correct location for each database type (mssql, mysql, oracle, postgresql). * fix(sonar-test-scan.yml): update file paths for jacoco coverage reports to match the new directory structure feat(sonar-test-scan.yml): add steps to download jacoco cli, move it to the appropriate directory, and generate coverage report using jacoco cli * chore(sonar-test-scan.yml): reorganize build steps for better readability and maintainability fix(sonar-test-scan.yml): move 'mvn package' command before 'mvn jacoco:merge@cli-merge-results' to ensure correct coverage results feat(sonar-test-scan.yml): add liquibase version parameter to 'mvn package' command for better control over liquibase version used * refactor(sonar-test-scan.yml): simplify file paths for moving jacoco coverage files The file paths for moving jacoco coverage files were simplified to improve readability and maintainability. * fix(sonar-test-scan.yml): update jacoco download link to use the official GitHub release URL fix(sonar-test-scan.yml): fix the path to move jacococli.jar to the correct location * fix(sonar-test-scan.yml): fix typo in the file path for jacococli.jar fix(sonar-test-scan.yml): move the 'cd' command before merging jacoco results to the correct directory * fix(sonar-test-scan.yml): fix the path to jacococli.jar in the java command to generate Jacoco report * chore(sonar-test-scan.yml): add missing cd command to navigate to the target directory before running jacococli.jar command * fix(sonar-test-scan.yml): remove redundant file path in java -jar command to fix jacoco report generation The file path "./target" was duplicated in the java -jar command, causing the jacoco report generation to fail. This commit removes the redundant file path to fix the issue. * fix(sonar-test-scan.yml): fix the path to classfiles in the jacoco report command The path to the classfiles in the jacoco report command was incorrect. It was pointing to "../../pro/target/" instead of "../../pro/target/classes/". This fix corrects the path to ensure that the jacoco report command can find the necessary classfiles for generating the coverage report. * chore(sonar-test-scan.yml): downgrade Java version from 17 to 8 and change distribution from 'temurin' to 'adopt' for compatibility reasons * fix(sonar-test-scan.yml): fix classfiles path in Jacoco report command to point to the correct directory * chore(sonar-test-scan.yml): add optional inputs for testedClassesModuleName and integrationTestsModuleName to improve flexibility fix(sonar-test-scan.yml): update file paths to use the new inputs for testedClassesModuleName and integrationTestsModuleName fix(sonar-test-scan.yml): update artifact name for jacoco mixed report to improve clarity * chore(sonar-test-scan.yml): update Java version and distribution to use Java 17 with Temurin chore(sonar-test-scan.yml): refactor file moving logic to handle different integration test directories chore(sonar-test-scan.yml): remove unnecessary -T flag from Maven command * fix(sonar-test-scan.yml): remove redundant line that duplicates the mvn command The redundant line `mvn -B verify -P 'unit,!run-proguard' -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT` is removed to avoid duplication and improve code readability. * chore(sonar-test-scan.yml): update action-download-artifact version to v2.27.0 for all artifact downloads chore(sonar-test-scan.yml): add 'if_no_artifact_found: warn' option to all artifact downloads to handle missing artifacts gracefully chore(sonar-test-scan.yml): remove unnecessary whitespace * chore(sonar-test-scan.yml): install mvnd and use it instead of mvn for build and analysis steps * chore(sonar-test-scan.yml): add workflow and run_id parameters to download test reports The workflow file 'sonar-test-scan.yml' was modified to include the 'workflow' and 'run_id' parameters in the steps that download test reports. This change allows the download step to be associated with the correct workflow run and ensures that the test reports are downloaded from the correct workflow run. * chore(sonar-test-scan.yml): update download-artifact action to version 3 for unit and integration tests reports chore(sonar-test-scan.yml): remove unnecessary if_no_artifact_found option from download-artifact actions chore(sonar-test-scan.yml): remove unnecessary workflow and run_id options from download-artifact actions chore(sonar-test-scan.yml): add if: always() condition to download-artifact actions for integration tests reports chore(sonar-test-scan.yml): add if: always() condition to cache SonarCloud packages action chore(sonar-test-scan.yml): add if: always() condition to merge integration and unit tests reports step chore(sonar-test-scan.yml): add if: always() condition to save Jacoco Mixed Results step chore(sonar-test-scan.yml): add if: always() condition to Sonar Scan step * chore(sonar-test-scan.yml): remove unnecessary sleep command in the workflow chore(sonar-test-scan.yml): remove unused step to wait for test reports in the workflow * chore(sonar-test-scan.yml): remove installation of mvnd and update Maven commands to use 'mvn' command instead of './mvnd/bin/mvnd' The installation of mvnd has been removed as it is no longer needed. The Maven commands have been updated to use the 'mvn' command instead of './mvnd/bin/mvnd' for consistency and to align with standard Maven usage. * chore(sonar-test-scan.yml): remove unused integrationTestsModuleName input variable refactor(sonar-test-scan.yml): simplify file path for moving jacoco.exec files in integration tests * fix(sonar-test-scan.yml): add 'package' phase to the Maven command to ensure the project is built before running SonarQube analysis * fix(sonar-test-scan.yml): update file path for moving jacoco.exec file to improve accuracy and consistency * fix(sonar-test-scan.yml): update file path for moving jacoco.exec file to improve accuracy and consistency * chore(sonar-test-scan.yml): remove unnecessary artifact saving step for Jacoco mixed results chore(sonar-test-scan.yml): rename sonar-push job to sonar-scan for better clarity and consistency * fix(sonar-test-scan.yml): change sonar.login to sonar.token to align with SonarQube API changes and improve security The SonarQube API has changed and now requires the use of the `sonar.token` parameter instead of `sonar.login` for authentication. This change ensures that the correct parameter is used and improves the security of the SonarQube integration. * chore(sonar-test-scan.yml): add default value for sonar.coverage.exclusions to exclude test files and pom.xml from coverage analysis * chore(sonar-test-scan.yml): remove unused coverageModuleName input variable chore(sonar-test-scan.yml): update paths for merging and moving coverage reports to match new project structure chore(sonar-test-scan.yml): update paths for jacococli.jar and classfiles in jacoco:merge step to match new project structure * chore(sonar-test-scan.yml): download and move jacoco.exec files for h2, hsqldb, and mariadb integration tests to the appropriate directories The changes were made to the sonar-test-scan.yml workflow file. The following changes were made: - Added a step to download the h2 integration tests report artifact and move the jacoco.exec file to the integration-tests/h2 directory. - Added a step to download the hsqldb integration tests report artifact and move the jacoco.exec file to the integration-tests/hsqldb directory. - Added a step to download the mariadb integration tests report artifact and move the jacoco.exec file to the integration-tests/mariadb directory. These changes were made to ensure that the jacoco.exec files for the h2, hsqldb, and mariadb integration tests are available in the correct directories for further processing. * chore(sonar-test-scan.yml): add support for downloading and processing sqlite integration test reports chore(sonar-test-scan.yml): move jacoco.exec file from sqlite integration test report to liquibase-coverage target directory * chore(sonar-test-scan.yml): add step to download firebird integration tests report artifact chore(sonar-test-scan.yml): move firebird jacoco.exec file to target directory for coverage analysis * chore(create-release.yml): update sonar-push.yml version to v0.4.3 for improved functionality chore(extension-attach-artifact-release.yml): update script file versions to v0.4.3 for improved functionality chore(extension-release-published.yml): update extension-release-prepare.yml version to v0.4.3 for improved functionality chore(os-extension-test.yml): update sonar-pull-request.yml version to v0.4.3 for improved functionality chore(package-deb.yml): update file versions to v0.4.3 for improved functionality chore(pom-release-published.yml): update extension-release-prepare.yml version to v0.4.3 for improved functionality chore(pro-extension-test.yml): update sonar-pull-request.yml version to v0.4.3 for improved functionality * chore(sonar-test-scan.yml): refactor Maven command to improve readability and remove unnecessary step The Maven command in the workflow file has been refactored to improve readability and remove an unnecessary step. The `mvn clean package` command has been separated from the `mvn sonar:sonar` command. This change allows for better organization and clarity in the workflow file. * chore(sonar-test-scan.yml): update Maven command to include package phase and exclude unnecessary profiles The Maven command in the workflow file has been updated to include the package phase and exclude unnecessary profiles. This change ensures that the project is built and packaged before running the SonarQube analysis. The profiles '!unit', '!integration-test', '!testAll', and '!run-proguard' have been added to exclude unnecessary tests and proguard execution. This improves the efficiency of the workflow and reduces the time required for the SonarQube scan. * chore(sonar-test-scan.yml): update Maven command to exclude unit and integration tests, and remove unused profiles The Maven command in the Sonar test scan workflow has been updated to exclude unit and integration tests. The profiles '!unit' and '!integration-test' have been removed from the command. Additionally, the 'testAll' profile has been removed as it is not being used. The 'run-proguard' profile is still included. This change improves the accuracy of the Sonar analysis by excluding unnecessary tests. The updated command is as follows: ``` mvn -B package sonar:sonar -P 'no-test,!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ -Dsonar.token=$SONAR_TOKEN ``` * chore(sonar-test-scan.yml): remove unnecessary whitespace and improve readability of the Maven command * feat(sonar-test-scan.yml): add support for specifying database platforms to be tested - Add `dbPlatforms` input parameter to specify the database platforms to be tested - Set default value of `dbPlatforms` to include `mssql`, `mysql`, `oracle`, `postgresql`, `hsqldb` - Modify the download steps for integration test reports to conditionally download based on the specified `dbPlatforms` - Add conditional checks for each database platform in the download steps to download the corresponding integration test report * fix(sonar-test-scan.yml): change 'mvn package' command to 'mvn verify' to include test execution in the build process * fix(sonar-test-scan.yml): fix maven command to skip tests during SonarQube scan The maven command in the SonarQube scan workflow was modified to skip tests by adding the `-DskipTests=true` flag. This change was made to improve the efficiency of the workflow and reduce the overall execution time. * chore(sonar-test-scan.yml): reformat mvn command to improve readability and maintainability * chore(sonar-test-scan.yml): remove unnecessary parallel execution flag (-T 1C) to improve build performance chore(sonar-test-scan.yml): remove unused maven argument (-DskipTests=true) as it is redundant with -P '!run-proguard' profile * chore(sonar-test-scan.yml): simplify Maven command by skipping integration tests chore(sonar-test-scan.yml): update jacoco version to 0.8.10 for code coverage analysis * chore(sonar-test-scan.yml): refactor Sonar Scan job to separate branch scan and PR scan The Sonar Scan job has been refactored into two separate jobs: Sonar Branch Scan and Sonar PR Scan. Sonar Branch Scan: - The Sonar Branch Scan job will run when the workflow is triggered by a push event on a branch (not a pull request). - It will perform a Sonar scan on the branch. - The Sonar scan will wait for the quality gate to pass before completing. - The Sonar scan will be performed on the organization's SonarCloud instance. - The Sonar scan will use the Jacoco coverage plugin for Java code coverage. - The Sonar scan will use the git SCM provider. - The Sonar scan will use the AWS region "us-east-1". Sonar PR Scan: - The Sonar PR Scan job will run when the workflow is triggered by a pull request event. - It will perform a Sonar scan on the pull request. - The Sonar scan will use the Jacoco coverage plugin for Java code coverage. - The Sonar scan will use the provided pull request information. - The Sonar scan will use the git SCM provider. - The Sonar scan will use the provided Sonar token. - The Sonar scan will use the provided Liquibase Pro license key. These changes improve the clarity and separation of the Sonar scan jobs in the workflow. * fix(sonar-test-scan.yml): exclude running proguard during the Maven verify phase to improve build performance and stability --- .github/workflows/sonar-test-scan.yml | 29 +++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index 81000526..69bfa9f2 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -229,7 +229,7 @@ jobs: mv integration-tests/firebird/jacoco.exec ./liquibase-coverage/target/jacoco-firebird-aggregate.exec fi - mvn -B verify -P 'unit,!run-proguard' -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT -T 1C + mvn -B verify -P '!run-proguard' -DskipITs -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT wget -q https://github.com/jacoco/jacoco/releases/download/v0.8.10/jacoco-0.8.10.zip unzip ./jacoco-0.8.10.zip mv ./lib/jacococli.jar ./liquibase-coverage/target/jacococli.jar @@ -239,19 +239,37 @@ jobs: cd ./target java -jar jacococli.jar report aggregate.exec --classfiles=../../${{ inputs.testedClassesModuleName }}/target/classdumps - - name: Sonar Scan - if: always() + - name: Sonar Branch Scan + if: always() && !github.event.pull_request env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} run: | - mvn -B verify sonar:sonar -P '!run-proguard' -DskipTests=true -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ + mvn -B verify sonar:sonar -P '!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ -Dsonar.token=$SONAR_TOKEN \ -Dsonar.java.coveragePlugin=jacoco \ -Dsonar.branch.name=${{ inputs.thisBranchName}} \ + -Dsonar.qualitygate.wait=true \ + -Dsonar.organization=${{ github.repository_owner }} \ + -Dsonar.host.url='https://sonarcloud.io' \ + -Dsonar.scm.provider=git \ + -Daws.region="us-east-1" + + - name: Sonar PR Scan + if: always() && github.event.pull_request + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} + run: | + mvn -B verify sonar:sonar -P '!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ + ${{ inputs.mavenArgs }} \ + -Dsonar.scm.revision=${{ inputs.thisSha }} \ + -Dsonar.token=$SONAR_TOKEN \ + -Dsonar.java.coveragePlugin=jacoco \ -Dsonar.pullrequest.key=${{ inputs.pullRequestNumber}} \ -Dsonar.pullrequest.branch=${{ inputs.pullRequestBranchName}} \ -Dsonar.pullrequest.base=${{ inputs.pullRequestBaseBranchName }} \ @@ -262,5 +280,4 @@ jobs: -Dsonar.organization=${{ github.repository_owner }} \ -Dsonar.host.url='https://sonarcloud.io' \ -Dsonar.scm.provider=git \ - -Daws.region="us-east-1" \ - -T 1C + -Daws.region="us-east-1" From 3241b85867ac4b14c184400f324c3ea134368b7f Mon Sep 17 00:00:00 2001 From: Alejandro Alvarez Date: Wed, 20 Sep 2023 11:40:35 +0200 Subject: [PATCH 139/147] Dat 10564 (#77) * fix(sonar-test-scan.yml): add installation of sqlcmd to setup docker step for MacOS compatibility refactor(sonar-test-scan.yml): remove installation of sqlplus for integration tests as it is no longer needed refactor(sonar-test-scan.yml): remove unnecessary environment variable exports and sourcing of bash profile in SonarCloud step * chore(sonar-test-scan.yml): update runs-on field from macos-latest-xl to ubuntu-22.04 for better compatibility feat(sonar-test-scan.yml): update mvnd installation process to download and unzip the latest release from the official Apache Maven mvnd repository feat(sonar-test-scan.yml): add installation steps for sqlplus and instantclient for integration tests chore(sonar-test-scan.yml): remove unnecessary setup steps for docker and sqlcmd * chore(sonar-test-scan.yml): add support for downloading and merging integration test reports feat(sonar-test-scan.yml): add support for downloading unit test report artifact feat(sonar-test-scan.yml): add support for downloading integration test report artifacts for different databases (mssql, mysql, oracle, postgresql) chore(sonar-test-scan.yml): remove unnecessary step to install mvnd chore(sonar-test-scan.yml): remove unnecessary step to install sqlplus for integration tests chore(sonar-test-scan.yml): cache SonarCloud packages to improve build performance chore(sonar-test-scan.yml): merge integration and unit tests reports before running Sonar Scan * chore(sonar-test-scan.yml): add optional coverageModuleName input to specify the name of the coverage module fix(sonar-test-scan.yml): fix the directory change command to use the coverageModuleName input value instead of a hardcoded value * fix(sonar-test-scan.yml): fix typo in mvn command to merge integration and unit tests reports feat(sonar-test-scan.yml): add separate mvn command to merge jacoco results for better clarity and maintainability * chore(sonar-test-scan.yml): update Maven settings.xml action to version v21 for compatibility and potential bug fixes * fix(sonar-test-scan.yml): remove duplicate 'mvn' command in the 'Merge integration and unit tests reports' step * fix(sonar-test-scan.yml): update download-artifact action to use dawidd6/action-download-artifact@v2.27.0 to fix compatibility issue feat(sonar-test-scan.yml): add if_no_artifact_found: warn option to download-artifact actions to prevent failure when no artifact is found refactor(sonar-test-scan.yml): update download artifact names to use dynamic inputs for integration test reports to improve flexibility and reusability refactor(sonar-test-scan.yml): update download artifact names to use dynamic inputs for integration test reports to improve flexibility and reusability * chore(sonar-test-scan.yml): update maven-settings-xml-action to v20 for Maven settings.xml setup chore(sonar-test-scan.yml): update docker/login-action to v2 for GitHub Container Registry login chore(sonar-test-scan.yml): update action-download-artifact to v2.27.0 for downloading integration test reports chore(sonar-test-scan.yml): add installation steps for sqlplus and instantclient for Integration tests chore(sonar-test-scan.yml): remove merge integration and unit tests reports step chore(sonar-test-scan.yml): update mvn command to include ORACLE_HOME, PATH, SQLPATH, NLS_LANG, and LD_LIBRARY_PATH environment variables for Oracle integration tests * chore(sonar-test-scan.yml): add step to save test results as artifacts if archive_test_results input is true * chore(sonar-test-scan.yml): update Maven settings.xml action to version v21 for compatibility and potential bug fixes * chore(sonar-test-scan.yml): remove unnecessary if condition for saving test results artifact * chore(sonar-test-scan.yml): remove matrix variable from liquibase-integration-test-results artifact name to simplify naming convention * chore(sonar-test-scan.yml): add optional inputs for unit test report artifact name, integration test report artifact name, and coverage module name to improve flexibility and customization fix(sonar-test-scan.yml): remove unnecessary step to install mvnd feat(sonar-test-scan.yml): download unit test report artifact and integration test report artifacts for mssql, mysql, oracle, and postgresql databases feat(sonar-test-scan.yml): merge integration and unit tests reports using jacoco feat(sonar-test-scan.yml): add step to cache SonarCloud packages for faster subsequent runs feat(sonar-test-scan.yml): add step to perform Sonar Scan with necessary environment variables and configurations chore(sonar-test-scan.yml): remove unnecessary step to save test results as artifacts * fix(sonar-test-scan.yml): fix duplicate '-DskipTests' flag in the Maven command The duplicate '-DskipTests' flag in the Maven command was causing an error. Removed the duplicate flag to fix the issue. * fix(sonar-test-scan.yml): remove duplicate '-DskipTests' flag in the Maven command to avoid redundancy and improve readability * chore(sonar-test-scan.yml): update java-version from 11 to 17 to use the latest version of Java for the Sonar test scan workflow * chore(sonar-test-scan.yml): add specific paths for downloaded artifacts to improve organization and readability * chore(sonar-test-scan.yml): improve merging and moving of test reports The changes in this commit improve the merging and moving of test reports in the sonar-test-scan.yml workflow file. - Added commands to list the contents of directories for debugging purposes. - Created a new directory called "reports" to store the merged test reports. - Moved the unit test coverage report to the "reports" directory. - Moved the integration test coverage reports for different databases (mssql, mysql, oracle, postgresql) to the "reports" directory. - Moved the aggregated coverage reports for different databases to the "reports" directory. - Updated the commands to use the correct paths for moving the files. - Added comments to explain the purpose of each command. * chore(sonar-test-scan.yml): add ls command to list files in reports directory for debugging purposes * chore(sonar-test-scan.yml): update download-artifact action to version 3 for unit and integration test reports chore(sonar-test-scan.yml): remove if_no_artifact_found option from download-artifact action for integration test reports chore(sonar-test-scan.yml): update download-artifact action for integration test reports to use correct artifact names and paths chore(sonar-test-scan.yml): remove if_no_artifact_found option from download-artifact action for postgresql integration test report chore(sonar-test-scan.yml): remove unnecessary whitespace * chore(sonar-test-scan.yml): add a sleep step to wait for test reports before continuing the workflow execution chore(sonar-test-scan.yml): update comment to disable shallow clones for better analysis relevancy chore(sonar-test-scan.yml): add step to set up JDK for the workflow execution * chore(sonar-test-scan.yml): update file paths for jacoco coverage reports The file paths for the jacoco coverage reports have been updated in the sonar-test-scan.yml workflow file. The following changes were made: - The unit test coverage report file path has been changed from "unit-tests/liquibase-pro-coverage/target/aggregate.exec" to "unit-tests/liquibase-pro-coverage/target/jacoco.exec" and it has been moved to the "./reports/jacoco-unit.exec" directory. - The integration test coverage report file paths for mssql and mysql have been updated from "integration-tests/mssql/liquibase-pro-integration-tests/target/jacoco.exec" and "integration-tests/mysql/liquibase-pro-integration-tests/target/jacoco.exec" respectively. * fix(sonar-test-scan.yml): fix file path for moving coverage reports to the correct directory feat(sonar-test-scan.yml): add step to save Jacoco mixed results as an artifact for further analysis * chore(sonar-test-scan.yml): remove unnecessary ls command in the workflow file * fix(sonar-test-scan.yml): remove unnecessary directory creation step to simplify the workflow The directory creation step was creating an unnecessary directory in the workflow. This step has been removed to simplify the workflow and improve readability. * chore(sonar-test-scan.yml): update file paths for aggregated coverage reports to match new directory structure The file paths for the aggregated coverage reports in the integration tests have been updated to match the new directory structure. The "aggregate.exec" files are now moved to the "target" directory instead of the "reports" directory. This change ensures that the coverage reports are generated in the correct location for each database type (mssql, mysql, oracle, postgresql). * fix(sonar-test-scan.yml): update file paths for jacoco coverage reports to match the new directory structure feat(sonar-test-scan.yml): add steps to download jacoco cli, move it to the appropriate directory, and generate coverage report using jacoco cli * chore(sonar-test-scan.yml): reorganize build steps for better readability and maintainability fix(sonar-test-scan.yml): move 'mvn package' command before 'mvn jacoco:merge@cli-merge-results' to ensure correct coverage results feat(sonar-test-scan.yml): add liquibase version parameter to 'mvn package' command for better control over liquibase version used * refactor(sonar-test-scan.yml): simplify file paths for moving jacoco coverage files The file paths for moving jacoco coverage files were simplified to improve readability and maintainability. * fix(sonar-test-scan.yml): update jacoco download link to use the official GitHub release URL fix(sonar-test-scan.yml): fix the path to move jacococli.jar to the correct location * fix(sonar-test-scan.yml): fix typo in the file path for jacococli.jar fix(sonar-test-scan.yml): move the 'cd' command before merging jacoco results to the correct directory * fix(sonar-test-scan.yml): fix the path to jacococli.jar in the java command to generate Jacoco report * chore(sonar-test-scan.yml): add missing cd command to navigate to the target directory before running jacococli.jar command * fix(sonar-test-scan.yml): remove redundant file path in java -jar command to fix jacoco report generation The file path "./target" was duplicated in the java -jar command, causing the jacoco report generation to fail. This commit removes the redundant file path to fix the issue. * fix(sonar-test-scan.yml): fix the path to classfiles in the jacoco report command The path to the classfiles in the jacoco report command was incorrect. It was pointing to "../../pro/target/" instead of "../../pro/target/classes/". This fix corrects the path to ensure that the jacoco report command can find the necessary classfiles for generating the coverage report. * chore(sonar-test-scan.yml): downgrade Java version from 17 to 8 and change distribution from 'temurin' to 'adopt' for compatibility reasons * fix(sonar-test-scan.yml): fix classfiles path in Jacoco report command to point to the correct directory * chore(sonar-test-scan.yml): add optional inputs for testedClassesModuleName and integrationTestsModuleName to improve flexibility fix(sonar-test-scan.yml): update file paths to use the new inputs for testedClassesModuleName and integrationTestsModuleName fix(sonar-test-scan.yml): update artifact name for jacoco mixed report to improve clarity * chore(sonar-test-scan.yml): update Java version and distribution to use Java 17 with Temurin chore(sonar-test-scan.yml): refactor file moving logic to handle different integration test directories chore(sonar-test-scan.yml): remove unnecessary -T flag from Maven command * fix(sonar-test-scan.yml): remove redundant line that duplicates the mvn command The redundant line `mvn -B verify -P 'unit,!run-proguard' -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT` is removed to avoid duplication and improve code readability. * chore(sonar-test-scan.yml): update action-download-artifact version to v2.27.0 for all artifact downloads chore(sonar-test-scan.yml): add 'if_no_artifact_found: warn' option to all artifact downloads to handle missing artifacts gracefully chore(sonar-test-scan.yml): remove unnecessary whitespace * chore(sonar-test-scan.yml): install mvnd and use it instead of mvn for build and analysis steps * chore(sonar-test-scan.yml): add workflow and run_id parameters to download test reports The workflow file 'sonar-test-scan.yml' was modified to include the 'workflow' and 'run_id' parameters in the steps that download test reports. This change allows the download step to be associated with the correct workflow run and ensures that the test reports are downloaded from the correct workflow run. * chore(sonar-test-scan.yml): update download-artifact action to version 3 for unit and integration tests reports chore(sonar-test-scan.yml): remove unnecessary if_no_artifact_found option from download-artifact actions chore(sonar-test-scan.yml): remove unnecessary workflow and run_id options from download-artifact actions chore(sonar-test-scan.yml): add if: always() condition to download-artifact actions for integration tests reports chore(sonar-test-scan.yml): add if: always() condition to cache SonarCloud packages action chore(sonar-test-scan.yml): add if: always() condition to merge integration and unit tests reports step chore(sonar-test-scan.yml): add if: always() condition to save Jacoco Mixed Results step chore(sonar-test-scan.yml): add if: always() condition to Sonar Scan step * chore(sonar-test-scan.yml): remove unnecessary sleep command in the workflow chore(sonar-test-scan.yml): remove unused step to wait for test reports in the workflow * chore(sonar-test-scan.yml): remove installation of mvnd and update Maven commands to use 'mvn' command instead of './mvnd/bin/mvnd' The installation of mvnd has been removed as it is no longer needed. The Maven commands have been updated to use the 'mvn' command instead of './mvnd/bin/mvnd' for consistency and to align with standard Maven usage. * chore(sonar-test-scan.yml): remove unused integrationTestsModuleName input variable refactor(sonar-test-scan.yml): simplify file path for moving jacoco.exec files in integration tests * fix(sonar-test-scan.yml): add 'package' phase to the Maven command to ensure the project is built before running SonarQube analysis * fix(sonar-test-scan.yml): update file path for moving jacoco.exec file to improve accuracy and consistency * fix(sonar-test-scan.yml): update file path for moving jacoco.exec file to improve accuracy and consistency * chore(sonar-test-scan.yml): remove unnecessary artifact saving step for Jacoco mixed results chore(sonar-test-scan.yml): rename sonar-push job to sonar-scan for better clarity and consistency * fix(sonar-test-scan.yml): change sonar.login to sonar.token to align with SonarQube API changes and improve security The SonarQube API has changed and now requires the use of the `sonar.token` parameter instead of `sonar.login` for authentication. This change ensures that the correct parameter is used and improves the security of the SonarQube integration. * chore(sonar-test-scan.yml): add default value for sonar.coverage.exclusions to exclude test files and pom.xml from coverage analysis * chore(sonar-test-scan.yml): remove unused coverageModuleName input variable chore(sonar-test-scan.yml): update paths for merging and moving coverage reports to match new project structure chore(sonar-test-scan.yml): update paths for jacococli.jar and classfiles in jacoco:merge step to match new project structure * chore(sonar-test-scan.yml): download and move jacoco.exec files for h2, hsqldb, and mariadb integration tests to the appropriate directories The changes were made to the sonar-test-scan.yml workflow file. The following changes were made: - Added a step to download the h2 integration tests report artifact and move the jacoco.exec file to the integration-tests/h2 directory. - Added a step to download the hsqldb integration tests report artifact and move the jacoco.exec file to the integration-tests/hsqldb directory. - Added a step to download the mariadb integration tests report artifact and move the jacoco.exec file to the integration-tests/mariadb directory. These changes were made to ensure that the jacoco.exec files for the h2, hsqldb, and mariadb integration tests are available in the correct directories for further processing. * chore(sonar-test-scan.yml): add support for downloading and processing sqlite integration test reports chore(sonar-test-scan.yml): move jacoco.exec file from sqlite integration test report to liquibase-coverage target directory * chore(sonar-test-scan.yml): add step to download firebird integration tests report artifact chore(sonar-test-scan.yml): move firebird jacoco.exec file to target directory for coverage analysis * chore(create-release.yml): update sonar-push.yml version to v0.4.3 for improved functionality chore(extension-attach-artifact-release.yml): update script file versions to v0.4.3 for improved functionality chore(extension-release-published.yml): update extension-release-prepare.yml version to v0.4.3 for improved functionality chore(os-extension-test.yml): update sonar-pull-request.yml version to v0.4.3 for improved functionality chore(package-deb.yml): update file versions to v0.4.3 for improved functionality chore(pom-release-published.yml): update extension-release-prepare.yml version to v0.4.3 for improved functionality chore(pro-extension-test.yml): update sonar-pull-request.yml version to v0.4.3 for improved functionality * chore(sonar-test-scan.yml): refactor Maven command to improve readability and remove unnecessary step The Maven command in the workflow file has been refactored to improve readability and remove an unnecessary step. The `mvn clean package` command has been separated from the `mvn sonar:sonar` command. This change allows for better organization and clarity in the workflow file. * chore(sonar-test-scan.yml): update Maven command to include package phase and exclude unnecessary profiles The Maven command in the workflow file has been updated to include the package phase and exclude unnecessary profiles. This change ensures that the project is built and packaged before running the SonarQube analysis. The profiles '!unit', '!integration-test', '!testAll', and '!run-proguard' have been added to exclude unnecessary tests and proguard execution. This improves the efficiency of the workflow and reduces the time required for the SonarQube scan. * chore(sonar-test-scan.yml): update Maven command to exclude unit and integration tests, and remove unused profiles The Maven command in the Sonar test scan workflow has been updated to exclude unit and integration tests. The profiles '!unit' and '!integration-test' have been removed from the command. Additionally, the 'testAll' profile has been removed as it is not being used. The 'run-proguard' profile is still included. This change improves the accuracy of the Sonar analysis by excluding unnecessary tests. The updated command is as follows: ``` mvn -B package sonar:sonar -P 'no-test,!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ -Dsonar.token=$SONAR_TOKEN ``` * chore(sonar-test-scan.yml): remove unnecessary whitespace and improve readability of the Maven command * feat(sonar-test-scan.yml): add support for specifying database platforms to be tested - Add `dbPlatforms` input parameter to specify the database platforms to be tested - Set default value of `dbPlatforms` to include `mssql`, `mysql`, `oracle`, `postgresql`, `hsqldb` - Modify the download steps for integration test reports to conditionally download based on the specified `dbPlatforms` - Add conditional checks for each database platform in the download steps to download the corresponding integration test report * fix(sonar-test-scan.yml): change 'mvn package' command to 'mvn verify' to include test execution in the build process * fix(sonar-test-scan.yml): fix maven command to skip tests during SonarQube scan The maven command in the SonarQube scan workflow was modified to skip tests by adding the `-DskipTests=true` flag. This change was made to improve the efficiency of the workflow and reduce the overall execution time. * chore(sonar-test-scan.yml): reformat mvn command to improve readability and maintainability * chore(sonar-test-scan.yml): remove unnecessary parallel execution flag (-T 1C) to improve build performance chore(sonar-test-scan.yml): remove unused maven argument (-DskipTests=true) as it is redundant with -P '!run-proguard' profile * chore(sonar-test-scan.yml): simplify Maven command by skipping integration tests chore(sonar-test-scan.yml): update jacoco version to 0.8.10 for code coverage analysis * chore(sonar-test-scan.yml): refactor Sonar Scan job to separate branch scan and PR scan The Sonar Scan job has been refactored into two separate jobs: Sonar Branch Scan and Sonar PR Scan. Sonar Branch Scan: - The Sonar Branch Scan job will run when the workflow is triggered by a push event on a branch (not a pull request). - It will perform a Sonar scan on the branch. - The Sonar scan will wait for the quality gate to pass before completing. - The Sonar scan will be performed on the organization's SonarCloud instance. - The Sonar scan will use the Jacoco coverage plugin for Java code coverage. - The Sonar scan will use the git SCM provider. - The Sonar scan will use the AWS region "us-east-1". Sonar PR Scan: - The Sonar PR Scan job will run when the workflow is triggered by a pull request event. - It will perform a Sonar scan on the pull request. - The Sonar scan will use the Jacoco coverage plugin for Java code coverage. - The Sonar scan will use the provided pull request information. - The Sonar scan will use the git SCM provider. - The Sonar scan will use the provided Sonar token. - The Sonar scan will use the provided Liquibase Pro license key. These changes improve the clarity and separation of the Sonar scan jobs in the workflow. * fix(sonar-test-scan.yml): exclude running proguard during the Maven verify phase to improve build performance and stability * fix(sonar-test-scan.yml): remove unnecessary 'verify' phase from Maven command to speed up the build process --- .github/workflows/sonar-test-scan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index 69bfa9f2..ccfec94f 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -246,7 +246,7 @@ jobs: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} run: | - mvn -B verify sonar:sonar -P '!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ + mvn -B sonar:sonar -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ -Dsonar.token=$SONAR_TOKEN \ From 0f80cbe8be34165cf5a9f1b8485f38325cd5dff1 Mon Sep 17 00:00:00 2001 From: Alejandro Alvarez Date: Wed, 20 Sep 2023 14:01:53 +0200 Subject: [PATCH 140/147] Dat 10564 (#78) * fix(sonar-test-scan.yml): add installation of sqlcmd to setup docker step for MacOS compatibility refactor(sonar-test-scan.yml): remove installation of sqlplus for integration tests as it is no longer needed refactor(sonar-test-scan.yml): remove unnecessary environment variable exports and sourcing of bash profile in SonarCloud step * chore(sonar-test-scan.yml): update runs-on field from macos-latest-xl to ubuntu-22.04 for better compatibility feat(sonar-test-scan.yml): update mvnd installation process to download and unzip the latest release from the official Apache Maven mvnd repository feat(sonar-test-scan.yml): add installation steps for sqlplus and instantclient for integration tests chore(sonar-test-scan.yml): remove unnecessary setup steps for docker and sqlcmd * chore(sonar-test-scan.yml): add support for downloading and merging integration test reports feat(sonar-test-scan.yml): add support for downloading unit test report artifact feat(sonar-test-scan.yml): add support for downloading integration test report artifacts for different databases (mssql, mysql, oracle, postgresql) chore(sonar-test-scan.yml): remove unnecessary step to install mvnd chore(sonar-test-scan.yml): remove unnecessary step to install sqlplus for integration tests chore(sonar-test-scan.yml): cache SonarCloud packages to improve build performance chore(sonar-test-scan.yml): merge integration and unit tests reports before running Sonar Scan * chore(sonar-test-scan.yml): add optional coverageModuleName input to specify the name of the coverage module fix(sonar-test-scan.yml): fix the directory change command to use the coverageModuleName input value instead of a hardcoded value * fix(sonar-test-scan.yml): fix typo in mvn command to merge integration and unit tests reports feat(sonar-test-scan.yml): add separate mvn command to merge jacoco results for better clarity and maintainability * chore(sonar-test-scan.yml): update Maven settings.xml action to version v21 for compatibility and potential bug fixes * fix(sonar-test-scan.yml): remove duplicate 'mvn' command in the 'Merge integration and unit tests reports' step * fix(sonar-test-scan.yml): update download-artifact action to use dawidd6/action-download-artifact@v2.27.0 to fix compatibility issue feat(sonar-test-scan.yml): add if_no_artifact_found: warn option to download-artifact actions to prevent failure when no artifact is found refactor(sonar-test-scan.yml): update download artifact names to use dynamic inputs for integration test reports to improve flexibility and reusability refactor(sonar-test-scan.yml): update download artifact names to use dynamic inputs for integration test reports to improve flexibility and reusability * chore(sonar-test-scan.yml): update maven-settings-xml-action to v20 for Maven settings.xml setup chore(sonar-test-scan.yml): update docker/login-action to v2 for GitHub Container Registry login chore(sonar-test-scan.yml): update action-download-artifact to v2.27.0 for downloading integration test reports chore(sonar-test-scan.yml): add installation steps for sqlplus and instantclient for Integration tests chore(sonar-test-scan.yml): remove merge integration and unit tests reports step chore(sonar-test-scan.yml): update mvn command to include ORACLE_HOME, PATH, SQLPATH, NLS_LANG, and LD_LIBRARY_PATH environment variables for Oracle integration tests * chore(sonar-test-scan.yml): add step to save test results as artifacts if archive_test_results input is true * chore(sonar-test-scan.yml): update Maven settings.xml action to version v21 for compatibility and potential bug fixes * chore(sonar-test-scan.yml): remove unnecessary if condition for saving test results artifact * chore(sonar-test-scan.yml): remove matrix variable from liquibase-integration-test-results artifact name to simplify naming convention * chore(sonar-test-scan.yml): add optional inputs for unit test report artifact name, integration test report artifact name, and coverage module name to improve flexibility and customization fix(sonar-test-scan.yml): remove unnecessary step to install mvnd feat(sonar-test-scan.yml): download unit test report artifact and integration test report artifacts for mssql, mysql, oracle, and postgresql databases feat(sonar-test-scan.yml): merge integration and unit tests reports using jacoco feat(sonar-test-scan.yml): add step to cache SonarCloud packages for faster subsequent runs feat(sonar-test-scan.yml): add step to perform Sonar Scan with necessary environment variables and configurations chore(sonar-test-scan.yml): remove unnecessary step to save test results as artifacts * fix(sonar-test-scan.yml): fix duplicate '-DskipTests' flag in the Maven command The duplicate '-DskipTests' flag in the Maven command was causing an error. Removed the duplicate flag to fix the issue. * fix(sonar-test-scan.yml): remove duplicate '-DskipTests' flag in the Maven command to avoid redundancy and improve readability * chore(sonar-test-scan.yml): update java-version from 11 to 17 to use the latest version of Java for the Sonar test scan workflow * chore(sonar-test-scan.yml): add specific paths for downloaded artifacts to improve organization and readability * chore(sonar-test-scan.yml): improve merging and moving of test reports The changes in this commit improve the merging and moving of test reports in the sonar-test-scan.yml workflow file. - Added commands to list the contents of directories for debugging purposes. - Created a new directory called "reports" to store the merged test reports. - Moved the unit test coverage report to the "reports" directory. - Moved the integration test coverage reports for different databases (mssql, mysql, oracle, postgresql) to the "reports" directory. - Moved the aggregated coverage reports for different databases to the "reports" directory. - Updated the commands to use the correct paths for moving the files. - Added comments to explain the purpose of each command. * chore(sonar-test-scan.yml): add ls command to list files in reports directory for debugging purposes * chore(sonar-test-scan.yml): update download-artifact action to version 3 for unit and integration test reports chore(sonar-test-scan.yml): remove if_no_artifact_found option from download-artifact action for integration test reports chore(sonar-test-scan.yml): update download-artifact action for integration test reports to use correct artifact names and paths chore(sonar-test-scan.yml): remove if_no_artifact_found option from download-artifact action for postgresql integration test report chore(sonar-test-scan.yml): remove unnecessary whitespace * chore(sonar-test-scan.yml): add a sleep step to wait for test reports before continuing the workflow execution chore(sonar-test-scan.yml): update comment to disable shallow clones for better analysis relevancy chore(sonar-test-scan.yml): add step to set up JDK for the workflow execution * chore(sonar-test-scan.yml): update file paths for jacoco coverage reports The file paths for the jacoco coverage reports have been updated in the sonar-test-scan.yml workflow file. The following changes were made: - The unit test coverage report file path has been changed from "unit-tests/liquibase-pro-coverage/target/aggregate.exec" to "unit-tests/liquibase-pro-coverage/target/jacoco.exec" and it has been moved to the "./reports/jacoco-unit.exec" directory. - The integration test coverage report file paths for mssql and mysql have been updated from "integration-tests/mssql/liquibase-pro-integration-tests/target/jacoco.exec" and "integration-tests/mysql/liquibase-pro-integration-tests/target/jacoco.exec" respectively. * fix(sonar-test-scan.yml): fix file path for moving coverage reports to the correct directory feat(sonar-test-scan.yml): add step to save Jacoco mixed results as an artifact for further analysis * chore(sonar-test-scan.yml): remove unnecessary ls command in the workflow file * fix(sonar-test-scan.yml): remove unnecessary directory creation step to simplify the workflow The directory creation step was creating an unnecessary directory in the workflow. This step has been removed to simplify the workflow and improve readability. * chore(sonar-test-scan.yml): update file paths for aggregated coverage reports to match new directory structure The file paths for the aggregated coverage reports in the integration tests have been updated to match the new directory structure. The "aggregate.exec" files are now moved to the "target" directory instead of the "reports" directory. This change ensures that the coverage reports are generated in the correct location for each database type (mssql, mysql, oracle, postgresql). * fix(sonar-test-scan.yml): update file paths for jacoco coverage reports to match the new directory structure feat(sonar-test-scan.yml): add steps to download jacoco cli, move it to the appropriate directory, and generate coverage report using jacoco cli * chore(sonar-test-scan.yml): reorganize build steps for better readability and maintainability fix(sonar-test-scan.yml): move 'mvn package' command before 'mvn jacoco:merge@cli-merge-results' to ensure correct coverage results feat(sonar-test-scan.yml): add liquibase version parameter to 'mvn package' command for better control over liquibase version used * refactor(sonar-test-scan.yml): simplify file paths for moving jacoco coverage files The file paths for moving jacoco coverage files were simplified to improve readability and maintainability. * fix(sonar-test-scan.yml): update jacoco download link to use the official GitHub release URL fix(sonar-test-scan.yml): fix the path to move jacococli.jar to the correct location * fix(sonar-test-scan.yml): fix typo in the file path for jacococli.jar fix(sonar-test-scan.yml): move the 'cd' command before merging jacoco results to the correct directory * fix(sonar-test-scan.yml): fix the path to jacococli.jar in the java command to generate Jacoco report * chore(sonar-test-scan.yml): add missing cd command to navigate to the target directory before running jacococli.jar command * fix(sonar-test-scan.yml): remove redundant file path in java -jar command to fix jacoco report generation The file path "./target" was duplicated in the java -jar command, causing the jacoco report generation to fail. This commit removes the redundant file path to fix the issue. * fix(sonar-test-scan.yml): fix the path to classfiles in the jacoco report command The path to the classfiles in the jacoco report command was incorrect. It was pointing to "../../pro/target/" instead of "../../pro/target/classes/". This fix corrects the path to ensure that the jacoco report command can find the necessary classfiles for generating the coverage report. * chore(sonar-test-scan.yml): downgrade Java version from 17 to 8 and change distribution from 'temurin' to 'adopt' for compatibility reasons * fix(sonar-test-scan.yml): fix classfiles path in Jacoco report command to point to the correct directory * chore(sonar-test-scan.yml): add optional inputs for testedClassesModuleName and integrationTestsModuleName to improve flexibility fix(sonar-test-scan.yml): update file paths to use the new inputs for testedClassesModuleName and integrationTestsModuleName fix(sonar-test-scan.yml): update artifact name for jacoco mixed report to improve clarity * chore(sonar-test-scan.yml): update Java version and distribution to use Java 17 with Temurin chore(sonar-test-scan.yml): refactor file moving logic to handle different integration test directories chore(sonar-test-scan.yml): remove unnecessary -T flag from Maven command * fix(sonar-test-scan.yml): remove redundant line that duplicates the mvn command The redundant line `mvn -B verify -P 'unit,!run-proguard' -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT` is removed to avoid duplication and improve code readability. * chore(sonar-test-scan.yml): update action-download-artifact version to v2.27.0 for all artifact downloads chore(sonar-test-scan.yml): add 'if_no_artifact_found: warn' option to all artifact downloads to handle missing artifacts gracefully chore(sonar-test-scan.yml): remove unnecessary whitespace * chore(sonar-test-scan.yml): install mvnd and use it instead of mvn for build and analysis steps * chore(sonar-test-scan.yml): add workflow and run_id parameters to download test reports The workflow file 'sonar-test-scan.yml' was modified to include the 'workflow' and 'run_id' parameters in the steps that download test reports. This change allows the download step to be associated with the correct workflow run and ensures that the test reports are downloaded from the correct workflow run. * chore(sonar-test-scan.yml): update download-artifact action to version 3 for unit and integration tests reports chore(sonar-test-scan.yml): remove unnecessary if_no_artifact_found option from download-artifact actions chore(sonar-test-scan.yml): remove unnecessary workflow and run_id options from download-artifact actions chore(sonar-test-scan.yml): add if: always() condition to download-artifact actions for integration tests reports chore(sonar-test-scan.yml): add if: always() condition to cache SonarCloud packages action chore(sonar-test-scan.yml): add if: always() condition to merge integration and unit tests reports step chore(sonar-test-scan.yml): add if: always() condition to save Jacoco Mixed Results step chore(sonar-test-scan.yml): add if: always() condition to Sonar Scan step * chore(sonar-test-scan.yml): remove unnecessary sleep command in the workflow chore(sonar-test-scan.yml): remove unused step to wait for test reports in the workflow * chore(sonar-test-scan.yml): remove installation of mvnd and update Maven commands to use 'mvn' command instead of './mvnd/bin/mvnd' The installation of mvnd has been removed as it is no longer needed. The Maven commands have been updated to use the 'mvn' command instead of './mvnd/bin/mvnd' for consistency and to align with standard Maven usage. * chore(sonar-test-scan.yml): remove unused integrationTestsModuleName input variable refactor(sonar-test-scan.yml): simplify file path for moving jacoco.exec files in integration tests * fix(sonar-test-scan.yml): add 'package' phase to the Maven command to ensure the project is built before running SonarQube analysis * fix(sonar-test-scan.yml): update file path for moving jacoco.exec file to improve accuracy and consistency * fix(sonar-test-scan.yml): update file path for moving jacoco.exec file to improve accuracy and consistency * chore(sonar-test-scan.yml): remove unnecessary artifact saving step for Jacoco mixed results chore(sonar-test-scan.yml): rename sonar-push job to sonar-scan for better clarity and consistency * fix(sonar-test-scan.yml): change sonar.login to sonar.token to align with SonarQube API changes and improve security The SonarQube API has changed and now requires the use of the `sonar.token` parameter instead of `sonar.login` for authentication. This change ensures that the correct parameter is used and improves the security of the SonarQube integration. * chore(sonar-test-scan.yml): add default value for sonar.coverage.exclusions to exclude test files and pom.xml from coverage analysis * chore(sonar-test-scan.yml): remove unused coverageModuleName input variable chore(sonar-test-scan.yml): update paths for merging and moving coverage reports to match new project structure chore(sonar-test-scan.yml): update paths for jacococli.jar and classfiles in jacoco:merge step to match new project structure * chore(sonar-test-scan.yml): download and move jacoco.exec files for h2, hsqldb, and mariadb integration tests to the appropriate directories The changes were made to the sonar-test-scan.yml workflow file. The following changes were made: - Added a step to download the h2 integration tests report artifact and move the jacoco.exec file to the integration-tests/h2 directory. - Added a step to download the hsqldb integration tests report artifact and move the jacoco.exec file to the integration-tests/hsqldb directory. - Added a step to download the mariadb integration tests report artifact and move the jacoco.exec file to the integration-tests/mariadb directory. These changes were made to ensure that the jacoco.exec files for the h2, hsqldb, and mariadb integration tests are available in the correct directories for further processing. * chore(sonar-test-scan.yml): add support for downloading and processing sqlite integration test reports chore(sonar-test-scan.yml): move jacoco.exec file from sqlite integration test report to liquibase-coverage target directory * chore(sonar-test-scan.yml): add step to download firebird integration tests report artifact chore(sonar-test-scan.yml): move firebird jacoco.exec file to target directory for coverage analysis * chore(create-release.yml): update sonar-push.yml version to v0.4.3 for improved functionality chore(extension-attach-artifact-release.yml): update script file versions to v0.4.3 for improved functionality chore(extension-release-published.yml): update extension-release-prepare.yml version to v0.4.3 for improved functionality chore(os-extension-test.yml): update sonar-pull-request.yml version to v0.4.3 for improved functionality chore(package-deb.yml): update file versions to v0.4.3 for improved functionality chore(pom-release-published.yml): update extension-release-prepare.yml version to v0.4.3 for improved functionality chore(pro-extension-test.yml): update sonar-pull-request.yml version to v0.4.3 for improved functionality * chore(sonar-test-scan.yml): refactor Maven command to improve readability and remove unnecessary step The Maven command in the workflow file has been refactored to improve readability and remove an unnecessary step. The `mvn clean package` command has been separated from the `mvn sonar:sonar` command. This change allows for better organization and clarity in the workflow file. * chore(sonar-test-scan.yml): update Maven command to include package phase and exclude unnecessary profiles The Maven command in the workflow file has been updated to include the package phase and exclude unnecessary profiles. This change ensures that the project is built and packaged before running the SonarQube analysis. The profiles '!unit', '!integration-test', '!testAll', and '!run-proguard' have been added to exclude unnecessary tests and proguard execution. This improves the efficiency of the workflow and reduces the time required for the SonarQube scan. * chore(sonar-test-scan.yml): update Maven command to exclude unit and integration tests, and remove unused profiles The Maven command in the Sonar test scan workflow has been updated to exclude unit and integration tests. The profiles '!unit' and '!integration-test' have been removed from the command. Additionally, the 'testAll' profile has been removed as it is not being used. The 'run-proguard' profile is still included. This change improves the accuracy of the Sonar analysis by excluding unnecessary tests. The updated command is as follows: ``` mvn -B package sonar:sonar -P 'no-test,!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ -Dsonar.token=$SONAR_TOKEN ``` * chore(sonar-test-scan.yml): remove unnecessary whitespace and improve readability of the Maven command * feat(sonar-test-scan.yml): add support for specifying database platforms to be tested - Add `dbPlatforms` input parameter to specify the database platforms to be tested - Set default value of `dbPlatforms` to include `mssql`, `mysql`, `oracle`, `postgresql`, `hsqldb` - Modify the download steps for integration test reports to conditionally download based on the specified `dbPlatforms` - Add conditional checks for each database platform in the download steps to download the corresponding integration test report * fix(sonar-test-scan.yml): change 'mvn package' command to 'mvn verify' to include test execution in the build process * fix(sonar-test-scan.yml): fix maven command to skip tests during SonarQube scan The maven command in the SonarQube scan workflow was modified to skip tests by adding the `-DskipTests=true` flag. This change was made to improve the efficiency of the workflow and reduce the overall execution time. * chore(sonar-test-scan.yml): reformat mvn command to improve readability and maintainability * chore(sonar-test-scan.yml): remove unnecessary parallel execution flag (-T 1C) to improve build performance chore(sonar-test-scan.yml): remove unused maven argument (-DskipTests=true) as it is redundant with -P '!run-proguard' profile * chore(sonar-test-scan.yml): simplify Maven command by skipping integration tests chore(sonar-test-scan.yml): update jacoco version to 0.8.10 for code coverage analysis * chore(sonar-test-scan.yml): refactor Sonar Scan job to separate branch scan and PR scan The Sonar Scan job has been refactored into two separate jobs: Sonar Branch Scan and Sonar PR Scan. Sonar Branch Scan: - The Sonar Branch Scan job will run when the workflow is triggered by a push event on a branch (not a pull request). - It will perform a Sonar scan on the branch. - The Sonar scan will wait for the quality gate to pass before completing. - The Sonar scan will be performed on the organization's SonarCloud instance. - The Sonar scan will use the Jacoco coverage plugin for Java code coverage. - The Sonar scan will use the git SCM provider. - The Sonar scan will use the AWS region "us-east-1". Sonar PR Scan: - The Sonar PR Scan job will run when the workflow is triggered by a pull request event. - It will perform a Sonar scan on the pull request. - The Sonar scan will use the Jacoco coverage plugin for Java code coverage. - The Sonar scan will use the provided pull request information. - The Sonar scan will use the git SCM provider. - The Sonar scan will use the provided Sonar token. - The Sonar scan will use the provided Liquibase Pro license key. These changes improve the clarity and separation of the Sonar scan jobs in the workflow. * fix(sonar-test-scan.yml): exclude running proguard during the Maven verify phase to improve build performance and stability * fix(sonar-test-scan.yml): remove unnecessary 'verify' phase from Maven command to speed up the build process * fix(sonar-test-scan.yml): change Maven command from 'mvn -B sonar:sonar' to 'mvn -B verify sonar:sonar' to include the 'verify' phase before running SonarQube analysis --- .github/workflows/sonar-test-scan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index ccfec94f..c23d85f5 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -246,7 +246,7 @@ jobs: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} run: | - mvn -B sonar:sonar -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ + mvn -B verify sonar:sonar -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ -Dsonar.token=$SONAR_TOKEN \ From 871793d0a65d26017bc841f08b706b5ad0da7449 Mon Sep 17 00:00:00 2001 From: Alejandro Alvarez Date: Wed, 20 Sep 2023 14:18:59 +0200 Subject: [PATCH 141/147] Dat 10564 (#79) * fix(sonar-test-scan.yml): add installation of sqlcmd to setup docker step for MacOS compatibility refactor(sonar-test-scan.yml): remove installation of sqlplus for integration tests as it is no longer needed refactor(sonar-test-scan.yml): remove unnecessary environment variable exports and sourcing of bash profile in SonarCloud step * chore(sonar-test-scan.yml): update runs-on field from macos-latest-xl to ubuntu-22.04 for better compatibility feat(sonar-test-scan.yml): update mvnd installation process to download and unzip the latest release from the official Apache Maven mvnd repository feat(sonar-test-scan.yml): add installation steps for sqlplus and instantclient for integration tests chore(sonar-test-scan.yml): remove unnecessary setup steps for docker and sqlcmd * chore(sonar-test-scan.yml): add support for downloading and merging integration test reports feat(sonar-test-scan.yml): add support for downloading unit test report artifact feat(sonar-test-scan.yml): add support for downloading integration test report artifacts for different databases (mssql, mysql, oracle, postgresql) chore(sonar-test-scan.yml): remove unnecessary step to install mvnd chore(sonar-test-scan.yml): remove unnecessary step to install sqlplus for integration tests chore(sonar-test-scan.yml): cache SonarCloud packages to improve build performance chore(sonar-test-scan.yml): merge integration and unit tests reports before running Sonar Scan * chore(sonar-test-scan.yml): add optional coverageModuleName input to specify the name of the coverage module fix(sonar-test-scan.yml): fix the directory change command to use the coverageModuleName input value instead of a hardcoded value * fix(sonar-test-scan.yml): fix typo in mvn command to merge integration and unit tests reports feat(sonar-test-scan.yml): add separate mvn command to merge jacoco results for better clarity and maintainability * chore(sonar-test-scan.yml): update Maven settings.xml action to version v21 for compatibility and potential bug fixes * fix(sonar-test-scan.yml): remove duplicate 'mvn' command in the 'Merge integration and unit tests reports' step * fix(sonar-test-scan.yml): update download-artifact action to use dawidd6/action-download-artifact@v2.27.0 to fix compatibility issue feat(sonar-test-scan.yml): add if_no_artifact_found: warn option to download-artifact actions to prevent failure when no artifact is found refactor(sonar-test-scan.yml): update download artifact names to use dynamic inputs for integration test reports to improve flexibility and reusability refactor(sonar-test-scan.yml): update download artifact names to use dynamic inputs for integration test reports to improve flexibility and reusability * chore(sonar-test-scan.yml): update maven-settings-xml-action to v20 for Maven settings.xml setup chore(sonar-test-scan.yml): update docker/login-action to v2 for GitHub Container Registry login chore(sonar-test-scan.yml): update action-download-artifact to v2.27.0 for downloading integration test reports chore(sonar-test-scan.yml): add installation steps for sqlplus and instantclient for Integration tests chore(sonar-test-scan.yml): remove merge integration and unit tests reports step chore(sonar-test-scan.yml): update mvn command to include ORACLE_HOME, PATH, SQLPATH, NLS_LANG, and LD_LIBRARY_PATH environment variables for Oracle integration tests * chore(sonar-test-scan.yml): add step to save test results as artifacts if archive_test_results input is true * chore(sonar-test-scan.yml): update Maven settings.xml action to version v21 for compatibility and potential bug fixes * chore(sonar-test-scan.yml): remove unnecessary if condition for saving test results artifact * chore(sonar-test-scan.yml): remove matrix variable from liquibase-integration-test-results artifact name to simplify naming convention * chore(sonar-test-scan.yml): add optional inputs for unit test report artifact name, integration test report artifact name, and coverage module name to improve flexibility and customization fix(sonar-test-scan.yml): remove unnecessary step to install mvnd feat(sonar-test-scan.yml): download unit test report artifact and integration test report artifacts for mssql, mysql, oracle, and postgresql databases feat(sonar-test-scan.yml): merge integration and unit tests reports using jacoco feat(sonar-test-scan.yml): add step to cache SonarCloud packages for faster subsequent runs feat(sonar-test-scan.yml): add step to perform Sonar Scan with necessary environment variables and configurations chore(sonar-test-scan.yml): remove unnecessary step to save test results as artifacts * fix(sonar-test-scan.yml): fix duplicate '-DskipTests' flag in the Maven command The duplicate '-DskipTests' flag in the Maven command was causing an error. Removed the duplicate flag to fix the issue. * fix(sonar-test-scan.yml): remove duplicate '-DskipTests' flag in the Maven command to avoid redundancy and improve readability * chore(sonar-test-scan.yml): update java-version from 11 to 17 to use the latest version of Java for the Sonar test scan workflow * chore(sonar-test-scan.yml): add specific paths for downloaded artifacts to improve organization and readability * chore(sonar-test-scan.yml): improve merging and moving of test reports The changes in this commit improve the merging and moving of test reports in the sonar-test-scan.yml workflow file. - Added commands to list the contents of directories for debugging purposes. - Created a new directory called "reports" to store the merged test reports. - Moved the unit test coverage report to the "reports" directory. - Moved the integration test coverage reports for different databases (mssql, mysql, oracle, postgresql) to the "reports" directory. - Moved the aggregated coverage reports for different databases to the "reports" directory. - Updated the commands to use the correct paths for moving the files. - Added comments to explain the purpose of each command. * chore(sonar-test-scan.yml): add ls command to list files in reports directory for debugging purposes * chore(sonar-test-scan.yml): update download-artifact action to version 3 for unit and integration test reports chore(sonar-test-scan.yml): remove if_no_artifact_found option from download-artifact action for integration test reports chore(sonar-test-scan.yml): update download-artifact action for integration test reports to use correct artifact names and paths chore(sonar-test-scan.yml): remove if_no_artifact_found option from download-artifact action for postgresql integration test report chore(sonar-test-scan.yml): remove unnecessary whitespace * chore(sonar-test-scan.yml): add a sleep step to wait for test reports before continuing the workflow execution chore(sonar-test-scan.yml): update comment to disable shallow clones for better analysis relevancy chore(sonar-test-scan.yml): add step to set up JDK for the workflow execution * chore(sonar-test-scan.yml): update file paths for jacoco coverage reports The file paths for the jacoco coverage reports have been updated in the sonar-test-scan.yml workflow file. The following changes were made: - The unit test coverage report file path has been changed from "unit-tests/liquibase-pro-coverage/target/aggregate.exec" to "unit-tests/liquibase-pro-coverage/target/jacoco.exec" and it has been moved to the "./reports/jacoco-unit.exec" directory. - The integration test coverage report file paths for mssql and mysql have been updated from "integration-tests/mssql/liquibase-pro-integration-tests/target/jacoco.exec" and "integration-tests/mysql/liquibase-pro-integration-tests/target/jacoco.exec" respectively. * fix(sonar-test-scan.yml): fix file path for moving coverage reports to the correct directory feat(sonar-test-scan.yml): add step to save Jacoco mixed results as an artifact for further analysis * chore(sonar-test-scan.yml): remove unnecessary ls command in the workflow file * fix(sonar-test-scan.yml): remove unnecessary directory creation step to simplify the workflow The directory creation step was creating an unnecessary directory in the workflow. This step has been removed to simplify the workflow and improve readability. * chore(sonar-test-scan.yml): update file paths for aggregated coverage reports to match new directory structure The file paths for the aggregated coverage reports in the integration tests have been updated to match the new directory structure. The "aggregate.exec" files are now moved to the "target" directory instead of the "reports" directory. This change ensures that the coverage reports are generated in the correct location for each database type (mssql, mysql, oracle, postgresql). * fix(sonar-test-scan.yml): update file paths for jacoco coverage reports to match the new directory structure feat(sonar-test-scan.yml): add steps to download jacoco cli, move it to the appropriate directory, and generate coverage report using jacoco cli * chore(sonar-test-scan.yml): reorganize build steps for better readability and maintainability fix(sonar-test-scan.yml): move 'mvn package' command before 'mvn jacoco:merge@cli-merge-results' to ensure correct coverage results feat(sonar-test-scan.yml): add liquibase version parameter to 'mvn package' command for better control over liquibase version used * refactor(sonar-test-scan.yml): simplify file paths for moving jacoco coverage files The file paths for moving jacoco coverage files were simplified to improve readability and maintainability. * fix(sonar-test-scan.yml): update jacoco download link to use the official GitHub release URL fix(sonar-test-scan.yml): fix the path to move jacococli.jar to the correct location * fix(sonar-test-scan.yml): fix typo in the file path for jacococli.jar fix(sonar-test-scan.yml): move the 'cd' command before merging jacoco results to the correct directory * fix(sonar-test-scan.yml): fix the path to jacococli.jar in the java command to generate Jacoco report * chore(sonar-test-scan.yml): add missing cd command to navigate to the target directory before running jacococli.jar command * fix(sonar-test-scan.yml): remove redundant file path in java -jar command to fix jacoco report generation The file path "./target" was duplicated in the java -jar command, causing the jacoco report generation to fail. This commit removes the redundant file path to fix the issue. * fix(sonar-test-scan.yml): fix the path to classfiles in the jacoco report command The path to the classfiles in the jacoco report command was incorrect. It was pointing to "../../pro/target/" instead of "../../pro/target/classes/". This fix corrects the path to ensure that the jacoco report command can find the necessary classfiles for generating the coverage report. * chore(sonar-test-scan.yml): downgrade Java version from 17 to 8 and change distribution from 'temurin' to 'adopt' for compatibility reasons * fix(sonar-test-scan.yml): fix classfiles path in Jacoco report command to point to the correct directory * chore(sonar-test-scan.yml): add optional inputs for testedClassesModuleName and integrationTestsModuleName to improve flexibility fix(sonar-test-scan.yml): update file paths to use the new inputs for testedClassesModuleName and integrationTestsModuleName fix(sonar-test-scan.yml): update artifact name for jacoco mixed report to improve clarity * chore(sonar-test-scan.yml): update Java version and distribution to use Java 17 with Temurin chore(sonar-test-scan.yml): refactor file moving logic to handle different integration test directories chore(sonar-test-scan.yml): remove unnecessary -T flag from Maven command * fix(sonar-test-scan.yml): remove redundant line that duplicates the mvn command The redundant line `mvn -B verify -P 'unit,!run-proguard' -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT` is removed to avoid duplication and improve code readability. * chore(sonar-test-scan.yml): update action-download-artifact version to v2.27.0 for all artifact downloads chore(sonar-test-scan.yml): add 'if_no_artifact_found: warn' option to all artifact downloads to handle missing artifacts gracefully chore(sonar-test-scan.yml): remove unnecessary whitespace * chore(sonar-test-scan.yml): install mvnd and use it instead of mvn for build and analysis steps * chore(sonar-test-scan.yml): add workflow and run_id parameters to download test reports The workflow file 'sonar-test-scan.yml' was modified to include the 'workflow' and 'run_id' parameters in the steps that download test reports. This change allows the download step to be associated with the correct workflow run and ensures that the test reports are downloaded from the correct workflow run. * chore(sonar-test-scan.yml): update download-artifact action to version 3 for unit and integration tests reports chore(sonar-test-scan.yml): remove unnecessary if_no_artifact_found option from download-artifact actions chore(sonar-test-scan.yml): remove unnecessary workflow and run_id options from download-artifact actions chore(sonar-test-scan.yml): add if: always() condition to download-artifact actions for integration tests reports chore(sonar-test-scan.yml): add if: always() condition to cache SonarCloud packages action chore(sonar-test-scan.yml): add if: always() condition to merge integration and unit tests reports step chore(sonar-test-scan.yml): add if: always() condition to save Jacoco Mixed Results step chore(sonar-test-scan.yml): add if: always() condition to Sonar Scan step * chore(sonar-test-scan.yml): remove unnecessary sleep command in the workflow chore(sonar-test-scan.yml): remove unused step to wait for test reports in the workflow * chore(sonar-test-scan.yml): remove installation of mvnd and update Maven commands to use 'mvn' command instead of './mvnd/bin/mvnd' The installation of mvnd has been removed as it is no longer needed. The Maven commands have been updated to use the 'mvn' command instead of './mvnd/bin/mvnd' for consistency and to align with standard Maven usage. * chore(sonar-test-scan.yml): remove unused integrationTestsModuleName input variable refactor(sonar-test-scan.yml): simplify file path for moving jacoco.exec files in integration tests * fix(sonar-test-scan.yml): add 'package' phase to the Maven command to ensure the project is built before running SonarQube analysis * fix(sonar-test-scan.yml): update file path for moving jacoco.exec file to improve accuracy and consistency * fix(sonar-test-scan.yml): update file path for moving jacoco.exec file to improve accuracy and consistency * chore(sonar-test-scan.yml): remove unnecessary artifact saving step for Jacoco mixed results chore(sonar-test-scan.yml): rename sonar-push job to sonar-scan for better clarity and consistency * fix(sonar-test-scan.yml): change sonar.login to sonar.token to align with SonarQube API changes and improve security The SonarQube API has changed and now requires the use of the `sonar.token` parameter instead of `sonar.login` for authentication. This change ensures that the correct parameter is used and improves the security of the SonarQube integration. * chore(sonar-test-scan.yml): add default value for sonar.coverage.exclusions to exclude test files and pom.xml from coverage analysis * chore(sonar-test-scan.yml): remove unused coverageModuleName input variable chore(sonar-test-scan.yml): update paths for merging and moving coverage reports to match new project structure chore(sonar-test-scan.yml): update paths for jacococli.jar and classfiles in jacoco:merge step to match new project structure * chore(sonar-test-scan.yml): download and move jacoco.exec files for h2, hsqldb, and mariadb integration tests to the appropriate directories The changes were made to the sonar-test-scan.yml workflow file. The following changes were made: - Added a step to download the h2 integration tests report artifact and move the jacoco.exec file to the integration-tests/h2 directory. - Added a step to download the hsqldb integration tests report artifact and move the jacoco.exec file to the integration-tests/hsqldb directory. - Added a step to download the mariadb integration tests report artifact and move the jacoco.exec file to the integration-tests/mariadb directory. These changes were made to ensure that the jacoco.exec files for the h2, hsqldb, and mariadb integration tests are available in the correct directories for further processing. * chore(sonar-test-scan.yml): add support for downloading and processing sqlite integration test reports chore(sonar-test-scan.yml): move jacoco.exec file from sqlite integration test report to liquibase-coverage target directory * chore(sonar-test-scan.yml): add step to download firebird integration tests report artifact chore(sonar-test-scan.yml): move firebird jacoco.exec file to target directory for coverage analysis * chore(create-release.yml): update sonar-push.yml version to v0.4.3 for improved functionality chore(extension-attach-artifact-release.yml): update script file versions to v0.4.3 for improved functionality chore(extension-release-published.yml): update extension-release-prepare.yml version to v0.4.3 for improved functionality chore(os-extension-test.yml): update sonar-pull-request.yml version to v0.4.3 for improved functionality chore(package-deb.yml): update file versions to v0.4.3 for improved functionality chore(pom-release-published.yml): update extension-release-prepare.yml version to v0.4.3 for improved functionality chore(pro-extension-test.yml): update sonar-pull-request.yml version to v0.4.3 for improved functionality * chore(sonar-test-scan.yml): refactor Maven command to improve readability and remove unnecessary step The Maven command in the workflow file has been refactored to improve readability and remove an unnecessary step. The `mvn clean package` command has been separated from the `mvn sonar:sonar` command. This change allows for better organization and clarity in the workflow file. * chore(sonar-test-scan.yml): update Maven command to include package phase and exclude unnecessary profiles The Maven command in the workflow file has been updated to include the package phase and exclude unnecessary profiles. This change ensures that the project is built and packaged before running the SonarQube analysis. The profiles '!unit', '!integration-test', '!testAll', and '!run-proguard' have been added to exclude unnecessary tests and proguard execution. This improves the efficiency of the workflow and reduces the time required for the SonarQube scan. * chore(sonar-test-scan.yml): update Maven command to exclude unit and integration tests, and remove unused profiles The Maven command in the Sonar test scan workflow has been updated to exclude unit and integration tests. The profiles '!unit' and '!integration-test' have been removed from the command. Additionally, the 'testAll' profile has been removed as it is not being used. The 'run-proguard' profile is still included. This change improves the accuracy of the Sonar analysis by excluding unnecessary tests. The updated command is as follows: ``` mvn -B package sonar:sonar -P 'no-test,!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ -Dsonar.token=$SONAR_TOKEN ``` * chore(sonar-test-scan.yml): remove unnecessary whitespace and improve readability of the Maven command * feat(sonar-test-scan.yml): add support for specifying database platforms to be tested - Add `dbPlatforms` input parameter to specify the database platforms to be tested - Set default value of `dbPlatforms` to include `mssql`, `mysql`, `oracle`, `postgresql`, `hsqldb` - Modify the download steps for integration test reports to conditionally download based on the specified `dbPlatforms` - Add conditional checks for each database platform in the download steps to download the corresponding integration test report * fix(sonar-test-scan.yml): change 'mvn package' command to 'mvn verify' to include test execution in the build process * fix(sonar-test-scan.yml): fix maven command to skip tests during SonarQube scan The maven command in the SonarQube scan workflow was modified to skip tests by adding the `-DskipTests=true` flag. This change was made to improve the efficiency of the workflow and reduce the overall execution time. * chore(sonar-test-scan.yml): reformat mvn command to improve readability and maintainability * chore(sonar-test-scan.yml): remove unnecessary parallel execution flag (-T 1C) to improve build performance chore(sonar-test-scan.yml): remove unused maven argument (-DskipTests=true) as it is redundant with -P '!run-proguard' profile * chore(sonar-test-scan.yml): simplify Maven command by skipping integration tests chore(sonar-test-scan.yml): update jacoco version to 0.8.10 for code coverage analysis * chore(sonar-test-scan.yml): refactor Sonar Scan job to separate branch scan and PR scan The Sonar Scan job has been refactored into two separate jobs: Sonar Branch Scan and Sonar PR Scan. Sonar Branch Scan: - The Sonar Branch Scan job will run when the workflow is triggered by a push event on a branch (not a pull request). - It will perform a Sonar scan on the branch. - The Sonar scan will wait for the quality gate to pass before completing. - The Sonar scan will be performed on the organization's SonarCloud instance. - The Sonar scan will use the Jacoco coverage plugin for Java code coverage. - The Sonar scan will use the git SCM provider. - The Sonar scan will use the AWS region "us-east-1". Sonar PR Scan: - The Sonar PR Scan job will run when the workflow is triggered by a pull request event. - It will perform a Sonar scan on the pull request. - The Sonar scan will use the Jacoco coverage plugin for Java code coverage. - The Sonar scan will use the provided pull request information. - The Sonar scan will use the git SCM provider. - The Sonar scan will use the provided Sonar token. - The Sonar scan will use the provided Liquibase Pro license key. These changes improve the clarity and separation of the Sonar scan jobs in the workflow. * fix(sonar-test-scan.yml): exclude running proguard during the Maven verify phase to improve build performance and stability * fix(sonar-test-scan.yml): remove unnecessary 'verify' phase from Maven command to speed up the build process * fix(sonar-test-scan.yml): change Maven command from 'mvn -B sonar:sonar' to 'mvn -B verify sonar:sonar' to include the 'verify' phase before running SonarQube analysis * fix(sonar-test-scan.yml): add '-P !run-proguard' flag to the Maven command to exclude running ProGuard during the Sonar scan The ProGuard plugin is causing issues during the Sonar scan, so we exclude it by adding the '-P !run-proguard' flag to the Maven command. This will ensure that ProGuard is not executed during the scan, allowing the scan to complete successfully. --- .github/workflows/sonar-test-scan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index c23d85f5..69bfa9f2 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -246,7 +246,7 @@ jobs: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} run: | - mvn -B verify sonar:sonar -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ + mvn -B verify sonar:sonar -P '!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ -Dsonar.token=$SONAR_TOKEN \ From 473234478cf1a68c9c9b2c032b89433f5760ddc2 Mon Sep 17 00:00:00 2001 From: Sayali Mohadikar <76010603+sayaliM0412@users.noreply.github.com> Date: Fri, 22 Sep 2023 08:52:45 -0700 Subject: [PATCH 142/147] DAT-15851 (#80) * add ci and ci-report yml files as reusable workflow * Update README.md for ci and ci-report.yml --------- Co-authored-by: Sayali M --- .github/workflows/ci-report.yml | 51 +++++++++++ .github/workflows/ci.yml | 148 ++++++++++++++++++++++++++++++++ README.md | 4 +- 3 files changed, 202 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ci-report.yml create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci-report.yml b/.github/workflows/ci-report.yml new file mode 100644 index 00000000..91ecde73 --- /dev/null +++ b/.github/workflows/ci-report.yml @@ -0,0 +1,51 @@ +name: 'Continuous Integration - Report' + +on: + push: + branches: + - main + +jobs: + test-report: + name: Report Test Results + runs-on: ubuntu-latest + if: github.event.workflow_run.conclusion != 'skipped' + + steps: + - uses: actions/checkout@v3 + + - name: Download and Extract Artifacts + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + run: | + mvn -B liquibase-sdk:download-snapshot-artifacts \ + -Dliquibase.sdk.repo=${{ github.repository }} \ + -Dliquibase.sdk.runId=${{ github.event.workflow_run.id }} \ + -Dliquibase.sdk.downloadDirectory=artifacts \ + -Dliquibase.sdk.artifactPattern=* \ + -Dliquibase.sdk.unzipArtifacts=true + + - name: Publish Unit Test Results + uses: EnricoMi/publish-unit-test-result-action@v2 + with: + commit: ${{ github.event.workflow_run.head_sha }} + event_file: artifacts/Event File/event.json + event_name: ${{ github.event.workflow_run.event }} + junit_files: "artifacts/test-reports-*/**/*.xml" + + build-testing-comment: + name: Add Build Testing Comment + runs-on: ubuntu-latest + if: github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.head_branch != 'main' + + steps: + - uses: actions/checkout@v3 + + - name: Create "BUILD_TESTING" comment + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + run: | + mvn -B liquibase-sdk:set-pull-request-comment \ + -Dliquibase.sdk.repo=${{ github.repository }} \ + -Dliquibase.sdk.pr.newComment=BUILD_TESTING \ + -Dliquibase.sdk.pr.definition=${{ github.event.workflow_run.head_branch }} \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..ec764c2c --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,148 @@ +name: Continuous Integration + +# Job will run nightly at 02:05 EDT / 01:05 CDT +# Time below is UTC +on: + workflow_call: + +jobs: + build: + name: Build & Package + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Set up JDK 17 + uses: actions/setup-java@v2 + with: + java-version: 17 + distribution: 'temurin' + cache: 'maven' + + - name: Install liquibase-core 0-SNAPSHOT + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: mvn -B clean liquibase-sdk:install-snapshot -Dliquibase.sdk.branchSearch=MATCHING_BRANCHES,master + + - name: Build and Package + run: mvn -B dependency:go-offline clean package -DskipTests=true + + - name: Save Artifacts + uses: actions/upload-artifact@v2 + with: + name: liquibase-bigquery-artifacts + path: | + target/*.jar + + - name: Save Event File + uses: actions/upload-artifact@v3 + with: + name: Event File + path: ${{ github.event_path }} + + - name: Build Cache + uses: actions/cache@v3.0.5 + with: + key: build-${{ github.run_number }}-${{ github.run_attempt }} + path: | + **/target/** + ~/.m2/repository/org/liquibase/ + + unit-test: + name: Test Java ${{ matrix.java }} + runs-on: ubuntu-latest + needs: build + + strategy: + fail-fast: false + matrix: + java: [ 8, 11, 17, 18 ] + + steps: + - uses: actions/checkout@v3 + + - name: Set up JDK ${{ matrix.java }} + uses: actions/setup-java@v2 + with: + java-version: ${{ matrix.java }} + distribution: 'temurin' + cache: 'maven' + + - name: Build Cache + uses: actions/cache@v3.0.5 + with: + key: build-${{ github.run_number }}-${{ github.run_attempt }} + path: | + **/target/** + ~/.m2/repository/org/liquibase/ + + - name: Run Tests + run: mvn -B jacoco:prepare-agent surefire:test + + - name: Archive Test Results + if: ${{ always() }} + uses: actions/upload-artifact@v2 + with: + name: test-reports-jdk-${{ matrix.java }} + path: | + **/target/surefire-reports + **/target/jacoco.exec + + integration-test: + name: Test Harness for BigQuery + needs: build + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Set up JDK + uses: actions/setup-java@v2 + with: + java-version: 17 + distribution: 'temurin' + cache: 'maven' + + - name: Build Cache + uses: actions/cache@v3.0.5 + with: + key: build-${{ github.run_number }}-${{ github.run_attempt }} + path: | + **/target/** + ~/.m2/repository/org/liquibase/ + + - name: Run Test Harness Tests + run: mvn -B jacoco:prepare-agent surefire:test -Dit.test=LiquibaseHarnessSuiteIT + + - name: Archive Test Results + if: ${{ always() }} + uses: actions/upload-artifact@v2 + with: + name: test-reports-bigquery-integration + path: | + **/target/surefire-reports + **/target/jacoco.exec + + dependabot: + name: Merge dependabot + runs-on: ubuntu-latest + needs: integration-test + permissions: + contents: write + pull-requests: write + if: ${{ github.actor == 'dependabot[bot]' }} + + steps: + - name: Dependabot metadata + id: dependabot-metadata + uses: dependabot/fetch-metadata@v1.3.1 + + - name: Approve patch and minor updates + if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-patch' || steps.dependabot-metadata.outputs.update-type == 'version-update:semver-minor'}} + run: | + gh pr merge --auto --merge "$PR_URL" + gh pr review $PR_URL --approve -b "I'm **approving** this pull request because **it includes a patch or minor update**" + env: + PR_URL: ${{github.event.pull_request.html_url}} + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/README.md b/README.md index d7171c67..9af791a0 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,8 @@ Please review the below table of reusable workflows and their descriptions: | `sonar-test-scan.yml` | Code Coverage Scan for unit and integration tests | | `sonar-push.yml` | Same as PR job, but for pushes to main. Does not require branch name parameter | | `snyk-nightly.yml` | Nightly Security Scans | +| `ci.yml` | Run unit, integrations tests against the new liquibase SNAPSHOT | +| `ci-report.yml` | Extract results obtained from ci.yml and generate a report | | various shell scripts | helper scripts for getting the draft release, signing artifacts, and uploading assets | ## Requirements @@ -435,4 +437,4 @@ Here the modules we want to generate and aggregate test reports must be specifie -``` \ No newline at end of file +``` From 5416260a011e30bf6890528c95f98fba4c965add Mon Sep 17 00:00:00 2001 From: Sayali Mohadikar <76010603+sayaliM0412@users.noreply.github.com> Date: Mon, 25 Sep 2023 07:09:23 -0700 Subject: [PATCH 143/147] adding workflow_dispatch to test ci-reports (#81) --- .github/workflows/ci-report.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci-report.yml b/.github/workflows/ci-report.yml index 91ecde73..aacace5f 100644 --- a/.github/workflows/ci-report.yml +++ b/.github/workflows/ci-report.yml @@ -4,6 +4,7 @@ on: push: branches: - main + workflow_dispatch: jobs: test-report: @@ -48,4 +49,4 @@ jobs: mvn -B liquibase-sdk:set-pull-request-comment \ -Dliquibase.sdk.repo=${{ github.repository }} \ -Dliquibase.sdk.pr.newComment=BUILD_TESTING \ - -Dliquibase.sdk.pr.definition=${{ github.event.workflow_run.head_branch }} \ No newline at end of file + -Dliquibase.sdk.pr.definition=${{ github.event.workflow_run.head_branch }} From 3614bf045b6e45dfe9287aa869129af05316f856 Mon Sep 17 00:00:00 2001 From: Alejandro Alvarez Date: Tue, 26 Sep 2023 14:33:04 +0200 Subject: [PATCH 144/147] GitHub action dat 15968 (#83) * chore(sonar-test-scan.yml): update Maven commands in Sonar test scan workflow - Change the Maven command from "mvn -B verify -P '!run-proguard' -DskipITs -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT" to "mvn -B package -P 'sonar,!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT" to only package the project and exclude running tests. - Update the Maven command in the "run" step from "mvn -B verify sonar:sonar -P '!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT" to "mvn -B sonar:sonar -P 'sonar,!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT" to only run Sonar analysis and exclude running tests. These changes improve the efficiency of the Sonar test scan workflow by skipping unnecessary steps and focusing on the required tasks. * fix(sonar-test-scan.yml): remove unnecessary argument '--classfiles' from jacococli.jar command The '--classfiles' argument is not needed in the jacococli.jar command as it is already configured to use the correct class files directory. Removing this argument improves the clarity and simplicity of the command. * chore(sonar-test-scan.yml): generate dump classes during the Sonar test scan to improve code coverage accuracy chore(sonar-test-scan.yml): update jacococli.jar command to include classfiles path for code coverage report generation * chore(sonar-test-scan.yml): add lt -ltr command to list files in the target directory after jacoco report generation * refactor(sonar-test-scan.yml): improve file path handling for jacoco.exec files feat(sonar-test-scan.yml): add support for dynamic module name for jacoco.exec file paths * fix(sonar-test-scan.yml): update jacococli.jar path to match the location of the tested classes module * chore(sonar-test-scan.yml): remove unnecessary mkdir command to improve build process efficiency chore(sonar-test-scan.yml): add ls commands to debug build process and check file structure before and after jacoco merge * chore(sonar-test-scan.yml): update jacoco unzip command to use quiet mode for less verbose output chore(sonar-test-scan.yml): remove unnecessary 'lt' command from jacoco report step * chore(sonar-test-scan.yml): remove unnecessary ls commands to improve readability and reduce noise in the workflow chore(sonar-test-scan.yml): update jacoco version to v0.8.10 to ensure compatibility with the latest release chore(sonar-test-scan.yml): update jacoco file paths to match the new jacoco version and project structure * chore(sonar-test-scan.yml): add command to list files in the target directory for debugging purposes * chore(sonar-test-scan.yml): add working directory configuration to Sonar test scan jobs The working directory configuration is added to the Sonar test scan jobs in the `.github/workflows/sonar-test-scan.yml` file. This allows the jobs to run in the specified directory, which is determined by the `testedClassesModuleName` input. * chore(create-release.yml): update sonar-push.yml version to v0.4.4 for better compatibility and bug fixes chore(extension-attach-artifact-release.yml): update get_draft_release.sh, sign_artifact.sh, and upload_asset.sh versions to v0.4.4 for better compatibility and bug fixes chore(extension-release-published.yml): update extension-release-prepare.yml version to v0.4.4 for better compatibility and bug fixes chore(os-extension-test.yml): update sonar-pull-request.yml version to v0.4.4 for better compatibility and bug fixes chore(package-deb.yml): update package-deb-pom.xml and related scripts versions to v0.4.4 for better compatibility and bug fixes chore(pom-release-published.yml): update extension-release-prepare.yml version to v0.4.4 for better compatibility and bug fixes chore(pro-extension-test.yml): update sonar-pull-request.yml version to v0.4.4 for better compatibility and bug fixes chore(sonar-test-scan.yml): remove unnecessary ls command and improve code readability --- .github/workflows/create-release.yml | 2 +- .../extension-attach-artifact-release.yml | 8 ++-- .../workflows/extension-release-published.yml | 2 +- .github/workflows/os-extension-test.yml | 2 +- .github/workflows/package-deb.yml | 8 ++-- .github/workflows/pom-release-published.yml | 2 +- .github/workflows/pro-extension-test.yml | 2 +- .github/workflows/sonar-test-scan.yml | 43 +++++++++++-------- 8 files changed, 37 insertions(+), 32 deletions(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 81154a72..b8a4ca6e 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -5,7 +5,7 @@ on: jobs: sonar: - uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.4.3 + uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.4.4 secrets: inherit create-release: diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index 7af5045e..d129797e 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -37,9 +37,9 @@ jobs: - name: Get Reusable Script Files run: | - curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.3/.github/get_draft_release.sh - curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.3/.github/sign_artifact.sh - curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.3/.github/upload_asset.sh + curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.4/.github/get_draft_release.sh + curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.4/.github/sign_artifact.sh + curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.4/.github/upload_asset.sh chmod +x $PWD/.github/get_draft_release.sh chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh @@ -103,7 +103,7 @@ jobs: - name: Get upload_zip.sh Script File if: inputs.zip == 'true' run: | - curl -o $PWD/.github/upload_zip.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.3/.github/upload_zip.sh + curl -o $PWD/.github/upload_zip.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.4/.github/upload_zip.sh chmod +x $PWD/.github/upload_zip.sh - name: Attach Zip File to Draft Release diff --git a/.github/workflows/extension-release-published.yml b/.github/workflows/extension-release-published.yml index f8f6ae33..9f210e79 100644 --- a/.github/workflows/extension-release-published.yml +++ b/.github/workflows/extension-release-published.yml @@ -68,5 +68,5 @@ jobs: maven-release: needs: release - uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.4.3 + uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.4.4 secrets: inherit \ No newline at end of file diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index 4b89f4ca..49b2dcae 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -98,5 +98,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.3 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.4 secrets: inherit diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index f1b5a439..4d34c56c 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -54,10 +54,10 @@ jobs: # Under the src folder is where specific packages files live. The GitHub action inputs will modify the universal package-deb-pom.xml to tell the process which assets to use during the packaging step mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/deb/control mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/main/archive - curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/control https://raw.githubusercontent.com/liquibase/build-logic/v0.4.3/src/${{ inputs.artifactId }}/deb/control/control - curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/postinst https://raw.githubusercontent.com/liquibase/build-logic/v0.4.3/src/${{ inputs.artifactId }}/deb/control/postinst - curl -o $PWD/.github/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.3/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh - curl -o $PWD/.github/package-deb-pom.xml https://raw.githubusercontent.com/liquibase/build-logic/v0.4.3/.github/package-deb-pom.xml + curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/control https://raw.githubusercontent.com/liquibase/build-logic/v0.4.4/src/${{ inputs.artifactId }}/deb/control/control + curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/postinst https://raw.githubusercontent.com/liquibase/build-logic/v0.4.4/src/${{ inputs.artifactId }}/deb/control/postinst + curl -o $PWD/.github/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.4/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh + curl -o $PWD/.github/package-deb-pom.xml https://raw.githubusercontent.com/liquibase/build-logic/v0.4.4/.github/package-deb-pom.xml - name: Set up Maven uses: stCarolas/setup-maven@v4.5 diff --git a/.github/workflows/pom-release-published.yml b/.github/workflows/pom-release-published.yml index 41377fb9..5ea84a91 100644 --- a/.github/workflows/pom-release-published.yml +++ b/.github/workflows/pom-release-published.yml @@ -68,5 +68,5 @@ jobs: maven-release: needs: release - uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.4.3 + uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.4.4 secrets: inherit \ No newline at end of file diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index 8c7236e7..0209be7a 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -204,5 +204,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.3 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.4 secrets: inherit diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index 69bfa9f2..b186d924 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -195,46 +195,49 @@ jobs: key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar + - name: Generate dump classes + run: | + mvn -B clean install surefire-report:report -P 'sonar,!run-proguard' "-Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT" + working-directory: ./${{ inputs.testedClassesModuleName }} + - name: Merge integration and unit tests reports if: always() run: | - mkdir ./liquibase-coverage/target - mv unit-tests/jacoco.exec ./liquibase-coverage/target/jacoco-unit.exec + mv unit-tests/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-unit.exec if [ -d "integration-tests/mssql" ]; then - mv integration-tests/mssql/jacoco.exec ./liquibase-coverage/target/jacoco-mssql-aggregate.exec + mv integration-tests/mssql/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-mssql-aggregate.exec fi if [ -d "integration-tests/mysql" ]; then - mv integration-tests/mysql/jacoco.exec ./liquibase-coverage/target/jacoco-mysql-aggregate.exec + mv integration-tests/mysql/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-mysql-aggregate.exec fi if [ -d "integration-tests/oracle" ]; then - mv integration-tests/oracle/jacoco.exec ./liquibase-coverage/target/jacoco-oracle-aggregate.exec + mv integration-tests/oracle/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-oracle-aggregate.exec fi if [ -d "integration-tests/postgresql" ]; then - mv integration-tests/postgresql/jacoco.exec ./liquibase-coverage/target/jacoco-postgresql-aggregate.exec + mv integration-tests/postgresql/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-postgresql-aggregate.exec fi if [ -d "integration-tests/h2" ]; then - mv integration-tests/h2/jacoco.exec ./liquibase-coverage/target/jacoco-h2-aggregate.exec + mv integration-tests/h2/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-h2-aggregate.exec fi if [ -d "integration-tests/hsqldb" ]; then - mv integration-tests/hsqldb/jacoco.exec ./liquibase-coverage/target/jacoco-hsqldb-aggregate.exec + mv integration-tests/hsqldb/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-hsqldb-aggregate.exec fi if [ -d "integration-tests/mariadb" ]; then - mv integration-tests/mariadb/jacoco.exec ./liquibase-coverage/target/jacoco-mariadb-aggregate.exec + mv integration-tests/mariadb/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-mariadb-aggregate.exec fi if [ -d "integration-tests/sqlite" ]; then - mv integration-tests/sqlite/jacoco.exec ./liquibase-coverage/target/jacoco-sqlite-aggregate.exec + mv integration-tests/sqlite/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-sqlite-aggregate.exec fi if [ -d "integration-tests/firebird" ]; then - mv integration-tests/firebird/jacoco.exec ./liquibase-coverage/target/jacoco-firebird-aggregate.exec + mv integration-tests/firebird/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-firebird-aggregate.exec fi - - mvn -B verify -P '!run-proguard' -DskipITs -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT + wget -q https://github.com/jacoco/jacoco/releases/download/v0.8.10/jacoco-0.8.10.zip - unzip ./jacoco-0.8.10.zip - mv ./lib/jacococli.jar ./liquibase-coverage/target/jacococli.jar - chmod +x ./liquibase-coverage/target/jacococli.jar - cd liquibase-coverage + unzip -qq ./jacoco-0.8.10.zip + mv ./lib/jacococli.jar ./${{ inputs.testedClassesModuleName }}/target/jacococli.jar + chmod +x ./${{ inputs.testedClassesModuleName }}/target/jacococli.jar + cd ./${{ inputs.testedClassesModuleName }} mvn jacoco:merge@cli-merge-results cd ./target java -jar jacococli.jar report aggregate.exec --classfiles=../../${{ inputs.testedClassesModuleName }}/target/classdumps @@ -245,8 +248,9 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} + working-directory: ./${{ inputs.testedClassesModuleName }} run: | - mvn -B verify sonar:sonar -P '!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ + mvn -B sonar:sonar -P 'sonar,!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ -Dsonar.token=$SONAR_TOKEN \ @@ -264,8 +268,9 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} + working-directory: ./${{ inputs.testedClassesModuleName }} run: | - mvn -B verify sonar:sonar -P '!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ + mvn -B sonar:sonar -P 'sonar,!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ -Dsonar.scm.revision=${{ inputs.thisSha }} \ -Dsonar.token=$SONAR_TOKEN \ From 993866478f7f075d7931e1cd88f85849e9807604 Mon Sep 17 00:00:00 2001 From: Alejandro Alvarez Date: Fri, 29 Sep 2023 14:42:06 +0200 Subject: [PATCH 145/147] GitHub action dat 15968 (#86) * chore(sonar-test-scan.yml): update Maven commands in Sonar test scan workflow - Change the Maven command from "mvn -B verify -P '!run-proguard' -DskipITs -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT" to "mvn -B package -P 'sonar,!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT" to only package the project and exclude running tests. - Update the Maven command in the "run" step from "mvn -B verify sonar:sonar -P '!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT" to "mvn -B sonar:sonar -P 'sonar,!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT" to only run Sonar analysis and exclude running tests. These changes improve the efficiency of the Sonar test scan workflow by skipping unnecessary steps and focusing on the required tasks. * fix(sonar-test-scan.yml): remove unnecessary argument '--classfiles' from jacococli.jar command The '--classfiles' argument is not needed in the jacococli.jar command as it is already configured to use the correct class files directory. Removing this argument improves the clarity and simplicity of the command. * chore(sonar-test-scan.yml): generate dump classes during the Sonar test scan to improve code coverage accuracy chore(sonar-test-scan.yml): update jacococli.jar command to include classfiles path for code coverage report generation * chore(sonar-test-scan.yml): add lt -ltr command to list files in the target directory after jacoco report generation * refactor(sonar-test-scan.yml): improve file path handling for jacoco.exec files feat(sonar-test-scan.yml): add support for dynamic module name for jacoco.exec file paths * fix(sonar-test-scan.yml): update jacococli.jar path to match the location of the tested classes module * chore(sonar-test-scan.yml): remove unnecessary mkdir command to improve build process efficiency chore(sonar-test-scan.yml): add ls commands to debug build process and check file structure before and after jacoco merge * chore(sonar-test-scan.yml): update jacoco unzip command to use quiet mode for less verbose output chore(sonar-test-scan.yml): remove unnecessary 'lt' command from jacoco report step * chore(sonar-test-scan.yml): remove unnecessary ls commands to improve readability and reduce noise in the workflow chore(sonar-test-scan.yml): update jacoco version to v0.8.10 to ensure compatibility with the latest release chore(sonar-test-scan.yml): update jacoco file paths to match the new jacoco version and project structure * chore(sonar-test-scan.yml): add command to list files in the target directory for debugging purposes * chore(sonar-test-scan.yml): add working directory configuration to Sonar test scan jobs The working directory configuration is added to the Sonar test scan jobs in the `.github/workflows/sonar-test-scan.yml` file. This allows the jobs to run in the specified directory, which is determined by the `testedClassesModuleName` input. * chore(create-release.yml): update sonar-push.yml version to v0.4.4 for better compatibility and bug fixes chore(extension-attach-artifact-release.yml): update get_draft_release.sh, sign_artifact.sh, and upload_asset.sh versions to v0.4.4 for better compatibility and bug fixes chore(extension-release-published.yml): update extension-release-prepare.yml version to v0.4.4 for better compatibility and bug fixes chore(os-extension-test.yml): update sonar-pull-request.yml version to v0.4.4 for better compatibility and bug fixes chore(package-deb.yml): update package-deb-pom.xml and related scripts versions to v0.4.4 for better compatibility and bug fixes chore(pom-release-published.yml): update extension-release-prepare.yml version to v0.4.4 for better compatibility and bug fixes chore(pro-extension-test.yml): update sonar-pull-request.yml version to v0.4.4 for better compatibility and bug fixes chore(sonar-test-scan.yml): remove unnecessary ls command and improve code readability * fix(sonar-test-scan.yml): skip running tests during the build process to improve build time and avoid unnecessary test execution * chore(sonar-test-scan.yml): remove unnecessary jacoco download and extraction steps chore(sonar-test-scan.yml): remove unnecessary jacoco cli execution step * chore(sonar-test-scan.yml): remove unnecessary step to generate dump classes The step to generate dump classes was removed as it is no longer needed in the workflow. * chore(sonar-test-scan.yml): add step to generate dump classes during the workflow The `Generate dump classes` step was added to the workflow. This step runs the command `mvn -B clean install -DskipTests -P 'sonar,!run-proguard' "-Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT"` in the `${{ inputs.testedClassesModuleName }}` directory. This step is necessary to generate dump classes for the SonarQube analysis. * chore(sonar-test-scan.yml): add step to generate Jacoco report after merging results to improve code coverage analysis * chore(sonar-test-scan.yml): rename step name from "Generate dump classes" to "Generate classes" for clarity * chore(sonar-test-scan.yml): add step to save Jacoco reports as an artifact for further analysis * chore(sonar-test-scan.yml): add support for configurable classes artifact name feat(sonar-test-scan.yml): download classes artifact and merge jacoco reports using jacococli.jar The changes in this commit include: - Added a new input parameter `classesArtifactName` to the workflow file `sonar-test-scan.yml` to specify the name of the classes artifact. - Added a new step to download the classes artifact using the `actions/download-artifact` action. - Modified the existing step to merge the jacoco reports to use the `jacococli.jar` tool. - Added new steps to download the `jacococli.jar` tool, move it to the appropriate location, and merge the jacoco reports using the tool. - Added a new step to generate the jacoco report in XML format. These changes were made to improve the SonarQube scan workflow by allowing the use of a configurable classes artifact name and using the `jacococli.jar` tool for merging the jacoco reports. * fix(sonar-test-scan.yml): change jacococli.jar command to use merged.exec instead of aggregate.exec for generating jacoco.xml report * chore(sonar-test-scan.yml): remove unused classesArtifactName input variable to simplify configuration chore(sonar-test-scan.yml): downgrade java-version to 11 to match project requirements chore(sonar-test-scan.yml): remove unnecessary download classes step as it is not used in the workflow chore(sonar-test-scan.yml): update merge integration and unit tests reports step to create target directory if it doesn't exist * chore(sonar-test-scan.yml): remove unused input variables for unitTestReportArtifactName and integrationTestReportArtifactName chore(sonar-test-scan.yml): update artifact names for downloading test reports to match new naming convention * chore(sonar-test-scan.yml): add conditional step to always generate classes during the workflow The conditional step was added to ensure that the classes are always generated during the workflow execution, regardless of the previous steps' outcomes. This is necessary to ensure that the generated classes are up to date and reflect any changes made in the codebase. * fix(sonar-test-scan.yml): fix path for creating directory and moving files to match the input variable fix(sonar-test-scan.yml): fix path for unzipping jacoco-0.8.10.zip and moving jacococli.jar to match the input variable fix(sonar-test-scan.yml): fix path for changing directory to match the input variable * chore(sonar-test-scan.yml): update default value of databasePlatforms input to only include mysql fix(sonar-test-scan.yml): fix working directory for Generate classes and Merge integration and unit tests reports steps fix(sonar-test-scan.yml): fix classfiles path in jacococli.jar report command * refactor(sonar-test-scan.yml): simplify file path and directory structure for jacoco coverage reports feat(sonar-test-scan.yml): add support for merging and generating jacoco coverage reports for different integration test databases * fix(sonar-test-scan.yml): update jacoco report classfiles path to point to the correct directory The classfiles path for generating the jacoco report was pointing to the wrong directory. This commit updates the path to point to the correct directory, `../liquibase-standard/target/`, to ensure that the jacoco report is generated correctly. * chore(sonar-test-scan.yml): add support for custom sonarRootPath and testedClassesModuleName inputs The `sonar-test-scan.yml` workflow file has been modified to include support for two new inputs: `sonarRootPath` and `testedClassesModuleName`. The `sonarRootPath` input allows specifying the root path of the project to be scanned by Sonar. It is an optional input with a default value of `.` (current directory). The `testedClassesModuleName` input allows specifying the name of the module containing the tested classes. It is an optional input with no default value. These changes provide flexibility in configuring the Sonar scan for different project structures and module setups. * chore(sonar-test-scan.yml): remove unnecessary working-directory configuration chore(sonar-test-scan.yml): add working-directory configuration to specify the root path for Sonar scan * chore(sonar-test-scan.yml): remove unnecessary commands and improve Jacoco report generation The following changes were made: - Removed the `pwd` and `ls` commands for debugging purposes - Removed the `Save Jacoco Reports` step as it is no longer needed - Improved the Jacoco report generation by specifying the classfiles and sourcefiles directories - Added a `cat jacoco.xml` command to display the contents of the generated Jacoco report * chore(sonar-test-scan.yml): add debug output to print current working directory and list files in it chore(sonar-test-scan.yml): archive test results by uploading jacoco.xml file as an artifact * chore(sonar-test-scan.yml): remove unnecessary echo statement and add support for generating HTML coverage report The unnecessary echo statement that prints the "Tested classes module name" has been removed to reduce noise in the workflow logs. Support for generating HTML coverage reports has been added. The jacococli.jar command is now executed twice, once to generate the XML report and once to generate the HTML report. The HTML report is generated for both the root module and the specified tested classes module, if provided. The generated HTML reports are then archived as artifacts. * chore(sonar-test-scan.yml): update jacoco report command to generate HTML report in a 'site' directory * chore(sonar-test-scan.yml): add default value 'root' for testedClassesModuleName input parameter fix(sonar-test-scan.yml): fix path to source files in jacococli.jar report command feat(sonar-test-scan.yml): change artifact name to 'liquibase-jacoco-merged-results' for upload-artifact step * chore(sonar-test-scan.yml): remove unused artifact upload step The artifact upload step for archiving Jacoco merged results was removed as it was no longer needed. * chore(sonar-test-scan.yml): set default working directory for sonar-scan job to the specified sonarRootPath input value to ensure correct execution context * chore(sonar-test-scan.yml): add ls -ltr command to debug workflow chore(sonar-test-scan.yml): create target directory if it doesn't exist to prevent mv command failure * chore(sonar-test-scan.yml): update artifact download paths to use dynamic sonarRootPath input variable for better flexibility and maintainability chore(sonar-test-scan.yml): remove unnecessary ls -ltr command in the SonarCloud analysis step * fix(sonar-test-scan.yml): update jacoco report command to use correct classfiles path for root module fix(sonar-test-scan.yml): update jacoco report command to use correct classfiles path for non-root modules --- .github/workflows/sonar-test-scan.yml | 116 +++++++++++++++----------- 1 file changed, 65 insertions(+), 51 deletions(-) diff --git a/.github/workflows/sonar-test-scan.yml b/.github/workflows/sonar-test-scan.yml index b186d924..ab33817b 100644 --- a/.github/workflows/sonar-test-scan.yml +++ b/.github/workflows/sonar-test-scan.yml @@ -32,23 +32,21 @@ on: type: string required: false default: -Dsonar.coverage.exclusions='**/test/**/*.*, **/pom.xml' - unitTestReportArtifactName: - description: 'The name of the unit test report artifact' - type: string - required: false - integrationTestReportArtifactName: - description: 'The name of the integration test report artifact' + sonarRootPath: + description: 'The name of the tested classes module' type: string required: false + default: . testedClassesModuleName: description: 'The name of the tested classes module' type: string required: false + default: 'root' dbPlatforms: description: 'The database platforms to be tested' type: string required: false - default: mssql,mysql,oracle,postgresql,hsqldb, + default: mysql env: MAVEN_VERSION: '3.8.7' @@ -57,6 +55,9 @@ jobs: sonar-scan: name: Sonar Scan runs-on: ubuntu-22.04 + defaults: + run: + working-directory: ./${{ inputs.sonarRootPath }} steps: - uses: actions/checkout@v3 @@ -66,7 +67,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v3 with: - java-version: 17 + java-version: 11 distribution: 'temurin' cache: 'maven' overwrite-settings: false @@ -121,71 +122,71 @@ jobs: - name: Download unit tests report uses: actions/download-artifact@v3 with: - name: ${{ inputs.unitTestReportArtifactName }} - path: unit-tests + name: liquibase-jacoco-test-results + path: ${{ inputs.sonarRootPath }}/unit-tests - name: Download mssql integration tests report if: contains(inputs.dbPlatforms, 'mssql') uses: actions/download-artifact@v3 with: - name: ${{ inputs.integrationTestReportArtifactName }}-mssql - path: integration-tests/mssql + name: liquibase-integration-jacoco-test-results-mssql + path: ${{ inputs.sonarRootPath }}/integration-tests/mssql - name: Download mysql integration tests report if: contains(inputs.dbPlatforms, 'mysql') uses: actions/download-artifact@v3 with: - name: ${{ inputs.integrationTestReportArtifactName }}-mysql - path: integration-tests/mysql + name: liquibase-integration-jacoco-test-results-mysql + path: ${{ inputs.sonarRootPath }}/integration-tests/mysql - name: Download oracle integration tests report if: contains(inputs.dbPlatforms, 'oracle') uses: actions/download-artifact@v3 with: - name: ${{ inputs.integrationTestReportArtifactName }}-oracle - path: integration-tests/oracle + name: liquibase-integration-jacoco-test-results-oracle + path: ${{ inputs.sonarRootPath }}/integration-tests/oracle - name: Download postgresql integration tests report if: contains(inputs.dbPlatforms, 'postgresql') uses: actions/download-artifact@v3 with: - name: ${{ inputs.integrationTestReportArtifactName }}-postgresql - path: integration-tests/postgresql + name: liquibase-integration-jacoco-test-results-postgresql + path: ${{ inputs.sonarRootPath }}/integration-tests/postgresql - name: Download h2 integration tests report if: contains(inputs.dbPlatforms, 'h2') uses: actions/download-artifact@v3 with: - name: ${{ inputs.integrationTestReportArtifactName }}-h2 - path: integration-tests/h2 + name: liquibase-integration-jacoco-test-results-h2 + path: ${{ inputs.sonarRootPath }}/integration-tests/h2 - name: Download hsqldb integration tests report if: contains(inputs.dbPlatforms, 'hsqldb') uses: actions/download-artifact@v3 with: - name: ${{ inputs.integrationTestReportArtifactName }}-hsqldb - path: integration-tests/hsqldb + name: liquibase-integration-jacoco-test-results-hsqldb + path: ${{ inputs.sonarRootPath }}/integration-tests/hsqldb - name: Download mariadb integration tests report if: contains(inputs.dbPlatforms, 'mariadb') uses: actions/download-artifact@v3 with: - name: ${{ inputs.integrationTestReportArtifactName }}-mariadb - path: integration-tests/mariadb + name: liquibase-integration-jacoco-test-results-mariadb + path: ${{ inputs.sonarRootPath }}/integration-tests/mariadb - name: Download sqlite integration tests report if: contains(inputs.dbPlatforms, 'sqlite') uses: actions/download-artifact@v3 with: - name: ${{ inputs.integrationTestReportArtifactName }}-sqlite - path: integration-tests/sqlite + name: liquibase-integration-jacoco-test-results-sqlite + path: ${{ inputs.sonarRootPath }}/integration-tests/sqlite - name: Download firebird integration tests report if: contains(inputs.dbPlatforms, 'firebird') uses: actions/download-artifact@v3 with: - name: ${{ inputs.integrationTestReportArtifactName }}-firebird - path: integration-tests/firebird + name: liquibase-integration-jacoco-test-results-firebird + path: ${{ inputs.sonarRootPath }}/integration-tests/firebird - name: Cache SonarCloud packages if: always() @@ -195,52 +196,67 @@ jobs: key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar - - name: Generate dump classes + - name: Generate classes + if: always() run: | - mvn -B clean install surefire-report:report -P 'sonar,!run-proguard' "-Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT" - working-directory: ./${{ inputs.testedClassesModuleName }} + mvn -B clean install -DskipTests -P 'sonar,!run-proguard' "-Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT" - name: Merge integration and unit tests reports if: always() + env: + testedClassesModuleName: ${{ inputs.testedClassesModuleName }} run: | + + mkdir -p target + + mv unit-tests/jacoco.exec target/jacoco-unit.exec - mv unit-tests/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-unit.exec if [ -d "integration-tests/mssql" ]; then - mv integration-tests/mssql/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-mssql-aggregate.exec + mv integration-tests/mssql/jacoco.exec target/jacoco-mssql-aggregate.exec fi if [ -d "integration-tests/mysql" ]; then - mv integration-tests/mysql/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-mysql-aggregate.exec + mv integration-tests/mysql/jacoco.exec target/jacoco-mysql-aggregate.exec fi if [ -d "integration-tests/oracle" ]; then - mv integration-tests/oracle/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-oracle-aggregate.exec + mv integration-tests/oracle/jacoco.exec target/jacoco-oracle-aggregate.exec fi if [ -d "integration-tests/postgresql" ]; then - mv integration-tests/postgresql/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-postgresql-aggregate.exec + mv integration-tests/postgresql/jacoco.exec target/jacoco-postgresql-aggregate.exec fi if [ -d "integration-tests/h2" ]; then - mv integration-tests/h2/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-h2-aggregate.exec + mv integration-tests/h2/jacoco.exec target/jacoco-h2-aggregate.exec fi if [ -d "integration-tests/hsqldb" ]; then - mv integration-tests/hsqldb/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-hsqldb-aggregate.exec + mv integration-tests/hsqldb/jacoco.exec target/jacoco-hsqldb-aggregate.exec fi if [ -d "integration-tests/mariadb" ]; then - mv integration-tests/mariadb/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-mariadb-aggregate.exec + mv integration-tests/mariadb/jacoco.exec target/jacoco-mariadb-aggregate.exec fi if [ -d "integration-tests/sqlite" ]; then - mv integration-tests/sqlite/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-sqlite-aggregate.exec + mv integration-tests/sqlite/jacoco.exec target/jacoco-sqlite-aggregate.exec fi if [ -d "integration-tests/firebird" ]; then - mv integration-tests/firebird/jacoco.exec ./${{ inputs.testedClassesModuleName }}/target/jacoco-firebird-aggregate.exec + mv integration-tests/firebird/jacoco.exec target/jacoco-firebird-aggregate.exec fi wget -q https://github.com/jacoco/jacoco/releases/download/v0.8.10/jacoco-0.8.10.zip - unzip -qq ./jacoco-0.8.10.zip - mv ./lib/jacococli.jar ./${{ inputs.testedClassesModuleName }}/target/jacococli.jar - chmod +x ./${{ inputs.testedClassesModuleName }}/target/jacococli.jar - cd ./${{ inputs.testedClassesModuleName }} - mvn jacoco:merge@cli-merge-results - cd ./target - java -jar jacococli.jar report aggregate.exec --classfiles=../../${{ inputs.testedClassesModuleName }}/target/classdumps + unzip -qq jacoco-0.8.10.zip + mv lib/jacococli.jar target/jacococli.jar + chmod +x target/jacococli.jar + cd target + + java -jar jacococli.jar merge *.exec --destfile merged.exec + + + if [ "${{ env.testedClassesModuleName }}" = "root" ]; then + echo "Tested classes module name: root module" + java -jar jacococli.jar report merged.exec --classfiles ./classes --sourcefiles src --xml jacoco.xml + java -jar jacococli.jar report merged.exec --classfiles ./classes --sourcefiles src --html site + else + echo "Tested classes module name: ${{ env.testedClassesModuleName }}" + java -jar jacococli.jar report merged.exec --classfiles ../${{ env.testedClassesModuleName }}/target/ --sourcefiles ../${{ env.testedClassesModuleName }}/src/ --xml jacoco.xml + java -jar jacococli.jar report merged.exec --classfiles ../${{ env.testedClassesModuleName }}/target/ --sourcefiles ../${{ env.testedClassesModuleName }}/src/ --html site + fi - name: Sonar Branch Scan if: always() && !github.event.pull_request @@ -248,7 +264,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} - working-directory: ./${{ inputs.testedClassesModuleName }} run: | mvn -B sonar:sonar -P 'sonar,!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ @@ -268,7 +283,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }} - working-directory: ./${{ inputs.testedClassesModuleName }} run: | mvn -B sonar:sonar -P 'sonar,!run-proguard' -DskipTests -Dliquibase.version=${{ inputs.liquibaseBranchName }}-SNAPSHOT \ ${{ inputs.mavenArgs }} \ @@ -285,4 +299,4 @@ jobs: -Dsonar.organization=${{ github.repository_owner }} \ -Dsonar.host.url='https://sonarcloud.io' \ -Dsonar.scm.provider=git \ - -Daws.region="us-east-1" + -Daws.region="us-east-1" \ No newline at end of file From 9780a8d178041ce9d2de40945e59b013ef81bbfa Mon Sep 17 00:00:00 2001 From: Alejandro Alvarez Date: Mon, 2 Oct 2023 16:30:45 +0200 Subject: [PATCH 146/147] DAT-15862 (#87) * chore(extension-release-perform.yml): remove unused workflow file chore(extension-release-prepare.yml): update Maven cache configuration to not overwrite settings chore(extension-release-rollback.yml): update extension-release-rollback.yml workflow to version v0.4.4 * chore(create-release.yml): update sonar-push.yml version to v0.4.5 for better compatibility and bug fixes chore(extension-attach-artifact-release.yml): update script file versions to v0.4.5 for better compatibility and bug fixes chore(extension-release-prepare.yml): update extension-release-rollback.yml version to v0.4.5 for better compatibility and bug fixes chore(extension-release-published.yml): update extension-release-prepare.yml version to v0.4.5 for better compatibility and bug fixes chore(os-extension-test.yml): update sonar-pull-request.yml version to v0.4.5 for better compatibility and bug fixes chore(package-deb.yml): update file versions to v0.4.5 for better compatibility and bug fixes chore(pom-release-published.yml): update extension-release-prepare.yml version to v0.4.5 for better compatibility and bug fixes chore(pro-extension-test.yml): update sonar-pull-request.yml version to v0.4.5 for better compatibility and bug fixes --- .github/workflows/create-release.yml | 2 +- .../extension-attach-artifact-release.yml | 8 +++--- .../workflows/extension-release-perform.yml | 26 ------------------- .../workflows/extension-release-prepare.yml | 3 ++- .../workflows/extension-release-published.yml | 2 +- .github/workflows/os-extension-test.yml | 2 +- .github/workflows/package-deb.yml | 8 +++--- .github/workflows/pom-release-published.yml | 2 +- .github/workflows/pro-extension-test.yml | 2 +- 9 files changed, 15 insertions(+), 40 deletions(-) delete mode 100644 .github/workflows/extension-release-perform.yml diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index b8a4ca6e..f551eebc 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -5,7 +5,7 @@ on: jobs: sonar: - uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.4.4 + uses: liquibase/build-logic/.github/workflows/sonar-push.yml@v0.4.5 secrets: inherit create-release: diff --git a/.github/workflows/extension-attach-artifact-release.yml b/.github/workflows/extension-attach-artifact-release.yml index d129797e..2bbb91df 100644 --- a/.github/workflows/extension-attach-artifact-release.yml +++ b/.github/workflows/extension-attach-artifact-release.yml @@ -37,9 +37,9 @@ jobs: - name: Get Reusable Script Files run: | - curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.4/.github/get_draft_release.sh - curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.4/.github/sign_artifact.sh - curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.4/.github/upload_asset.sh + curl -o $PWD/.github/get_draft_release.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.5/.github/get_draft_release.sh + curl -o $PWD/.github/sign_artifact.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.5/.github/sign_artifact.sh + curl -o $PWD/.github/upload_asset.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.5/.github/upload_asset.sh chmod +x $PWD/.github/get_draft_release.sh chmod +x $PWD/.github/sign_artifact.sh chmod +x $PWD/.github/upload_asset.sh @@ -103,7 +103,7 @@ jobs: - name: Get upload_zip.sh Script File if: inputs.zip == 'true' run: | - curl -o $PWD/.github/upload_zip.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.4/.github/upload_zip.sh + curl -o $PWD/.github/upload_zip.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.5/.github/upload_zip.sh chmod +x $PWD/.github/upload_zip.sh - name: Attach Zip File to Draft Release diff --git a/.github/workflows/extension-release-perform.yml b/.github/workflows/extension-release-perform.yml deleted file mode 100644 index 286dcc42..00000000 --- a/.github/workflows/extension-release-perform.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Perform release - -on: - workflow_call: - -jobs: - perform-release: - name: Perform release - runs-on: ubuntu-latest - env: - GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} - steps: - - name: Configure Git - run: | - git config user.name "liquibot" - git config user.email "liquibot@liquibase.org" - - - name: Download release files - id: download-release-files - uses: actions/download-artifact@v3 - with: - name: release-files - - - name: Perform Maven Release - run: | - mvn -B release:perform -Dusername=liquibot -Dpassword=$GITHUB_TOKEN -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -Dmaven.deploy.skip=true" -DreleaseVersion=${{ github.event.inputs.liquibaseVersion }} -DconnectionUrl=scm:git:https://github.com/${{ github.repository }}.git -Dtag=${{ github.event.inputs.liquibaseVersion }} \ No newline at end of file diff --git a/.github/workflows/extension-release-prepare.yml b/.github/workflows/extension-release-prepare.yml index 12b3fb53..7e9b2386 100644 --- a/.github/workflows/extension-release-prepare.yml +++ b/.github/workflows/extension-release-prepare.yml @@ -25,6 +25,7 @@ jobs: java-version: 17 distribution: 'temurin' cache: 'maven' + overwrite-settings: false - name: Configure Git run: | @@ -50,5 +51,5 @@ jobs: release-rollback: needs: prepare-release if: ${{ always() && contains(needs.*.result, 'failure') }} - uses: liquibase/build-logic/.github/workflows/extension-release-rollback.yml@v0.3.4 + uses: liquibase/build-logic/.github/workflows/extension-release-rollback.yml@v0.4.5 secrets: inherit diff --git a/.github/workflows/extension-release-published.yml b/.github/workflows/extension-release-published.yml index 9f210e79..32a66fed 100644 --- a/.github/workflows/extension-release-published.yml +++ b/.github/workflows/extension-release-published.yml @@ -68,5 +68,5 @@ jobs: maven-release: needs: release - uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.4.4 + uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.4.5 secrets: inherit \ No newline at end of file diff --git a/.github/workflows/os-extension-test.yml b/.github/workflows/os-extension-test.yml index 49b2dcae..73db1873 100644 --- a/.github/workflows/os-extension-test.yml +++ b/.github/workflows/os-extension-test.yml @@ -98,5 +98,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.4 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.5 secrets: inherit diff --git a/.github/workflows/package-deb.yml b/.github/workflows/package-deb.yml index 4d34c56c..e552c06c 100644 --- a/.github/workflows/package-deb.yml +++ b/.github/workflows/package-deb.yml @@ -54,10 +54,10 @@ jobs: # Under the src folder is where specific packages files live. The GitHub action inputs will modify the universal package-deb-pom.xml to tell the process which assets to use during the packaging step mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/deb/control mkdir -p $PWD/.github/src/${{ inputs.artifactId }}/main/archive - curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/control https://raw.githubusercontent.com/liquibase/build-logic/v0.4.4/src/${{ inputs.artifactId }}/deb/control/control - curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/postinst https://raw.githubusercontent.com/liquibase/build-logic/v0.4.4/src/${{ inputs.artifactId }}/deb/control/postinst - curl -o $PWD/.github/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.4/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh - curl -o $PWD/.github/package-deb-pom.xml https://raw.githubusercontent.com/liquibase/build-logic/v0.4.4/.github/package-deb-pom.xml + curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/control https://raw.githubusercontent.com/liquibase/build-logic/v0.4.5/src/${{ inputs.artifactId }}/deb/control/control + curl -o $PWD/.github/src/${{ inputs.artifactId }}/deb/control/postinst https://raw.githubusercontent.com/liquibase/build-logic/v0.4.5/src/${{ inputs.artifactId }}/deb/control/postinst + curl -o $PWD/.github/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh https://raw.githubusercontent.com/liquibase/build-logic/v0.4.5/src/${{ inputs.artifactId }}/main/archive/${{ inputs.artifactId }}-env.sh + curl -o $PWD/.github/package-deb-pom.xml https://raw.githubusercontent.com/liquibase/build-logic/v0.4.5/.github/package-deb-pom.xml - name: Set up Maven uses: stCarolas/setup-maven@v4.5 diff --git a/.github/workflows/pom-release-published.yml b/.github/workflows/pom-release-published.yml index 5ea84a91..14e792e0 100644 --- a/.github/workflows/pom-release-published.yml +++ b/.github/workflows/pom-release-published.yml @@ -68,5 +68,5 @@ jobs: maven-release: needs: release - uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.4.4 + uses: liquibase/build-logic/.github/workflows/extension-release-prepare.yml@v0.4.5 secrets: inherit \ No newline at end of file diff --git a/.github/workflows/pro-extension-test.yml b/.github/workflows/pro-extension-test.yml index 0209be7a..e1558551 100644 --- a/.github/workflows/pro-extension-test.yml +++ b/.github/workflows/pro-extension-test.yml @@ -204,5 +204,5 @@ jobs: sonar-pr: needs: [ unit-test ] - uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.4 + uses: liquibase/build-logic/.github/workflows/sonar-pull-request.yml@v0.4.5 secrets: inherit From 681acdf04a585ac168541ce516f4d2adf9643f04 Mon Sep 17 00:00:00 2001 From: Sayali Mohadikar <76010603+sayaliM0412@users.noreply.github.com> Date: Mon, 2 Oct 2023 07:42:19 -0700 Subject: [PATCH 147/147] revert https://github.com/liquibase/build-logic/pull/80 (#85) Co-authored-by: Sayali M --- .github/workflows/ci-report.yml | 52 ----------- .github/workflows/ci.yml | 148 -------------------------------- README.md | 2 - 3 files changed, 202 deletions(-) delete mode 100644 .github/workflows/ci-report.yml delete mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci-report.yml b/.github/workflows/ci-report.yml deleted file mode 100644 index aacace5f..00000000 --- a/.github/workflows/ci-report.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: 'Continuous Integration - Report' - -on: - push: - branches: - - main - workflow_dispatch: - -jobs: - test-report: - name: Report Test Results - runs-on: ubuntu-latest - if: github.event.workflow_run.conclusion != 'skipped' - - steps: - - uses: actions/checkout@v3 - - - name: Download and Extract Artifacts - env: - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - run: | - mvn -B liquibase-sdk:download-snapshot-artifacts \ - -Dliquibase.sdk.repo=${{ github.repository }} \ - -Dliquibase.sdk.runId=${{ github.event.workflow_run.id }} \ - -Dliquibase.sdk.downloadDirectory=artifacts \ - -Dliquibase.sdk.artifactPattern=* \ - -Dliquibase.sdk.unzipArtifacts=true - - - name: Publish Unit Test Results - uses: EnricoMi/publish-unit-test-result-action@v2 - with: - commit: ${{ github.event.workflow_run.head_sha }} - event_file: artifacts/Event File/event.json - event_name: ${{ github.event.workflow_run.event }} - junit_files: "artifacts/test-reports-*/**/*.xml" - - build-testing-comment: - name: Add Build Testing Comment - runs-on: ubuntu-latest - if: github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.head_branch != 'main' - - steps: - - uses: actions/checkout@v3 - - - name: Create "BUILD_TESTING" comment - env: - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - run: | - mvn -B liquibase-sdk:set-pull-request-comment \ - -Dliquibase.sdk.repo=${{ github.repository }} \ - -Dliquibase.sdk.pr.newComment=BUILD_TESTING \ - -Dliquibase.sdk.pr.definition=${{ github.event.workflow_run.head_branch }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index ec764c2c..00000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,148 +0,0 @@ -name: Continuous Integration - -# Job will run nightly at 02:05 EDT / 01:05 CDT -# Time below is UTC -on: - workflow_call: - -jobs: - build: - name: Build & Package - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - - name: Set up JDK 17 - uses: actions/setup-java@v2 - with: - java-version: 17 - distribution: 'temurin' - cache: 'maven' - - - name: Install liquibase-core 0-SNAPSHOT - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: mvn -B clean liquibase-sdk:install-snapshot -Dliquibase.sdk.branchSearch=MATCHING_BRANCHES,master - - - name: Build and Package - run: mvn -B dependency:go-offline clean package -DskipTests=true - - - name: Save Artifacts - uses: actions/upload-artifact@v2 - with: - name: liquibase-bigquery-artifacts - path: | - target/*.jar - - - name: Save Event File - uses: actions/upload-artifact@v3 - with: - name: Event File - path: ${{ github.event_path }} - - - name: Build Cache - uses: actions/cache@v3.0.5 - with: - key: build-${{ github.run_number }}-${{ github.run_attempt }} - path: | - **/target/** - ~/.m2/repository/org/liquibase/ - - unit-test: - name: Test Java ${{ matrix.java }} - runs-on: ubuntu-latest - needs: build - - strategy: - fail-fast: false - matrix: - java: [ 8, 11, 17, 18 ] - - steps: - - uses: actions/checkout@v3 - - - name: Set up JDK ${{ matrix.java }} - uses: actions/setup-java@v2 - with: - java-version: ${{ matrix.java }} - distribution: 'temurin' - cache: 'maven' - - - name: Build Cache - uses: actions/cache@v3.0.5 - with: - key: build-${{ github.run_number }}-${{ github.run_attempt }} - path: | - **/target/** - ~/.m2/repository/org/liquibase/ - - - name: Run Tests - run: mvn -B jacoco:prepare-agent surefire:test - - - name: Archive Test Results - if: ${{ always() }} - uses: actions/upload-artifact@v2 - with: - name: test-reports-jdk-${{ matrix.java }} - path: | - **/target/surefire-reports - **/target/jacoco.exec - - integration-test: - name: Test Harness for BigQuery - needs: build - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - - name: Set up JDK - uses: actions/setup-java@v2 - with: - java-version: 17 - distribution: 'temurin' - cache: 'maven' - - - name: Build Cache - uses: actions/cache@v3.0.5 - with: - key: build-${{ github.run_number }}-${{ github.run_attempt }} - path: | - **/target/** - ~/.m2/repository/org/liquibase/ - - - name: Run Test Harness Tests - run: mvn -B jacoco:prepare-agent surefire:test -Dit.test=LiquibaseHarnessSuiteIT - - - name: Archive Test Results - if: ${{ always() }} - uses: actions/upload-artifact@v2 - with: - name: test-reports-bigquery-integration - path: | - **/target/surefire-reports - **/target/jacoco.exec - - dependabot: - name: Merge dependabot - runs-on: ubuntu-latest - needs: integration-test - permissions: - contents: write - pull-requests: write - if: ${{ github.actor == 'dependabot[bot]' }} - - steps: - - name: Dependabot metadata - id: dependabot-metadata - uses: dependabot/fetch-metadata@v1.3.1 - - - name: Approve patch and minor updates - if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-patch' || steps.dependabot-metadata.outputs.update-type == 'version-update:semver-minor'}} - run: | - gh pr merge --auto --merge "$PR_URL" - gh pr review $PR_URL --approve -b "I'm **approving** this pull request because **it includes a patch or minor update**" - env: - PR_URL: ${{github.event.pull_request.html_url}} - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/README.md b/README.md index 9af791a0..ad3e88d5 100644 --- a/README.md +++ b/README.md @@ -79,8 +79,6 @@ Please review the below table of reusable workflows and their descriptions: | `sonar-test-scan.yml` | Code Coverage Scan for unit and integration tests | | `sonar-push.yml` | Same as PR job, but for pushes to main. Does not require branch name parameter | | `snyk-nightly.yml` | Nightly Security Scans | -| `ci.yml` | Run unit, integrations tests against the new liquibase SNAPSHOT | -| `ci-report.yml` | Extract results obtained from ci.yml and generate a report | | various shell scripts | helper scripts for getting the draft release, signing artifacts, and uploading assets | ## Requirements