From 737e3c6017af62d41d34a470bcbe3098e93fdf43 Mon Sep 17 00:00:00 2001 From: Christoph Pirkl Date: Thu, 30 Oct 2025 14:35:24 +0100 Subject: [PATCH 1/9] Upgrade Projecr Keeper --- .gitattributes | 16 +- .github/workflows/broken_links_checker.yml | 50 ++-- .github/workflows/ci-build-next-java.yml | 35 --- .github/workflows/ci-build.yml | 238 +++++++++++++--- .github/workflows/dependencies_check.yml | 95 ++++++- .github/workflows/dependencies_update.yml | 185 +++++++++++++ .github/workflows/release.yml | 262 ++++++++++++++++++ ...elease_droid_prepare_original_checksum.yml | 31 --- .../release_droid_print_quick_checksum.yml | 24 -- ...release_droid_release_on_maven_central.yml | 30 -- ...ase_droid_upload_github_release_assets.yml | 44 --- .gitignore | 1 + .project-keeper.yml | 2 - .settings/org.eclipse.jdt.core.prefs | 26 +- .settings/org.eclipse.jdt.ui.prefs | 6 + .vscode/settings.json | 34 ++- README.md | 4 +- SECURITY.md | 25 ++ dependencies.md | 126 +++++---- doc/changes/changelog.md | 2 + .../{changes-2.0.0.md => changes_2.0.0.md} | 0 doc/changes/changes_2.0.4.md | 43 +++ pk_generated_parent.pom | 210 ++++++++++---- pom.xml | 55 +--- release_config.yml | 4 - src/test/resources/logging.properties | 2 +- 26 files changed, 1129 insertions(+), 421 deletions(-) delete mode 100644 .github/workflows/ci-build-next-java.yml create mode 100644 .github/workflows/dependencies_update.yml create mode 100644 .github/workflows/release.yml delete mode 100644 .github/workflows/release_droid_prepare_original_checksum.yml delete mode 100644 .github/workflows/release_droid_print_quick_checksum.yml delete mode 100644 .github/workflows/release_droid_release_on_maven_central.yml delete mode 100644 .github/workflows/release_droid_upload_github_release_assets.yml create mode 100644 SECURITY.md rename doc/changes/{changes-2.0.0.md => changes_2.0.0.md} (100%) create mode 100644 doc/changes/changes_2.0.4.md delete mode 100644 release_config.yml diff --git a/.gitattributes b/.gitattributes index bb03870..d674325 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,11 +1,11 @@ + +SECURITY.md linguist-generated=true pk_generated_parent.pom linguist-generated=true dependencies.md linguist-generated=true doc/changes/changelog.md linguist-generated=true -broken_links_checker.yml linguist-generated=true -ci-build-next-java.yml linguist-generated=true -ci-build.yml linguist-generated=true -dependencies_check.yml linguist-generated=true -release_droid_prepare_original_checksum.yml linguist-generated=true -release_droid_print_quick_checksum.yml linguist-generated=true -release_droid_release_on_maven_central.yml linguist-generated=true -release_droid_upload_github_release_assets.yml linguist-generated=true +.github/workflows/broken_links_checker.yml linguist-generated=true +.github/workflows/ci-build.yml linguist-generated=true +.github/workflows/dependencies_check.yml linguist-generated=true +.github/workflows/dependencies_update.yml linguist-generated=true +.github/workflows/release.yml linguist-generated=true +src/test/resources/logging.properties linguist-generated=true diff --git a/.github/workflows/broken_links_checker.yml b/.github/workflows/broken_links_checker.yml index c4ff3be..ee8df76 100644 --- a/.github/workflows/broken_links_checker.yml +++ b/.github/workflows/broken_links_checker.yml @@ -1,30 +1,44 @@ +# This file was generated by Project Keeper. name: Broken Links Checker - on: schedule: - - cron: "0 5 * * 0" - push: - branches: - - main - pull_request: - + - { + cron: 0 5 * * 0 + } + workflow_dispatch: null jobs: linkChecker: runs-on: ubuntu-latest - concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + permissions: { + contents: read + } + defaults: + run: { + shell: bash + } + concurrency: { + group: '${{ github.workflow }}-${{ github.ref }}', cancel-in-progress: true + } steps: - - uses: actions/checkout@v3 - - name: Configure broken links checker + - { + id: checkout, + uses: actions/checkout@v5 + } + - id: configure-broken-links-checker + name: Configure broken links checker run: | mkdir -p ./target echo '{"aliveStatusCodes": [429, 200], "ignorePatterns": [' \ - '{"pattern": "^https?://(www|dev).mysql.com/"},' \ - '{"pattern": "^https?://(www.)?opensource.org"}' \ - ']}' > ./target/broken_links_checker.json - - uses: gaurav-nelson/github-action-markdown-link-check@v1 - with: - use-quiet-mode: 'yes' - use-verbose-mode: 'yes' + '{"pattern": "^https?://(www|dev).mysql.com/"},' \ + '{"pattern": "^https?://(www.)?opensource.org"}' \ + '{"pattern": "^https?://(www.)?eclipse.org"}' \ + '{"pattern": "^https?://projects.eclipse.org"}' \ + ']}' > ./target/broken_links_checker.json + - id: run-broken-links-checker + uses: tcort/github-action-markdown-link-check@v1 + with: { + use-quiet-mode: yes, + use-verbose-mode: yes, config-file: ./target/broken_links_checker.json + } diff --git a/.github/workflows/ci-build-next-java.yml b/.github/workflows/ci-build-next-java.yml deleted file mode 100644 index e0c15cf..0000000 --- a/.github/workflows/ci-build-next-java.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: CI Build next Java - -on: - push: - branches: - - main - pull_request: - -jobs: - java-17-compatibility: - runs-on: ubuntu-latest - concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - steps: - - name: Checkout the repository - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Set up JDK 17 - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: 17 - cache: 'maven' - - name: Run tests and build with Maven - run: | - mvn --batch-mode --update-snapshots clean package -DtrimStackTrace=false \ - -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn - - name: Publish Test Report - uses: scacap/action-surefire-report@v1 - if: ${{ always() && github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]' }} - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - fail_if_no_tests: false diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index e520870..aa273bf 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -1,55 +1,231 @@ +# This file was generated by Project Keeper. name: CI Build - on: push: - branches: - - main + branches: [ + main, + release/* + ] + pull_request: - + types: [ + opened, + synchronize, + reopened, + ready_for_review + ] + + workflow_dispatch: null jobs: - build: + build-and-test: runs-on: ubuntu-latest - concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + defaults: + run: { + shell: bash + } + permissions: { + contents: read, + issues: read + } + concurrency: { + group: '${{ github.workflow }}-build-and-test-${{ github.ref }}', cancel-in-progress: true + } + outputs: { + release-required: '${{ steps.check-release.outputs.release-required }}' + } steps: + - name: Free Disk Space + id: free-disk-space + if: ${{ false }} + run: | + sudo rm -rf /usr/local/lib/android + sudo rm -rf /usr/share/dotnet - name: Checkout the repository - uses: actions/checkout@v3 - with: + id: checkout + uses: actions/checkout@v5 + with: { fetch-depth: 0 - - name: Set up JDK 11 - uses: actions/setup-java@v3 + } + - name: Set up JDKs + id: setup-java + uses: actions/setup-java@v5 with: - distribution: 'temurin' - java-version: 11 - cache: 'maven' + distribution: temurin + java-version: |- + 11 + 17 + cache: maven + server-id: ossindex + server-username: OSSINDEX_USERNAME + server-password: OSSINDEX_API_TOKEN - name: Cache SonarCloud packages - uses: actions/cache@v3 - with: - path: ~/.sonar/cache - key: ${{ runner.os }}-sonar - restore-keys: ${{ runner.os }}-sonar - - name: Enable testcontainer reuse + id: cache-sonar + uses: actions/cache@v4 + with: { + path: ~/.sonar/cache, + key: '${{ runner.os }}-sonar', + restore-keys: '${{ runner.os }}-sonar' + } + - { + name: Enable testcontainer reuse, + id: enable-testcontainer-reuse, run: echo 'testcontainers.reuse.enable=true' > "$HOME/.testcontainers.properties" + } - name: Run tests and build with Maven + id: build-pk-verify run: | mvn --batch-mode clean verify \ -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \ -DtrimStackTrace=false - - name: Publish Test Report - uses: scacap/action-surefire-report@v1 - if: ${{ always() && github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]' }} - with: - github_token: ${{ secrets.GITHUB_TOKEN }} + env: { + OSSINDEX_USERNAME: '${{ secrets.OSSINDEX_USERNAME }}', + OSSINDEX_API_TOKEN: '${{ secrets.OSSINDEX_API_TOKEN }}' + } - name: Sonar analysis + id: sonar-analysis if: ${{ env.SONAR_TOKEN != null }} run: | mvn --batch-mode org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \ -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \ -DtrimStackTrace=false \ - -Dsonar.organization=exasol \ - -Dsonar.host.url=https://sonarcloud.io \ - -Dsonar.login=$SONAR_TOKEN - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} \ No newline at end of file + -Dsonar.token=$SONAR_TOKEN + env: { + GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}', + SONAR_TOKEN: '${{ secrets.SONAR_TOKEN }}' + } + - name: Verify Release Artifacts + id: verify-release-artifacts + run: "print_message() {\n local -r message=$1\n echo \"$message\"\n echo \"$message\" >> \"$GITHUB_STEP_SUMMARY\"\n}\n\nprint_message \"### Release Artifacts\"\n\nIFS=$'\\n' artifacts_array=($ARTIFACTS)\nmissing_files=()\nfor file in \"${artifacts_array[@]}\";\ndo \n echo \"Checking if file $file exists...\"\n if ! [[ -f \"$file\" ]]; then\n print_message \"* ⚠️ \\`$file\\` does not exist ⚠️\"\n echo \"Content of directory $(dirname \"$file\"):\"\n ls \"$(dirname \"$file\")\"\n missing_files+=(\"$file\")\n else\n print_message \"* \\`$file\\` ✅\" \n fi\ndone\nprint_message \"\"\nnumber_of_missing_files=${#missing_files[@]}\nif [[ $number_of_missing_files -gt 0 ]]; then\n print_message \"⚠️ $number_of_missing_files release artifact(s) missing ⚠️\"\n exit 1\nfi\n" + env: { + ARTIFACTS: '${{ steps.build-pk-verify.outputs.release-artifacts }}' + } + - name: Upload artifacts + id: upload-artifacts + uses: actions/upload-artifact@v4 + with: { + name: artifacts, + path: '${{ steps.build-pk-verify.outputs.release-artifacts }}', + retention-days: 5 + } + - name: Configure link check + id: configure-link-check + run: | + mkdir -p ./target + echo '{"aliveStatusCodes": [429, 200], "ignorePatterns": [' \ + '{"pattern": "^https?://(www|dev).mysql.com/"},' \ + '{"pattern": "^https?://(www.)?opensource.org"}' \ + '{"pattern": "^https?://(www.)?eclipse.org"}' \ + '{"pattern": "^https?://projects.eclipse.org"}' \ + ']}' > ./target/broken_links_checker.json + - uses: tcort/github-action-markdown-link-check@v1 + id: run-link-check + with: { + use-quiet-mode: yes, + use-verbose-mode: yes, + config-file: ./target/broken_links_checker.json + } + next-java-compatibility: + runs-on: ubuntu-latest + defaults: + run: { + shell: bash + } + permissions: { + contents: read + } + concurrency: { + group: '${{ github.workflow }}-next-java-${{ github.ref }}', + cancel-in-progress: true + } + steps: + - name: Checkout the repository + id: checkout + uses: actions/checkout@v5 + with: { + fetch-depth: 0 + } + - name: Set up JDK 17 + id: setup-java + uses: actions/setup-java@v5 + with: { + distribution: temurin, + java-version: '17', + cache: maven, + server-id: ossindex, + server-username: OSSINDEX_USERNAME, + server-password: OSSINDEX_API_TOKEN + } + - name: Run tests and build with Maven 17 + id: build-next-java + run: mvn --batch-mode clean package -DtrimStackTrace=false -Djava.version=17 + env: { + OSSINDEX_USERNAME: '${{ secrets.OSSINDEX_USERNAME }}', + OSSINDEX_API_TOKEN: '${{ secrets.OSSINDEX_API_TOKEN }}' + } + build: + needs: [ + build-and-test, + next-java-compatibility + ] + runs-on: ubuntu-latest + defaults: + run: { + shell: bash + } + permissions: { + contents: read, + issues: read + } + outputs: { + release-required: '${{ steps.check-release.outputs.release-required }}' + } + steps: + - name: Checkout the repository + id: checkout + uses: actions/checkout@v5 + with: { + fetch-depth: 0 + } + - name: Set up JDKs + id: setup-java + uses: actions/setup-java@v5 + with: + distribution: temurin + java-version: |- + 11 + 17 + cache: maven + - name: Check if release is needed + id: check-release + if: ${{ github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/') }} + run: | + if mvn --batch-mode com.exasol:project-keeper-maven-plugin:verify-release --projects .; then + echo "### ✅ Release preconditions met, start release" >> "$GITHUB_STEP_SUMMARY" + echo "release-required=true" >> "$GITHUB_OUTPUT" + else + echo "### 🛑 Not all release preconditions met, skipping release" >> "$GITHUB_STEP_SUMMARY" + echo "See log output for details." >> "$GITHUB_STEP_SUMMARY" + echo "release-required=false" >> "$GITHUB_OUTPUT" + fi + env: { + GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' + } + start_release: + needs: build + if: ${{ needs.build.outputs.release-required == 'true' }} + concurrency: { + cancel-in-progress: false, + group: release + } + secrets: inherit + permissions: { + contents: write, + actions: read, + issues: read + } + uses: ./.github/workflows/release.yml + with: { + started-from-ci: true, + maven-central-auto-publish: true + } diff --git a/.github/workflows/dependencies_check.yml b/.github/workflows/dependencies_check.yml index b2ab231..b0877fc 100644 --- a/.github/workflows/dependencies_check.yml +++ b/.github/workflows/dependencies_check.yml @@ -1,20 +1,87 @@ -name: Dependencies Check - +# This file was generated by Project Keeper. +name: Report Security Issues on: + workflow_dispatch: null schedule: - - cron: "0 2 * * *" - + - { + cron: 0 2 * * * + } jobs: - build: + report_security_issues: runs-on: ubuntu-latest - + defaults: + run: { + shell: bash + } + permissions: { + contents: read, + issues: write + } + outputs: { + created-issues: '${{ steps.create-security-issues.outputs.created-issues }}' + } + concurrency: { + group: '${{ github.workflow }}-report_security_issues', + cancel-in-progress: true + } steps: - - uses: actions/checkout@v3 - - name: Set up JDK 11 - uses: actions/setup-java@v3 + - { + name: Checkout, + id: checkout, + uses: actions/checkout@v5 + } + - name: Set up JDKs + id: setup-jdks + uses: actions/setup-java@v5 with: - distribution: 'temurin' - java-version: 11 - cache: 'maven' - - name: Checking dependencies for vulnerabilities - run: mvn --batch-mode org.sonatype.ossindex.maven:ossindex-maven-plugin:audit -f pom.xml \ No newline at end of file + distribution: temurin + java-version: |- + 11 + 17 + cache: maven + server-id: ossindex + server-username: OSSINDEX_USERNAME + server-password: OSSINDEX_API_TOKEN + - name: Generate ossindex report + id: ossindex-report + run: | + mvn --batch-mode org.sonatype.ossindex.maven:ossindex-maven-plugin:audit \ + org.sonatype.ossindex.maven:ossindex-maven-plugin:audit-aggregate \ + -Dossindex.reportFile=$(pwd)/ossindex-report.json \ + -Dossindex.fail=false + env: { + OSSINDEX_USERNAME: '${{ secrets.OSSINDEX_USERNAME }}', + OSSINDEX_API_TOKEN: '${{ secrets.OSSINDEX_API_TOKEN }}' + } + - name: Create GitHub Issues + id: create-security-issues + uses: exasol/python-toolbox/.github/actions/security-issues@1.9.0 + with: { + format: maven, + command: cat ossindex-report.json, + github-token: '${{ secrets.GITHUB_TOKEN }}' + } + - name: Output security issues (Debugging) + id: debug-print-security-issues + run: | + echo "$CREATED_ISSUES" > test.jsonl + cat test.jsonl + env: { + CREATED_ISSUES: '${{ steps.create-security-issues.outputs.created-issues }}' + } + start_dependency_udpate: + needs: report_security_issues + if: ${{ needs.report_security_issues.outputs.created-issues }} + concurrency: { + group: '${{ github.workflow }}-start_dependency_update', + cancel-in-progress: false + } + secrets: inherit + permissions: { + contents: write, + pull-requests: write + } + uses: ./.github/workflows/dependencies_update.yml + with: { + vulnerability_issues: '${{ needs.report_security_issues.outputs.created-issues }}' + } diff --git a/.github/workflows/dependencies_update.yml b/.github/workflows/dependencies_update.yml new file mode 100644 index 0000000..2ba2785 --- /dev/null +++ b/.github/workflows/dependencies_update.yml @@ -0,0 +1,185 @@ +# This file was generated by Project Keeper. +name: Update dependencies +on: + workflow_call: + inputs: + vulnerability_issues: { + description: GitHub issues for vulnerable dependencies as JSONL, + required: true, + type: string + } + secrets: + INTEGRATION_TEAM_SLACK_NOTIFICATION_WEBHOOK: { + description: Slack webhook URL for notifications about failed builds., + required: true + } + INTEGRATION_TEAM_SECURITY_UPDATES_WEBHOOK: { + description: Slack webhook URL for notifications about new Pull Requests., + required: true + } + workflow_dispatch: null +jobs: + update_dependencies: + runs-on: ubuntu-latest + defaults: + run: { + shell: bash + } + permissions: { + contents: write, + pull-requests: write + } + concurrency: { + group: '${{ github.workflow }}', + cancel-in-progress: false + } + steps: + - uses: actions/checkout@v5 + id: checkout + with: { + fetch-depth: 0 + } + - name: Set up JDKs + id: setup-jdks + uses: actions/setup-java@v5 + with: + distribution: temurin + java-version: |- + 11 + 17 + cache: maven + - name: Print issues + id: debug-print-issues + run: | + echo "Issues from Action input: $ISSUES" + env: { + ISSUES: '${{ inputs.vulnerability_issues }}' + } + - name: Fail if not running on a branch + id: check-branch + if: ${{ !startsWith(github.ref, 'refs/heads/') }} + uses: actions/github-script@v8 + with: + script: | + core.setFailed('Not running on a branch, github.ref is ${{ github.ref }}. Please start this workflow only on main or a branch') + - name: Update dependencies + id: update-dependencies + run: | + mvn --batch-mode com.exasol:project-keeper-maven-plugin:update-dependencies --projects . \ + -Dproject-keeper:vulnerabilities="$CREATED_ISSUES" + env: { + CREATED_ISSUES: '${{ inputs.vulnerability_issues }}' + } + - name: Generate Pull Request comment + id: pr-comment + run: | + echo 'comment<> "$GITHUB_OUTPUT" + echo 'This Pull Request was created by [`dependencies_update.yml`](https://github.com/exasol/project-keeper/blob/main/project-keeper/src/main/resources/templates/.github/workflows/dependencies_update.yml) workflow.' >> "$GITHUB_OUTPUT" + if [ -n "$CREATED_ISSUES" ]; then + echo 'It updates dependencies to fix the following vulnerabilities:' >> "$GITHUB_OUTPUT" + echo $CREATED_ISSUES | jq --raw-output '. | "* Closes " + .issue_url + " (" + .cve + ")"' >> "$GITHUB_OUTPUT" + else + echo 'It updates dependencies.' >> "$GITHUB_OUTPUT" + fi + echo >> "$GITHUB_OUTPUT" + echo '# ⚠️ Notes ⚠️' >> "$GITHUB_OUTPUT" + echo '## Run PK fix manually' >> "$GITHUB_OUTPUT" + echo 'Due to restrictions workflow `dependencies_update.yml` cannot update other workflows, see https://github.com/exasol/project-keeper/issues/578 for details.' >> "$GITHUB_OUTPUT" + echo 'Please checkout this PR locally and run `mvn com.exasol:project-keeper-maven-plugin:fix --projects .`' >> "$GITHUB_OUTPUT" + echo '## This PR does not trigger CI workflows' >> "$GITHUB_OUTPUT" + echo 'Please click the **Close pull request** button and then **Reopen pull request** to trigger running checks.' >> "$GITHUB_OUTPUT" + echo 'See https://github.com/exasol/project-keeper/issues/534 for details.' >> "$GITHUB_OUTPUT" + echo 'EOF' >> "$GITHUB_OUTPUT" + + cat "$GITHUB_OUTPUT" + env: { + CREATED_ISSUES: '${{ inputs.vulnerability_issues }}' + } + - name: Generate Pull Request Title + id: pr-title + run: | + if [ -n "$CREATED_ISSUES" ]; then + echo "Security issues are available" + echo "title=🔐 Update dependencies to fix vulnerabilities" >> "$GITHUB_OUTPUT" + else + echo "Security issues are not available" + echo "title=Update dependencies" >> "$GITHUB_OUTPUT" + fi + + cat "$GITHUB_OUTPUT" + env: { + CREATED_ISSUES: '${{ inputs.vulnerability_issues }}' + } + - name: Configure git + id: configure-git + run: | + git config --global user.email "opensource@exasol.com" + git config --global user.name "Automatic Dependency Updater" + - name: Create branch + id: create-branch + if: ${{ github.ref == 'refs/heads/main' }} + run: | + branch_name="dependency-update/$(date "+%Y%m%d%H%M%S")" + echo "Creating branch $branch_name" + git checkout -b "$branch_name" + - name: Commit changes & push + id: publish-branch + if: ${{ startsWith(github.ref, 'refs/heads/' ) }} + run: | + branch_name=$(git rev-parse --abbrev-ref HEAD) + echo "Current branch: $branch_name" + echo "git diff --stat" + git diff --stat + echo "git diff --numstat" + git diff --numstat + echo "git diff --name-status" + git diff --name-status + echo "Adding untracked files:" + git add . --verbose --all + echo "Committing changes..." + git commit --message "$TITLE" + echo "Pushing branch $branch_name..." + git push --set-upstream origin "$branch_name" + echo "Done." + env: { + TITLE: '${{ steps.pr-title.outputs.title }}' + } + - name: Create pull request + id: create-pr + if: ${{ github.ref == 'refs/heads/main' }} + run: | + pr_url=$(gh pr create --base main --title "$TITLE" --body "$COMMENT") + echo "Created Pull Request: $pr_url" + echo "pr_url=$pr_url" >> "$GITHUB_OUTPUT" + env: { + COMMENT: '${{ steps.pr-comment.outputs.comment }}', + TITLE: '${{ steps.pr-title.outputs.title }}', + GH_TOKEN: '${{ github.token }}' + } + - name: Report failure Status to Slack channel + id: report-failure-slack + if: ${{ always() }} + uses: ravsamhq/notify-slack-action@v2 + with: { + status: '${{ job.status }}', + token: '${{ secrets.GITHUB_TOKEN }}', + notification_title: 'Dependency check in {repo} has {status_message}', + message_format: '{emoji} *{workflow}* {status_message} in <{repo_url}|{repo}>', + notify_when: 'failure,cancelled,warnings' + } + env: { + SLACK_WEBHOOK_URL: '${{ secrets.INTEGRATION_TEAM_SLACK_NOTIFICATION_WEBHOOK }}' + } + - name: Report new Pull Request to Slack channel + id: report-pr-slack + if: ${{ steps.create-pr.outputs.pr_url }} + uses: ravsamhq/notify-slack-action@v2 + with: { + status: '${{ job.status }}', + token: '${{ secrets.GITHUB_TOKEN }}', + notification_title: 'Dependency update for {repo} created a Pull Request', + message_format: '{workflow} created Pull Request ${{ steps.create-pr.outputs.pr_url }}' + } + env: { + SLACK_WEBHOOK_URL: '${{ secrets.INTEGRATION_TEAM_SECURITY_UPDATES_WEBHOOK }}' + } diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..dbc1ea2 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,262 @@ +# This file was generated by Project Keeper. +name: Release +on: + workflow_call: + inputs: + started-from-ci: { + description: 'Marks this release as started from CI, skipping precondition check', + type: boolean, + required: true, + default: false + } + maven-central-auto-publish: { + description: 'Automatically publish to Maven Central. Deactivate to manually publish at https://central.sonatype.com/publishing/deployments', + required: true, + type: boolean, + default: true + } + secrets: + OSSRH_GPG_SECRET_KEY: { + description: Base64 encoded GPG secret key for signing artifacts for deployment to Maven Central., + required: false + } + OSSRH_GPG_SECRET_KEY_PASSWORD: { + description: 'Password for the GPG key. Must not contain special characters, only letters and numbers.', + required: false + } + MAVEN_CENTRAL_PORTAL_USERNAME: { + description: Username for the Maven Central Portal., + required: false + } + MAVEN_CENTRAL_PORTAL_TOKEN: { + description: Password for the Maven Central Portal., + required: false + } + INTEGRATION_TEAM_SLACK_NOTIFICATION_WEBHOOK: { + description: Slack webhook URL for notifications about failed and succesful releases., + required: true + } + workflow_dispatch: + inputs: + skip-maven-central: { + description: Skip deployment to Maven Central, + required: true, + type: boolean, + default: false + } + maven-central-auto-publish: { + description: 'Automatically publish to Maven Central. Deactivate to manually publish at https://central.sonatype.com/publishing/deployments', + required: true, + type: boolean, + default: true + } + skip-github-release: { + description: Skip creating the GitHub release, + required: true, + type: boolean, + default: false + } +jobs: + release: + runs-on: ubuntu-latest + defaults: + run: { + shell: bash + } + concurrency: { + group: '${{ github.workflow }}', + cancel-in-progress: false + } + permissions: { + contents: write, + actions: read, + issues: read + } + steps: + - name: Checkout the repository + id: checkout + uses: actions/checkout@v5 + with: { + fetch-depth: 0 + } + - name: Set up Maven Central Repository + id: configure-maven-central-credentials + if: ${{ true }} + uses: actions/setup-java@v5 + with: + distribution: temurin + java-version: |- + 11 + 17 + cache: maven + server-id: maven-central-portal + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + gpg-private-key: ${{ secrets.OSSRH_GPG_SECRET_KEY }} + gpg-passphrase: MAVEN_GPG_PASSPHRASE + - name: Set up JDKs + id: setup-jdks + if: ${{ ! true }} + uses: actions/setup-java@v5 + with: + distribution: temurin + java-version: |- + 11 + 17 + cache: maven + - name: Fail if not running on main or release branch + id: check-main-or-release-branch + if: ${{ github.ref != 'refs/heads/main' && !startsWith(github.ref, 'refs/heads/release/') }} + uses: actions/github-script@v8 + with: + script: | + core.setFailed('Not running on main or release branch, github.ref is ${{ github.ref }}. Please start this workflow only on main or a branch starting with release/') + - name: Check CI build of this commit succeeded + id: check-ci-build-status + if: ${{ ! inputs.started-from-ci }} + run: | + echo "Commit SHA: $COMMIT_SHA" + echo "Branch: $BRANCH_NAME" + gh run list --workflow ci-build.yml --branch $BRANCH_NAME --event push --commit $COMMIT_SHA + ci_build_status=$(gh run list --workflow ci-build.yml --branch $BRANCH_NAME --event push --commit $COMMIT_SHA --json conclusion --template '{{range .}}{{.conclusion}}{{"\n"}}{{end}}') + echo "CI build status at commit $COMMIT_SHA was '$ci_build_status'" + if [[ "$ci_build_status" != "success" ]]; then + gh run list --workflow ci-build.yml --commit $COMMIT_SHA >> $GITHUB_STEP_SUMMARY + echo "Status of CI build for commit $COMMIT_SHA was '$ci_build_status', expected 'success'" >> $GITHUB_STEP_SUMMARY + cat $GITHUB_STEP_SUMMARY + exit 1 + fi + env: { + COMMIT_SHA: '${{ github.sha }}', + GH_TOKEN: '${{ github.token }}', + BRANCH_NAME: '${{ github.ref_name }}' + } + - name: Verify release preconditions + id: verify-release + run: | + mvn --batch-mode com.exasol:project-keeper-maven-plugin:verify-release --projects . + echo "$GITHUB_OUTPUT" + env: { + GITHUB_TOKEN: '${{ github.token }}' + } + - { + name: Build project, + id: build, + run: mvn --batch-mode -DskipTests -Dossindex.skip=true clean verify + } + - { + name: List secret GPG keys, + id: list-secret-gpg-keys, + if: '${{ true && (! inputs.skip-maven-central) }}', + run: gpg --list-secret-keys + } + - name: Publish to Central Repository + id: deploy-maven-central + if: ${{ true && (! inputs.skip-maven-central) }} + run: | + echo "#### Maven Central Release" >> "$GITHUB_STEP_SUMMARY" + mvn --batch-mode -Dgpg.skip=false -DskipTests -Dossindex.skip=true deploy \ + -Dcentral-publishing.deploymentName="Auto release of repo ${{ github.repository }} using PK release.yml" \ + -Dcentral-publishing.autoPublish=${{ inputs.maven-central-auto-publish }} + if [[ "${{ inputs.maven-central-auto-publish }}" == "true" ]]; then + echo "Published to Maven Central ✅" >> "$GITHUB_STEP_SUMMARY" + else + echo "Uploaded to Maven Central ✅" >> "$GITHUB_STEP_SUMMARY" + echo "⚠️ Go to https://central.sonatype.com/publishing/deployments to publish the release ⚠️" >> "$GITHUB_STEP_SUMMARY" + fi + env: { + MAVEN_USERNAME: '${{ secrets.MAVEN_CENTRAL_PORTAL_USERNAME }}', + MAVEN_PASSWORD: '${{ secrets.MAVEN_CENTRAL_PORTAL_TOKEN }}', + MAVEN_GPG_PASSPHRASE: '${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }}' + } + - name: Calculate Artifact Checksums + id: artifact-checksum + if: ${{ ! inputs.skip-github-release }} + run: | + echo "Calculating sha256 checksum for artifact files" + echo "artifacts<> "$GITHUB_OUTPUT" + IFS=$'\n' artifacts_array=($ARTIFACTS) + for file in "${artifacts_array[@]}"; + do + full_path=$(realpath "$file") + echo "Calculate sha256sum for file '$full_path'" + file_dir="$(dirname "$full_path")" + file_name=$(basename "$full_path") + pushd "$file_dir" + checksum_file_name="${file_name}.sha256" + sha256sum "$file_name" > "$checksum_file_name" + echo "$full_path" >> "$GITHUB_OUTPUT" + echo "${file_dir}/$checksum_file_name" >> "$GITHUB_OUTPUT" + popd + done + echo "EOF" >> "$GITHUB_OUTPUT" + echo "Full artifact file list" + cat "$GITHUB_OUTPUT" + env: { + ARTIFACTS: '${{ steps.verify-release.outputs.release-artifacts }}' + } + - name: Create GitHub Release + id: create-github-release + if: ${{ ! inputs.skip-github-release }} + run: | + echo "### GitHub Release" >> "$GITHUB_STEP_SUMMARY" + IFS=$'\n' artifacts_array=($ARTIFACTS) + echo "#### Attaching Release Artifacts" >> "$GITHUB_STEP_SUMMARY" + for file in "${artifacts_array[@]}"; + do + echo "Attaching artifact '$file'" + echo "* \`$file\`" >> "$GITHUB_STEP_SUMMARY" + done + echo "" >> "$GITHUB_STEP_SUMMARY" + release_url=$(gh release create --latest --title "$TITLE" --notes "$NOTES" --target $BRANCH_NAME $TAG "${artifacts_array[@]}") + echo "Created release $TAG with title '$TITLE' at $release_url ✅" >> "$GITHUB_STEP_SUMMARY" + echo "release-url=$release_url" >> "$GITHUB_OUTPUT" + + # [impl->dsn~release-workflow.create-golang-tags~1] + echo "#### Creating Additional Tags" >> "$GITHUB_STEP_SUMMARY" + IFS=$'\n' tags_array=($ADDITIONAL_TAGS) + for tag in "${tags_array[@]}"; + do + echo "Creating tag '$tag'" + git tag "$tag" + git push origin "$tag" + echo "* \`$tag\`" >> "$GITHUB_STEP_SUMMARY" + done + + git fetch --tags origin + env: { + GH_TOKEN: '${{ github.token }}', + TAG: '${{ steps.verify-release.outputs.release-tag }}', + ADDITIONAL_TAGS: '${{ steps.verify-release.outputs.additional-release-tags }}', + NOTES: '${{ steps.verify-release.outputs.release-notes }}', + TITLE: '${{ steps.verify-release.outputs.release-title }}', + ARTIFACTS: '${{ steps.artifact-checksum.outputs.artifacts }}', + BRANCH_NAME: '${{ github.ref_name }}' + } + - name: Report failure Status to Slack channel + id: report-failure-status-slack + if: ${{ always() }} + uses: ravsamhq/notify-slack-action@v2 + with: { + status: '${{ job.status }}', + token: '${{ github.token }}', + notification_title: 'Release build in {repo} has {status_message}', + message_format: '{emoji} *{workflow}* {status_message} in <{repo_url}|{repo}>', + notify_when: 'failure,cancelled,warnings,skipped' + } + env: { + SLACK_WEBHOOK_URL: '${{ secrets.INTEGRATION_TEAM_SLACK_NOTIFICATION_WEBHOOK }}' + } + - name: Report new release to Slack channel + id: report-new-release-slack + if: ${{ steps.create-github-release.outputs.release-url }} + uses: ravsamhq/notify-slack-action@v2 + with: { + status: '${{ job.status }}', + token: '${{ github.token }}', + notification_title: 'Release build for {repo} created a new release', + message_format: '{workflow} created release ${{ steps.create-github-release.outputs.release-url }}' + } + env: { + SLACK_WEBHOOK_URL: '${{ secrets.INTEGRATION_TEAM_SLACK_NOTIFICATION_WEBHOOK }}' + } diff --git a/.github/workflows/release_droid_prepare_original_checksum.yml b/.github/workflows/release_droid_prepare_original_checksum.yml deleted file mode 100644 index 4a980f8..0000000 --- a/.github/workflows/release_droid_prepare_original_checksum.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Release Droid - Prepare Original Checksum - -on: - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout the repository - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Set up JDK 11 - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: 11 - cache: 'maven' - - name: Enable testcontainer reuse - run: echo 'testcontainers.reuse.enable=true' > "$HOME/.testcontainers.properties" - - name: Run tests and build with Maven - run: mvn --batch-mode clean verify --file pom.xml - - name: Prepare checksum - run: find target -maxdepth 1 -name *.jar -exec sha256sum "{}" + > original_checksum - - name: Upload checksum to the artifactory - uses: actions/upload-artifact@v3 - with: - name: original_checksum - retention-days: 5 - path: original_checksum \ No newline at end of file diff --git a/.github/workflows/release_droid_print_quick_checksum.yml b/.github/workflows/release_droid_print_quick_checksum.yml deleted file mode 100644 index 8add957..0000000 --- a/.github/workflows/release_droid_print_quick_checksum.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Release Droid - Print Quick Checksum - -on: - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout the repository - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Set up JDK 11 - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: 11 - cache: 'maven' - - name: Build with Maven skipping tests - run: mvn --batch-mode clean verify -DskipTests - - name: Print checksum - run: echo 'checksum_start==';find target -maxdepth 1 -name *.jar -exec sha256sum "{}" + | xargs;echo '==checksum_end' - diff --git a/.github/workflows/release_droid_release_on_maven_central.yml b/.github/workflows/release_droid_release_on_maven_central.yml deleted file mode 100644 index b467607..0000000 --- a/.github/workflows/release_droid_release_on_maven_central.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: Release Droid - Release On Maven Central - -on: - workflow_dispatch: - -jobs: - publish: - runs-on: ubuntu-latest - steps: - - name: Checkout the repository - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Set up Maven Central Repository - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: 11 - cache: 'maven' - server-id: ossrh - server-username: MAVEN_USERNAME - server-password: MAVEN_PASSWORD - gpg-private-key: ${{ secrets.OSSRH_GPG_SECRET_KEY }} - gpg-passphrase: MAVEN_GPG_PASSPHRASE - - name: Publish to Central Repository - run: mvn --batch-mode -Dgpg.skip=false -DskipTests clean deploy - env: - MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} - MAVEN_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} - MAVEN_GPG_PASSPHRASE: ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} \ No newline at end of file diff --git a/.github/workflows/release_droid_upload_github_release_assets.yml b/.github/workflows/release_droid_upload_github_release_assets.yml deleted file mode 100644 index 7350faf..0000000 --- a/.github/workflows/release_droid_upload_github_release_assets.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: Release Droid - Upload GitHub Release Assets - -on: - workflow_dispatch: - inputs: - upload_url: - description: 'Assets upload URL' - required: true - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout the repository - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Set up JDK 11 - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: 11 - cache: 'maven' - - name: Build with Maven skipping tests - run: mvn --batch-mode clean verify -DskipTests - - name: Generate sha256sum files - run: | - cd target - find . -maxdepth 1 -name \*.jar -exec bash -c 'sha256sum {} > {}.sha256' \; - - name: Upload assets to the GitHub release draft - uses: shogo82148/actions-upload-release-asset@v1 - with: - upload_url: ${{ github.event.inputs.upload_url }} - asset_path: target/*.jar - - name: Upload sha256sum files - uses: shogo82148/actions-upload-release-asset@v1 - with: - upload_url: ${{ github.event.inputs.upload_url }} - asset_path: target/*.sha256 - - name: Upload error-code-report - uses: shogo82148/actions-upload-release-asset@v1 - with: - upload_url: ${{ github.event.inputs.upload_url }} - asset_path: target/error_code_report.json diff --git a/.gitignore b/.gitignore index 2202571..e257793 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ bin target .cache +.settings/org.eclipse.jdt.apt.core.prefs # Intellij .idea diff --git a/.project-keeper.yml b/.project-keeper.yml index 7abfc54..778bd41 100644 --- a/.project-keeper.yml +++ b/.project-keeper.yml @@ -3,5 +3,3 @@ sources: path: pom.xml modules: - maven_central -version: - fromSource: pom.xml diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 8b5a9aa..7644ed3 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,15 +1,19 @@ eclipse.preferences.version=1 +org.eclipse.jdt.core.builder.annotationPath.allLocations=disabled org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= +org.eclipse.jdt.core.compiler.annotation.notowning=org.eclipse.jdt.annotation.NotOwning org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable org.eclipse.jdt.core.compiler.annotation.nullable.secondary= org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +org.eclipse.jdt.core.compiler.annotation.owning=org.eclipse.jdt.annotation.Owning +org.eclipse.jdt.core.compiler.annotation.resourceanalysis=disabled org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.methodParameters=generate org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=11 @@ -17,6 +21,7 @@ org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.APILeak=warning +org.eclipse.jdt.core.compiler.problem.annotatedTypeArgumentToUnannotated=info org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.autoboxing=ignore @@ -39,8 +44,10 @@ org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompatibleOwningContract=warning org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore +org.eclipse.jdt.core.compiler.problem.insufficientResourceAnalysis=warning org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore @@ -56,15 +63,15 @@ org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=warning org.eclipse.jdt.core.compiler.problem.nullReference=warning -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=warning +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=ignore org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore -org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore +org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning @@ -78,7 +85,8 @@ org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarningsNotFullyAnalysed=info +org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=enabled org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning @@ -111,7 +119,7 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.processAnnotations=enabled +org.eclipse.jdt.core.compiler.processAnnotations=disabled org.eclipse.jdt.core.compiler.release=disabled org.eclipse.jdt.core.compiler.source=11 org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false @@ -233,7 +241,7 @@ org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert @@ -439,7 +447,7 @@ org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constan org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true +org.eclipse.jdt.core.formatter.join_wrapped_lines=false org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs index 1add06a..54d02ac 100644 --- a/.settings/org.eclipse.jdt.ui.prefs +++ b/.settings/org.eclipse.jdt.ui.prefs @@ -76,6 +76,7 @@ sp_cleanup.add_missing_nls_tags=false sp_cleanup.add_missing_override_annotations=true sp_cleanup.add_missing_override_annotations_interface_methods=true sp_cleanup.add_serial_version_id=false +sp_cleanup.also_simplify_lambda=false sp_cleanup.always_use_blocks=true sp_cleanup.always_use_parentheses_in_expressions=true sp_cleanup.always_use_this_for_non_static_field_access=true @@ -130,6 +131,7 @@ sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false sp_cleanup.operand_factorization=false sp_cleanup.organize_imports=true sp_cleanup.overridden_assignment=false +sp_cleanup.overridden_assignment_move_decl=false sp_cleanup.plain_replacement=false sp_cleanup.precompile_regex=false sp_cleanup.primitive_comparison=false @@ -159,10 +161,12 @@ sp_cleanup.remove_unnecessary_casts=true sp_cleanup.remove_unnecessary_nls_tags=true sp_cleanup.remove_unused_imports=true sp_cleanup.remove_unused_local_variables=false +sp_cleanup.remove_unused_method_parameters=false sp_cleanup.remove_unused_private_fields=true sp_cleanup.remove_unused_private_members=false sp_cleanup.remove_unused_private_methods=true sp_cleanup.remove_unused_private_types=true +sp_cleanup.replace_deprecated_calls=false sp_cleanup.return_expression=false sp_cleanup.simplify_lambda_expression_and_method_ref=false sp_cleanup.single_used_field=false @@ -174,6 +178,8 @@ sp_cleanup.strictly_equal_or_different=false sp_cleanup.stringbuffer_to_stringbuilder=false sp_cleanup.stringbuilder=false sp_cleanup.stringbuilder_for_local_vars=false +sp_cleanup.stringconcat_stringbuffer_stringbuilder=false +sp_cleanup.stringconcat_to_textblock=false sp_cleanup.substring=false sp_cleanup.switch=false sp_cleanup.system_property=false diff --git a/.vscode/settings.json b/.vscode/settings.json index f938933..55727b7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,17 +1,21 @@ { - "editor.formatOnSave": true, - "editor.codeActionsOnSave": { - "source.organizeImports": true, - "source.generate.finalModifiers": true, - "source.fixAll": true - }, - "java.codeGeneration.useBlocks": true, - "java.saveActions.organizeImports": true, - "java.sources.organizeImports.starThreshold": 3, - "java.sources.organizeImports.staticStarThreshold": 3, - "java.test.config": { - "vmArgs": [ - "-Djava.util.logging.config.file=src/test/resources/logging.properties" - ] - } + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.organizeImports": true, + "source.generate.finalModifiers": true, + "source.fixAll": true + }, + "java.codeGeneration.useBlocks": true, + "java.saveActions.organizeImports": true, + "java.sources.organizeImports.starThreshold": 3, + "java.sources.organizeImports.staticStarThreshold": 3, + "java.test.config": { + "vmArgs": [ + "-Djava.util.logging.config.file=src/test/resources/logging.properties" + ] + }, + "sonarlint.connectedMode.project": { + "connectionId": "https-sonar-exasol-com", + "projectKey": "administration-ui-oapi-doc" + } } diff --git a/README.md b/README.md index 8b33a49..36b4295 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Test Utilities for `java.util.logging` [![Build Status](https://github.com/exasol/java-util-logging-testing/actions/workflows/ci-build.yml/badge.svg)](https://github.com/exasol/java-util-logging-testing/actions/workflows/ci-build.yml) -[![Maven Central – Test utilities for `java.util.logging`](https://img.shields.io/maven-central/v/com.exasol/java-util-logging-testing)](https://search.maven.org/artifact/com.exasol/java-util-logging-testing) +[![Maven Central – Test utilities for java-util-logging](https://img.shields.io/maven-central/v/com.exasol/java-util-logging-testing)](https://search.maven.org/artifact/com.exasol/java-util-logging-testing) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Ajava-util-logging-testing&metric=alert_status)](https://sonarcloud.io/dashboard?id=com.exasol%3Ajava-util-logging-testing) @@ -35,4 +35,4 @@ This is an open source project which is officially supported by Exasol. For any ## Information for Developers -* [Dependencies](dependencies.md) \ No newline at end of file +* [Dependencies](dependencies.md) diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..8246bfa --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,25 @@ +# Security + +If you believe you have found a new security vulnerability in this repository, please report it to us as follows. + +## Reporting Security Issues + +* Please do **not** report security vulnerabilities through public GitHub issues. + +* Please create a draft security advisory on the Github page: the reporting form is under `> Security > Advisories`. The URL is https://github.com/exasol/java-util-logging-testing/security/advisories/new. + +* If you prefer to email, please send your report to `infosec@exasol.com`. + +## Guidelines + +* When reporting a vulnerability, please include as much information as possible, including the complete steps to reproduce the issue. + +* Avoid sending us executables. + +* Feel free to include any script you wrote and used but avoid sending us scripts that download and run binaries. + +* We will prioritise reports that show how the exploits work in realistic environments. + +* We prefer all communications to be in English. + +* We do not offer financial rewards. We are happy to acknowledge your research publicly when possible. diff --git a/dependencies.md b/dependencies.md index ecaaced..f1e3b76 100644 --- a/dependencies.md +++ b/dependencies.md @@ -3,68 +3,76 @@ ## Test Dependencies -| Dependency | License | -| ------------------------- | -------------------------------- | -| [JUnit Jupiter Engine][0] | [Eclipse Public License v2.0][1] | -| [Hamcrest][2] | [BSD License 3][3] | +| Dependency | License | +| ---------------------- | -------------------------------- | +| [JUnit Jupiter API][0] | [Eclipse Public License v2.0][1] | +| [Hamcrest][2] | [BSD-3-Clause][3] | ## Plugin Dependencies -| Dependency | License | -| ------------------------------------------------------- | ---------------------------------------------- | -| [SonarQube Scanner for Maven][4] | [GNU LGPL 3][5] | -| [Apache Maven Compiler Plugin][6] | [Apache License, Version 2.0][7] | -| [Apache Maven Enforcer Plugin][8] | [Apache License, Version 2.0][7] | -| [Maven Flatten Plugin][9] | [Apache Software Licenese][7] | -| [org.sonatype.ossindex.maven:ossindex-maven-plugin][10] | [ASL2][11] | -| [Maven Surefire Plugin][12] | [Apache License, Version 2.0][7] | -| [Versions Maven Plugin][13] | [Apache License, Version 2.0][7] | -| [Apache Maven Deploy Plugin][14] | [Apache License, Version 2.0][7] | -| [Apache Maven GPG Plugin][15] | [Apache License, Version 2.0][7] | -| [Apache Maven Source Plugin][16] | [Apache License, Version 2.0][7] | -| [Apache Maven Javadoc Plugin][17] | [Apache License, Version 2.0][7] | -| [Nexus Staging Maven Plugin][18] | [Eclipse Public License][19] | -| [JaCoCo :: Maven Plugin][20] | [Eclipse Public License 2.0][21] | -| [Maven Assembly Plugin][22] | [The Apache Software License, Version 2.0][11] | -| [Project keeper maven plugin][23] | [The MIT License][24] | -| [error-code-crawler-maven-plugin][25] | [MIT License][26] | -| [Reproducible Build Maven Plugin][27] | [Apache 2.0][11] | -| [Maven Clean Plugin][28] | [The Apache Software License, Version 2.0][11] | -| [Maven Resources Plugin][29] | [The Apache Software License, Version 2.0][11] | -| [Maven JAR Plugin][30] | [The Apache Software License, Version 2.0][11] | -| [Maven Install Plugin][31] | [The Apache Software License, Version 2.0][11] | -| [Maven Site Plugin 3][32] | [The Apache Software License, Version 2.0][11] | +| Dependency | License | +| ------------------------------------------------------- | ------------------------------------------- | +| [Apache Maven Clean Plugin][4] | [Apache-2.0][5] | +| [Apache Maven Install Plugin][6] | [Apache-2.0][5] | +| [Apache Maven Resources Plugin][7] | [Apache-2.0][5] | +| [Apache Maven Site Plugin][8] | [Apache-2.0][5] | +| [SonarQube Scanner for Maven][9] | [GNU LGPL 3][10] | +| [Apache Maven Toolchains Plugin][11] | [Apache-2.0][5] | +| [Apache Maven Compiler Plugin][12] | [Apache-2.0][5] | +| [Apache Maven Enforcer Plugin][13] | [Apache-2.0][5] | +| [Maven Flatten Plugin][14] | [Apache Software License][5] | +| [org.sonatype.ossindex.maven:ossindex-maven-plugin][15] | [ASL2][16] | +| [Maven Surefire Plugin][17] | [Apache-2.0][5] | +| [Versions Maven Plugin][18] | [Apache License, Version 2.0][5] | +| [duplicate-finder-maven-plugin Maven Mojo][19] | [Apache License 2.0][20] | +| [Apache Maven Artifact Plugin][21] | [Apache-2.0][5] | +| [Apache Maven Deploy Plugin][22] | [Apache-2.0][5] | +| [Apache Maven GPG Plugin][23] | [Apache-2.0][5] | +| [Apache Maven Source Plugin][24] | [Apache License, Version 2.0][5] | +| [Apache Maven Javadoc Plugin][25] | [Apache-2.0][5] | +| [Central Publishing Maven Plugin][26] | [The Apache License, Version 2.0][5] | +| [JaCoCo :: Maven Plugin][27] | [EPL-2.0][28] | +| [Quality Summarizer Maven Plugin][29] | [MIT License][30] | +| [Apache Maven Assembly Plugin][31] | [Apache-2.0][5] | +| [Project Keeper Maven plugin][32] | [The MIT License][33] | +| [error-code-crawler-maven-plugin][34] | [MIT License][35] | +| [Git Commit Id Maven Plugin][36] | [GNU Lesser General Public License 3.0][37] | -[0]: https://junit.org/junit5/ +[0]: https://junit.org/ [1]: https://www.eclipse.org/legal/epl-v20.html [2]: http://hamcrest.org/JavaHamcrest/ -[3]: http://opensource.org/licenses/BSD-3-Clause -[4]: http://sonarsource.github.io/sonar-scanner-maven/ -[5]: http://www.gnu.org/licenses/lgpl.txt -[6]: https://maven.apache.org/plugins/maven-compiler-plugin/ -[7]: https://www.apache.org/licenses/LICENSE-2.0.txt -[8]: https://maven.apache.org/enforcer/maven-enforcer-plugin/ -[9]: https://www.mojohaus.org/flatten-maven-plugin/ -[10]: https://sonatype.github.io/ossindex-maven/maven-plugin/ -[11]: http://www.apache.org/licenses/LICENSE-2.0.txt -[12]: https://maven.apache.org/surefire/maven-surefire-plugin/ -[13]: https://www.mojohaus.org/versions/versions-maven-plugin/ -[14]: https://maven.apache.org/plugins/maven-deploy-plugin/ -[15]: https://maven.apache.org/plugins/maven-gpg-plugin/ -[16]: https://maven.apache.org/plugins/maven-source-plugin/ -[17]: https://maven.apache.org/plugins/maven-javadoc-plugin/ -[18]: http://www.sonatype.com/public-parent/nexus-maven-plugins/nexus-staging/nexus-staging-maven-plugin/ -[19]: http://www.eclipse.org/legal/epl-v10.html -[20]: https://www.jacoco.org/jacoco/trunk/doc/maven.html -[21]: https://www.eclipse.org/legal/epl-2.0/ -[22]: http://maven.apache.org/plugins/maven-assembly-plugin/ -[23]: https://github.com/exasol/project-keeper/ -[24]: https://github.com/exasol/project-keeper/blob/main/LICENSE -[25]: https://github.com/exasol/error-code-crawler-maven-plugin/ -[26]: https://github.com/exasol/error-code-crawler-maven-plugin/blob/main/LICENSE -[27]: http://zlika.github.io/reproducible-build-maven-plugin -[28]: http://maven.apache.org/plugins/maven-clean-plugin/ -[29]: http://maven.apache.org/plugins/maven-resources-plugin/ -[30]: http://maven.apache.org/plugins/maven-jar-plugin/ -[31]: http://maven.apache.org/plugins/maven-install-plugin/ -[32]: http://maven.apache.org/plugins/maven-site-plugin/ +[3]: https://raw.githubusercontent.com/hamcrest/JavaHamcrest/master/LICENSE +[4]: https://maven.apache.org/plugins/maven-clean-plugin/ +[5]: https://www.apache.org/licenses/LICENSE-2.0.txt +[6]: https://maven.apache.org/plugins/maven-install-plugin/ +[7]: https://maven.apache.org/plugins/maven-resources-plugin/ +[8]: https://maven.apache.org/plugins/maven-site-plugin/ +[9]: http://docs.sonarqube.org/display/PLUG/Plugin+Library/sonar-scanner-maven/sonar-maven-plugin +[10]: http://www.gnu.org/licenses/lgpl.txt +[11]: https://maven.apache.org/plugins/maven-toolchains-plugin/ +[12]: https://maven.apache.org/plugins/maven-compiler-plugin/ +[13]: https://maven.apache.org/enforcer/maven-enforcer-plugin/ +[14]: https://www.mojohaus.org/flatten-maven-plugin/ +[15]: https://sonatype.github.io/ossindex-maven/maven-plugin/ +[16]: http://www.apache.org/licenses/LICENSE-2.0.txt +[17]: https://maven.apache.org/surefire/maven-surefire-plugin/ +[18]: https://www.mojohaus.org/versions/versions-maven-plugin/ +[19]: https://basepom.github.io/duplicate-finder-maven-plugin +[20]: http://www.apache.org/licenses/LICENSE-2.0.html +[21]: https://maven.apache.org/plugins/maven-artifact-plugin/ +[22]: https://maven.apache.org/plugins/maven-deploy-plugin/ +[23]: https://maven.apache.org/plugins/maven-gpg-plugin/ +[24]: https://maven.apache.org/plugins/maven-source-plugin/ +[25]: https://maven.apache.org/plugins/maven-javadoc-plugin/ +[26]: https://central.sonatype.org +[27]: https://www.jacoco.org/jacoco/trunk/doc/maven.html +[28]: https://www.eclipse.org/legal/epl-2.0/ +[29]: https://github.com/exasol/quality-summarizer-maven-plugin/ +[30]: https://github.com/exasol/quality-summarizer-maven-plugin/blob/main/LICENSE +[31]: https://maven.apache.org/plugins/maven-assembly-plugin/ +[32]: https://github.com/exasol/project-keeper/ +[33]: https://github.com/exasol/project-keeper/blob/main/LICENSE +[34]: https://github.com/exasol/error-code-crawler-maven-plugin/ +[35]: https://github.com/exasol/error-code-crawler-maven-plugin/blob/main/LICENSE +[36]: https://github.com/git-commit-id/git-commit-id-maven-plugin +[37]: http://www.gnu.org/licenses/lgpl-3.0.txt diff --git a/doc/changes/changelog.md b/doc/changes/changelog.md index 7fb6133..5f02076 100644 --- a/doc/changes/changelog.md +++ b/doc/changes/changelog.md @@ -1,5 +1,7 @@ # Changes +* [2.0.4](changes_2.0.4.md) * [2.0.3](changes_2.0.3.md) * [2.0.2](changes_2.0.2.md) * [2.0.1](changes_2.0.1.md) +* [2.0.0](changes_2.0.0.md) diff --git a/doc/changes/changes-2.0.0.md b/doc/changes/changes_2.0.0.md similarity index 100% rename from doc/changes/changes-2.0.0.md rename to doc/changes/changes_2.0.0.md diff --git a/doc/changes/changes_2.0.4.md b/doc/changes/changes_2.0.4.md new file mode 100644 index 0000000..b93327e --- /dev/null +++ b/doc/changes/changes_2.0.4.md @@ -0,0 +1,43 @@ +# Test Utilities for Java-util-logging 2.0.4, released 2025-10-30 + +Code name: + +## Summary + +## Features + +* ISSUE_NUMBER: description + +## Dependency Updates + +### Test Dependency Updates + +* Updated `org.hamcrest:hamcrest:2.2` to `3.0` +* Added `org.junit.jupiter:junit-jupiter-api:5.13.4` +* Removed `org.junit.jupiter:junit-jupiter-engine:5.9.2` + +### Plugin Dependency Updates + +* Updated `com.exasol:error-code-crawler-maven-plugin:1.2.2` to `2.0.5` +* Updated `com.exasol:project-keeper-maven-plugin:2.9.3` to `5.4.3` +* Added `com.exasol:quality-summarizer-maven-plugin:0.2.1` +* Added `io.github.git-commit-id:git-commit-id-maven-plugin:9.0.2` +* Removed `io.github.zlika:reproducible-build-maven-plugin:0.16` +* Added `org.apache.maven.plugins:maven-artifact-plugin:3.6.1` +* Updated `org.apache.maven.plugins:maven-clean-plugin:3.2.0` to `3.5.0` +* Updated `org.apache.maven.plugins:maven-compiler-plugin:3.10.1` to `3.14.1` +* Updated `org.apache.maven.plugins:maven-deploy-plugin:3.0.0` to `3.1.4` +* Updated `org.apache.maven.plugins:maven-enforcer-plugin:3.1.0` to `3.6.2` +* Updated `org.apache.maven.plugins:maven-gpg-plugin:3.0.1` to `3.2.8` +* Updated `org.apache.maven.plugins:maven-install-plugin:3.1.2` to `3.1.4` +* Updated `org.apache.maven.plugins:maven-javadoc-plugin:3.4.1` to `3.12.0` +* Updated `org.apache.maven.plugins:maven-site-plugin:3.12.1` to `3.21.0` +* Updated `org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M8` to `3.5.4` +* Added `org.apache.maven.plugins:maven-toolchains-plugin:3.2.0` +* Added `org.basepom.maven:duplicate-finder-maven-plugin:2.0.1` +* Updated `org.codehaus.mojo:flatten-maven-plugin:1.3.0` to `1.7.3` +* Updated `org.codehaus.mojo:versions-maven-plugin:2.14.2` to `2.19.1` +* Updated `org.jacoco:jacoco-maven-plugin:0.8.8` to `0.8.14` +* Updated `org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184` to `5.2.0.4988` +* Added `org.sonatype.central:central-publishing-maven-plugin:0.9.0` +* Removed `org.sonatype.plugins:nexus-staging-maven-plugin:1.6.13` diff --git a/pk_generated_parent.pom b/pk_generated_parent.pom index 680c649..e95072a 100644 --- a/pk_generated_parent.pom +++ b/pk_generated_parent.pom @@ -3,25 +3,22 @@ 4.0.0 com.exasol java-util-logging-testing-generated-parent - 2.0.3 + 2.0.4 pom UTF-8 UTF-8 + ${git.commit.time} 11 + exasol + https://sonarcloud.io true + false + false + validated + Manual deployment of repo java-util-logging-testing - - - ossrh - https://oss.sonatype.org/content/repositories/snapshots - - - ossrh - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - MIT License @@ -45,24 +42,68 @@ + + org.apache.maven.plugins + maven-clean-plugin + 3.5.0 + + + org.apache.maven.plugins + maven-install-plugin + 3.1.4 + + + org.apache.maven.plugins + maven-resources-plugin + 3.3.1 + + + org.apache.maven.plugins + maven-site-plugin + 3.21.0 + org.sonarsource.scanner.maven sonar-maven-plugin - 3.9.1.2184 + 5.2.0.4988 + + + org.apache.maven.plugins + maven-toolchains-plugin + 3.2.0 + + + + toolchain + + + + + + + ${java.version} + + + org.apache.maven.plugins maven-compiler-plugin - 3.10.1 + 3.14.1 ${java.version} ${java.version} + true + + -Xlint:all + -Werror + org.apache.maven.plugins maven-enforcer-plugin - 3.1.0 + 3.6.2 enforce-maven @@ -72,8 +113,11 @@ - 3.6.3 + 3.8.7 + + 17 + @@ -82,7 +126,7 @@ org.codehaus.mojo flatten-maven-plugin - 1.3.0 + 1.7.3 true oss @@ -108,6 +152,9 @@ org.sonatype.ossindex.maven ossindex-maven-plugin 3.2.0 + + ossindex + audit @@ -121,7 +168,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M8 + 3.5.4 @@ -132,11 +179,11 @@ org.codehaus.mojo versions-maven-plugin - 2.14.2 + 2.19.1 display-updates - package + verify display-plugin-updates display-dependency-updates @@ -145,12 +192,63 @@ file:///${project.basedir}/versionsMavenPluginRules.xml + false + true + true + true + false + true + true + true + false + false + true + true + + + + org.basepom.maven + duplicate-finder-maven-plugin + 2.0.1 + + + default + verify + + check + + + + + true + true + true + true + true + true + false + true + false + + org.apache.maven.plugins + maven-artifact-plugin + 3.6.1 + + + check-build-plan + verify + + check-buildplan + + + + org.apache.maven.plugins maven-deploy-plugin - 3.0.0 + 3.1.4 true @@ -158,7 +256,7 @@ org.apache.maven.plugins maven-gpg-plugin - 3.0.1 + 3.2.8 sign-artifacts @@ -178,6 +276,9 @@ org.apache.maven.plugins maven-source-plugin + 3.2.1 @@ -191,7 +292,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.4.1 + 3.12.0 attach-javadocs @@ -206,33 +307,28 @@ true true true + true + ${java.version} - org.sonatype.plugins - nexus-staging-maven-plugin - 1.6.13 + org.sonatype.central + central-publishing-maven-plugin + 0.9.0 + true - true - ossrh - https://oss.sonatype.org/ - 15 - 30 + maven-central-portal + + ${central-publishing.autoPublish} + ${central-publishing.waitUntil} + ${central-publishing.deploymentName} + ${central-publishing.skipPublishing} - - - default-deploy - deploy - - deploy - - - org.jacoco jacoco-maven-plugin - 0.8.8 + 0.8.14 prepare-agent @@ -270,10 +366,23 @@ + + com.exasol + quality-summarizer-maven-plugin + 0.2.1 + + + summarize-metrics + + summarize + + + + com.exasol error-code-crawler-maven-plugin - 1.2.2 + 2.0.5 verify @@ -284,18 +393,25 @@ - io.github.zlika - reproducible-build-maven-plugin - 0.16 + io.github.git-commit-id + git-commit-id-maven-plugin + 9.0.2 - strip-jar - package + get-the-git-infos - strip-jar + revision + initialize + + true + UTC + + git.commit.time + + diff --git a/pom.xml b/pom.xml index 8bdfe81..7340ad0 100644 --- a/pom.xml +++ b/pom.xml @@ -3,71 +3,32 @@ 4.0.0 com.exasol java-util-logging-testing - 2.0.3 - Test utilities for `java.util.logging` + 2.0.4 + Test utilities for java-util-logging This project provides utilities that help testing software that uses `java.util.logging` as its logging framework. https://github.com/exasol/java-util-logging-testing/ - - 5.9.2 - - - - MIT - https://opensource.org/licenses/MIT - repo - - - - - Exasol - opensource@exasol.com - Exasol AG - https://www.exasol.com/ - - - - scm:git:https://github.com/exasol/java-util-logging-testing.git - scm:git:https://github.com/exasol/java-util-logging-testing.git - https://github.com/exasol/java-util-logging-testing/tree/master - - - - ossrh - https://oss.sonatype.org/content/repositories/snapshots - - - ossrh - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - org.junit.jupiter - junit-jupiter-engine - ${junit.version} + junit-jupiter-api + + 5.13.4 test org.hamcrest hamcrest - 2.2 + 3.0 test - - maven-assembly-plugin - org.apache.maven.plugins - - java-util-logging-testing-${project.version} - - com.exasol project-keeper-maven-plugin - 2.9.3 + 5.4.3 @@ -88,7 +49,7 @@ java-util-logging-testing-generated-parent com.exasol - 2.0.3 + 2.0.4 pk_generated_parent.pom diff --git a/release_config.yml b/release_config.yml deleted file mode 100644 index 473c219..0000000 --- a/release_config.yml +++ /dev/null @@ -1,4 +0,0 @@ -release-platforms: - - GitHub - - Maven -language: Java diff --git a/src/test/resources/logging.properties b/src/test/resources/logging.properties index 8c97abe..8d41bf2 100644 --- a/src/test/resources/logging.properties +++ b/src/test/resources/logging.properties @@ -2,5 +2,5 @@ handlers=java.util.logging.ConsoleHandler .level=INFO java.util.logging.ConsoleHandler.level=ALL java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter -java.util.logging.SimpleFormatter.format=%1$tF %1$tT.%1$tL [%4$-7s] %5$s %n +java.util.logging.SimpleFormatter.format=%1$tF %1$tT.%1$tL [%4$-7s] %5$s %6$s%n com.exasol.level=ALL From 7c47ddf556ad9ce471ef69d82c21fd608698b7c2 Mon Sep 17 00:00:00 2001 From: Christoph Pirkl Date: Thu, 30 Oct 2025 14:38:22 +0100 Subject: [PATCH 2/9] Run PK fix --- dependencies.md | 20 +++++++++----------- doc/changes/changes_2.0.4.md | 1 + 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/dependencies.md b/dependencies.md index f1e3b76..ce5681f 100644 --- a/dependencies.md +++ b/dependencies.md @@ -33,10 +33,9 @@ | [Central Publishing Maven Plugin][26] | [The Apache License, Version 2.0][5] | | [JaCoCo :: Maven Plugin][27] | [EPL-2.0][28] | | [Quality Summarizer Maven Plugin][29] | [MIT License][30] | -| [Apache Maven Assembly Plugin][31] | [Apache-2.0][5] | -| [Project Keeper Maven plugin][32] | [The MIT License][33] | -| [error-code-crawler-maven-plugin][34] | [MIT License][35] | -| [Git Commit Id Maven Plugin][36] | [GNU Lesser General Public License 3.0][37] | +| [Project Keeper Maven plugin][31] | [The MIT License][32] | +| [error-code-crawler-maven-plugin][33] | [MIT License][34] | +| [Git Commit Id Maven Plugin][35] | [GNU Lesser General Public License 3.0][36] | [0]: https://junit.org/ [1]: https://www.eclipse.org/legal/epl-v20.html @@ -69,10 +68,9 @@ [28]: https://www.eclipse.org/legal/epl-2.0/ [29]: https://github.com/exasol/quality-summarizer-maven-plugin/ [30]: https://github.com/exasol/quality-summarizer-maven-plugin/blob/main/LICENSE -[31]: https://maven.apache.org/plugins/maven-assembly-plugin/ -[32]: https://github.com/exasol/project-keeper/ -[33]: https://github.com/exasol/project-keeper/blob/main/LICENSE -[34]: https://github.com/exasol/error-code-crawler-maven-plugin/ -[35]: https://github.com/exasol/error-code-crawler-maven-plugin/blob/main/LICENSE -[36]: https://github.com/git-commit-id/git-commit-id-maven-plugin -[37]: http://www.gnu.org/licenses/lgpl-3.0.txt +[31]: https://github.com/exasol/project-keeper/ +[32]: https://github.com/exasol/project-keeper/blob/main/LICENSE +[33]: https://github.com/exasol/error-code-crawler-maven-plugin/ +[34]: https://github.com/exasol/error-code-crawler-maven-plugin/blob/main/LICENSE +[35]: https://github.com/git-commit-id/git-commit-id-maven-plugin +[36]: http://www.gnu.org/licenses/lgpl-3.0.txt diff --git a/doc/changes/changes_2.0.4.md b/doc/changes/changes_2.0.4.md index b93327e..7ec383e 100644 --- a/doc/changes/changes_2.0.4.md +++ b/doc/changes/changes_2.0.4.md @@ -24,6 +24,7 @@ Code name: * Added `io.github.git-commit-id:git-commit-id-maven-plugin:9.0.2` * Removed `io.github.zlika:reproducible-build-maven-plugin:0.16` * Added `org.apache.maven.plugins:maven-artifact-plugin:3.6.1` +* Removed `org.apache.maven.plugins:maven-assembly-plugin:3.7.1` * Updated `org.apache.maven.plugins:maven-clean-plugin:3.2.0` to `3.5.0` * Updated `org.apache.maven.plugins:maven-compiler-plugin:3.10.1` to `3.14.1` * Updated `org.apache.maven.plugins:maven-deploy-plugin:3.0.0` to `3.1.4` From 489e44adac46b6f0c2b6fe01f1a63821f0fa16c4 Mon Sep 17 00:00:00 2001 From: Christoph Pirkl Date: Thu, 30 Oct 2025 14:40:31 +0100 Subject: [PATCH 3/9] Self-review --- .gitattributes | 2 ++ doc/changes/changes_2.0.4.md | 6 ++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitattributes b/.gitattributes index d674325..5c360c5 100644 --- a/.gitattributes +++ b/.gitattributes @@ -9,3 +9,5 @@ doc/changes/changelog.md linguist-generated=true .github/workflows/dependencies_update.yml linguist-generated=true .github/workflows/release.yml linguist-generated=true src/test/resources/logging.properties linguist-generated=true +.settings/org.eclipse.jdt.core.prefs linguist-generated=true +.settings/org.eclipse.jdt.ui.prefs linguist-generated=true diff --git a/doc/changes/changes_2.0.4.md b/doc/changes/changes_2.0.4.md index 7ec383e..e221152 100644 --- a/doc/changes/changes_2.0.4.md +++ b/doc/changes/changes_2.0.4.md @@ -1,12 +1,10 @@ # Test Utilities for Java-util-logging 2.0.4, released 2025-10-30 -Code name: +Code name: Upgrade Project Keeper ## Summary -## Features - -* ISSUE_NUMBER: description +This release upgrades Project Keeper and dependencies. ## Dependency Updates From fb337107d7860e114dfedba823d6d362f476c8c6 Mon Sep 17 00:00:00 2001 From: Christoph Pirkl Date: Thu, 30 Oct 2025 14:41:37 +0100 Subject: [PATCH 4/9] Fix sonar warning --- src/main/java/com/exasol/logging/CapturingLogHandler.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/exasol/logging/CapturingLogHandler.java b/src/main/java/com/exasol/logging/CapturingLogHandler.java index e406445..c8db25e 100644 --- a/src/main/java/com/exasol/logging/CapturingLogHandler.java +++ b/src/main/java/com/exasol/logging/CapturingLogHandler.java @@ -12,8 +12,8 @@ public class CapturingLogHandler extends Handler { private final StringBuilder buffer = new StringBuilder(); @Override - public void publish(final LogRecord record) { - this.buffer.append(record.getMessage()); + public void publish(final LogRecord logRecord) { + this.buffer.append(logRecord.getMessage()); } @Override @@ -41,4 +41,4 @@ public String getCapturedData() { public void reset() { this.buffer.setLength(0); } -} \ No newline at end of file +} From 2b4a47090e5d140e674661980af7778750ed3d9c Mon Sep 17 00:00:00 2001 From: Christoph Pirkl Date: Thu, 30 Oct 2025 14:45:31 +0100 Subject: [PATCH 5/9] Enable error crawler --- pom.xml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/pom.xml b/pom.xml index 7340ad0..5dbec16 100644 --- a/pom.xml +++ b/pom.xml @@ -37,13 +37,6 @@ - - com.exasol - error-code-crawler-maven-plugin - - true - - From 7e1d45d223c5d4e610cc24be58678f1c9f2146bf Mon Sep 17 00:00:00 2001 From: Christoph Pirkl Date: Thu, 30 Oct 2025 14:45:42 +0100 Subject: [PATCH 6/9] Remove eclipse launch configs --- ...java-util-logging-testing all tests.launch | 28 ------------------- .../java-util-logging-testing install.launch | 18 ------------ .../java-util-logging-testing package.launch | 17 ----------- 3 files changed, 63 deletions(-) delete mode 100644 launch/java-util-logging-testing all tests.launch delete mode 100644 launch/java-util-logging-testing install.launch delete mode 100644 launch/java-util-logging-testing package.launch diff --git a/launch/java-util-logging-testing all tests.launch b/launch/java-util-logging-testing all tests.launch deleted file mode 100644 index fe11165..0000000 --- a/launch/java-util-logging-testing all tests.launch +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/launch/java-util-logging-testing install.launch b/launch/java-util-logging-testing install.launch deleted file mode 100644 index b583557..0000000 --- a/launch/java-util-logging-testing install.launch +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/launch/java-util-logging-testing package.launch b/launch/java-util-logging-testing package.launch deleted file mode 100644 index 6b8cac6..0000000 --- a/launch/java-util-logging-testing package.launch +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - From 72649e6310bb73c7e5c7a4a34024635f2e9dc5c1 Mon Sep 17 00:00:00 2001 From: Christoph Pirkl Date: Thu, 30 Oct 2025 14:46:17 +0100 Subject: [PATCH 7/9] Run PK fix --- dependencies.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/dependencies.md b/dependencies.md index ce5681f..69c3eec 100644 --- a/dependencies.md +++ b/dependencies.md @@ -33,9 +33,9 @@ | [Central Publishing Maven Plugin][26] | [The Apache License, Version 2.0][5] | | [JaCoCo :: Maven Plugin][27] | [EPL-2.0][28] | | [Quality Summarizer Maven Plugin][29] | [MIT License][30] | -| [Project Keeper Maven plugin][31] | [The MIT License][32] | -| [error-code-crawler-maven-plugin][33] | [MIT License][34] | -| [Git Commit Id Maven Plugin][35] | [GNU Lesser General Public License 3.0][36] | +| [error-code-crawler-maven-plugin][31] | [MIT License][32] | +| [Git Commit Id Maven Plugin][33] | [GNU Lesser General Public License 3.0][34] | +| [Project Keeper Maven plugin][35] | [The MIT License][36] | [0]: https://junit.org/ [1]: https://www.eclipse.org/legal/epl-v20.html @@ -68,9 +68,9 @@ [28]: https://www.eclipse.org/legal/epl-2.0/ [29]: https://github.com/exasol/quality-summarizer-maven-plugin/ [30]: https://github.com/exasol/quality-summarizer-maven-plugin/blob/main/LICENSE -[31]: https://github.com/exasol/project-keeper/ -[32]: https://github.com/exasol/project-keeper/blob/main/LICENSE -[33]: https://github.com/exasol/error-code-crawler-maven-plugin/ -[34]: https://github.com/exasol/error-code-crawler-maven-plugin/blob/main/LICENSE -[35]: https://github.com/git-commit-id/git-commit-id-maven-plugin -[36]: http://www.gnu.org/licenses/lgpl-3.0.txt +[31]: https://github.com/exasol/error-code-crawler-maven-plugin/ +[32]: https://github.com/exasol/error-code-crawler-maven-plugin/blob/main/LICENSE +[33]: https://github.com/git-commit-id/git-commit-id-maven-plugin +[34]: http://www.gnu.org/licenses/lgpl-3.0.txt +[35]: https://github.com/exasol/project-keeper/ +[36]: https://github.com/exasol/project-keeper/blob/main/LICENSE From 988de44449de67353872e74f8a55458cfe87f3e5 Mon Sep 17 00:00:00 2001 From: Christoph Pirkl Date: Thu, 30 Oct 2025 14:54:03 +0100 Subject: [PATCH 8/9] Remove assembly config --- src/assembly/all-dependencies.xml | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 src/assembly/all-dependencies.xml diff --git a/src/assembly/all-dependencies.xml b/src/assembly/all-dependencies.xml deleted file mode 100644 index efe5abc..0000000 --- a/src/assembly/all-dependencies.xml +++ /dev/null @@ -1,22 +0,0 @@ - - all-dependencies - - jar - - false - - - - metaInf-services - - - - - true - runtime - / - - - From 95b888958ca767667ae1b34a317f82e2b5854176 Mon Sep 17 00:00:00 2001 From: Christoph Pirkl Date: Thu, 30 Oct 2025 14:54:11 +0100 Subject: [PATCH 9/9] Fix error code config --- error_code_config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/error_code_config.yml b/error_code_config.yml index 1ee5b7d..769ed1a 100644 --- a/error_code_config.yml +++ b/error_code_config.yml @@ -2,4 +2,4 @@ error-tags: JULT: packages: - com.exasol.logging - highest-index: 0 + highest-index: 1