From 6da8dc31280297f2bb755aef4458505e83d6b411 Mon Sep 17 00:00:00 2001 From: Yuna Date: Sun, 9 Aug 2026 09:28:14 +0200 Subject: [PATCH] ci: modernize Java delivery --- .github/dependabot.yml | 21 ++++ .github/workflows/build-merge.yml | 59 ++++++++++ .github/workflows/build-pr.yml | 31 ++++++ .github/workflows/build.yml | 38 ------- .github/workflows/daily.yml | 15 --- .github/workflows/maintenance.yml | 24 ++++ .github/workflows/on_merge.yml | 32 ------ .github/workflows/on_push.yml | 18 --- .github/workflows/release.yml | 72 ++++++++++++ pom.xml | 104 +++++++++--------- .../yuna/typemap/logic/JsonDecoder.java | 2 +- 11 files changed, 258 insertions(+), 158 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/build-merge.yml create mode 100644 .github/workflows/build-pr.yml delete mode 100644 .github/workflows/build.yml delete mode 100644 .github/workflows/daily.yml create mode 100644 .github/workflows/maintenance.yml delete mode 100644 .github/workflows/on_merge.yml delete mode 100644 .github/workflows/on_push.yml create mode 100644 .github/workflows/release.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..42166d4 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,21 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: "/" + schedule: + interval: weekly + day: monday + groups: + workflow-dependencies: + patterns: + - "*" + + - package-ecosystem: maven + directory: "/" + schedule: + interval: weekly + day: monday + groups: + maven-dependencies: + patterns: + - "*" diff --git a/.github/workflows/build-merge.yml b/.github/workflows/build-merge.yml new file mode 100644 index 0000000..dfd0607 --- /dev/null +++ b/.github/workflows/build-merge.yml @@ -0,0 +1,59 @@ +name: 🔄 CD · Snapshot + +on: + push: + branches: + - main + workflow_dispatch: + inputs: + maven_central: + description: Maven Central. + required: true + default: true + type: boolean + github_packages: + description: GitHub Packages. + required: true + default: true + type: boolean + +permissions: {} + +concurrency: + group: build-main-${{ github.ref || github.run_id }} + cancel-in-progress: false + +jobs: + release: + permissions: + contents: read + uses: YunaBraska/YunaBraska/.github/workflows/wc_java_release.yml@c5af554b4e859b238b7b65f9865bb84b51f7db54 + with: + semver_strategy: snapshot + dry_run: ${{ github.event_name == 'workflow_dispatch' && (inputs.maven_central != true || inputs.github_packages != true) }} + + central: + needs: + - release + if: ${{ always() && !cancelled() && needs.release.result == 'success' }} + permissions: + actions: read + contents: read + deployments: write + uses: YunaBraska/YunaBraska/.github/workflows/wc_java_publish_central.yml@c5af554b4e859b238b7b65f9865bb84b51f7db54 + secrets: + CENTRAL_USER: ${{ secrets.CENTRAL_USER }} + CENTRAL_PASS: ${{ secrets.CENTRAL_PASS }} + GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} + GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + + packages: + needs: + - release + if: ${{ always() && !cancelled() && needs.release.result == 'success' }} + permissions: + actions: read + contents: read + deployments: write + packages: write + uses: YunaBraska/YunaBraska/.github/workflows/wc_java_publish_github_packages.yml@c5af554b4e859b238b7b65f9865bb84b51f7db54 diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml new file mode 100644 index 0000000..470bc07 --- /dev/null +++ b/.github/workflows/build-pr.yml @@ -0,0 +1,31 @@ +name: 🧪 CI · Pull Request + +on: + pull_request: + branches: + - main + types: + - opened + - synchronize + - reopened + workflow_dispatch: + inputs: + ref: + description: Ref. + required: false + default: '' + type: string + +permissions: {} + +concurrency: + group: build-pr-${{ github.event.pull_request.number || github.run_id }} + cancel-in-progress: false + +jobs: + build: + permissions: + contents: read + uses: YunaBraska/YunaBraska/.github/workflows/wc_java_build_common.yml@c5af554b4e859b238b7b65f9865bb84b51f7db54 + with: + ref: ${{ inputs.ref || github.sha }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index d2a919f..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: "Build" - -on: - workflow_dispatch: - inputs: - run_update: - type: boolean - default: false - required: false - description: "Update wrapper and properties" - run_test: - type: boolean - default: true - required: false - description: "Runs tests" - run_deploy: - type: choice - required: false - default: "false" - description: "true=force, false=on changes, disabled=never" - options: - - "disabled" - - "true" - - "false" - ref: - type: string - required: false - description: "[Optional] branch, tag or commit" - -jobs: - builld: - uses: YunaBraska/YunaBraska/.github/workflows/wc_java_build.yml@main - with: - ref: ${{ github.event.inputs.ref || github.ref || github.ref_name || github.head_ref }} - run_update: ${{ inputs.run_update }} - run_test: ${{ inputs.run_test }} - run_deploy: ${{ inputs.run_deploy }} - secrets: inherit diff --git a/.github/workflows/daily.yml b/.github/workflows/daily.yml deleted file mode 100644 index 4fb92ce..0000000 --- a/.github/workflows/daily.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: "Daily" - -on: - schedule: - - cron: '0 7 * * *' - workflow_dispatch: - -jobs: - builld: - uses: YunaBraska/YunaBraska/.github/workflows/wc_java_build.yml@main - with: - run_update: true - run_test: true - run_deploy: false - secrets: inherit diff --git a/.github/workflows/maintenance.yml b/.github/workflows/maintenance.yml new file mode 100644 index 0000000..b9a6ea3 --- /dev/null +++ b/.github/workflows/maintenance.yml @@ -0,0 +1,24 @@ +name: 🛠️ CI · Maintenance + +on: + schedule: + - cron: '0 6 * * 0' + workflow_dispatch: + inputs: + dry_run: + description: Dry run. + required: true + default: true + type: boolean + +permissions: {} + +jobs: + maven_wrapper: + permissions: + actions: write + contents: write + pull-requests: write + uses: YunaBraska/YunaBraska/.github/workflows/wc_java_update_maven_wrapper.yml@c5af554b4e859b238b7b65f9865bb84b51f7db54 + with: + dry_run: ${{ github.event_name == 'workflow_dispatch' && inputs.dry_run || false }} diff --git a/.github/workflows/on_merge.yml b/.github/workflows/on_merge.yml deleted file mode 100644 index 1e07872..0000000 --- a/.github/workflows/on_merge.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: "On Merge" - -on: - pull_request_target: - types: [ closed ] - branches: - - main - - master - - default - paths-ignore: - - '*.md' - - '*.cmd' - - '*.bat' - - '*.sh' - - 'FOUNDING.yml' - - 'FOUNDING.yaml' - - '.editorconfig' - - '.gitignore' - - 'docs/**' - - '.github/**' - - '.mvn/**' - - '.gradle/**' -jobs: - builld: - if: github.event.pull_request.merged == true - uses: YunaBraska/YunaBraska/.github/workflows/wc_java_build.yml@main - with: - ref: ${{ github.ref_name }} - run_update: false # Updates only on main branches - run_test: true # Always run tests - run_deploy: disabled # Never deploy on non-main branches - secrets: inherit diff --git a/.github/workflows/on_push.yml b/.github/workflows/on_push.yml deleted file mode 100644 index fed49ea..0000000 --- a/.github/workflows/on_push.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: "On Push" - -on: - push: - branches-ignore: - - main - - master - - default - -jobs: - builld: - uses: YunaBraska/YunaBraska/.github/workflows/wc_java_build.yml@main - with: - ref: ${{ github.ref_name }} - run_update: false # Updates only on main branches - run_test: true # Always run tests - run_deploy: disabled # Never deploy on non-main branches - secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..e84ff63 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,72 @@ +# yuna-release: true +name: 🏷️ CD · Release + +on: + workflow_dispatch: + inputs: + maven_central: + description: Maven Central. + required: true + default: true + type: boolean + github_packages: + description: GitHub Packages. + required: true + default: true + type: boolean + force: + description: Force. + required: true + default: false + type: boolean + +permissions: {} + +jobs: + release: + permissions: + contents: read + uses: YunaBraska/YunaBraska/.github/workflows/wc_java_release.yml@c5af554b4e859b238b7b65f9865bb84b51f7db54 + with: + force: ${{ inputs.force }} + dry_run: ${{ inputs.maven_central != true || inputs.github_packages != true }} + + central: + needs: + - release + if: ${{ always() && !cancelled() && needs.release.result == 'success' }} + permissions: + actions: read + contents: read + deployments: write + uses: YunaBraska/YunaBraska/.github/workflows/wc_java_publish_central.yml@c5af554b4e859b238b7b65f9865bb84b51f7db54 + secrets: + CENTRAL_USER: ${{ secrets.CENTRAL_USER }} + CENTRAL_PASS: ${{ secrets.CENTRAL_PASS }} + GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} + GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + + packages: + needs: + - release + if: ${{ always() && !cancelled() && needs.release.result == 'success' }} + permissions: + actions: read + contents: read + deployments: write + packages: write + uses: YunaBraska/YunaBraska/.github/workflows/wc_java_publish_github_packages.yml@c5af554b4e859b238b7b65f9865bb84b51f7db54 + + github: + needs: + - release + - central + - packages + if: ${{ always() && !cancelled() && needs.release.outputs.dry_run == 'false' && !endsWith(needs.release.outputs.version, '-SNAPSHOT') && needs.release.result == 'success' && needs.central.result == 'success' && needs.packages.result == 'success' }} + permissions: + actions: read + contents: write + uses: YunaBraska/YunaBraska/.github/workflows/wc_java_create_github_release.yml@c5af554b4e859b238b7b65f9865bb84b51f7db54 + with: + commit_sha: ${{ needs.release.outputs.commit_sha }} + version: ${{ needs.release.outputs.version }} diff --git a/pom.xml b/pom.xml index f4b5b24..25bc3bf 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ berlin.yuna type-map - 2026.08.2200739 + 1.0.0 jar type-map @@ -42,6 +42,7 @@ UTF-8 ${project.encoding} ${project.encoding} + 1980-01-01T00:00:02Z 6.1.3 @@ -49,13 +50,14 @@ 6.1.3 - 3.2.7 - 3.2.1 + 3.2.8 + 3.4.0 0.8.15 - 3.1.0 + 3.12.0 + 3.4.2 3.15.0 3.5.6 - 0.7.0 + 0.11.0 @@ -99,11 +101,50 @@ maven-compiler-plugin ${maven-compiler-plugin.version} - ${java-version} - ${java-version} ${java-version} + + org.apache.maven.plugins + maven-jar-plugin + ${maven-jar-plugin.version} + + ${project.build.outputTimestamp} + + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven-javadoc-plugin.version} + + + attach-javadocs + + jar + + + ${java-version} + true + true + none + false + + + + + + org.apache.maven.plugins + maven-source-plugin + ${maven-source-plugin.version} + + + attach-sources + + jar-no-fork + + + + org.apache.maven.plugins maven-surefire-plugin @@ -176,55 +217,12 @@ - - - release - - - release - true - - false - + + central - - - org.apache.maven.plugins - maven-javadoc-plugin - ${maven-javadoc-plugin.version} - - - attach-javadocs - - jar - - - ${java-version} - true - true - - none - false - - - - - - org.apache.maven.plugins - maven-source-plugin - ${maven-source-plugin.version} - - - attach-sources - - jar-no-fork - - - - org.apache.maven.plugins maven-gpg-plugin @@ -248,7 +246,6 @@ - org.sonatype.central @@ -260,7 +257,6 @@ true ${project.groupId}:${project.artifactId}:${project.version} - diff --git a/src/main/java/berlin/yuna/typemap/logic/JsonDecoder.java b/src/main/java/berlin/yuna/typemap/logic/JsonDecoder.java index 2b8b224..e8e9ec4 100644 --- a/src/main/java/berlin/yuna/typemap/logic/JsonDecoder.java +++ b/src/main/java/berlin/yuna/typemap/logic/JsonDecoder.java @@ -742,7 +742,7 @@ public static Stream open(final InputStream input, final Charset charset, } /** - * Detects whether the input stream is XML (leading '<') or JSON and delegates to the appropriate parser. + * Detects whether the input stream is XML (leading {@code <}) or JSON and delegates to the appropriate parser. * Uses streaming to avoid buffering whole payloads; wraps incoming streams in a {@link PushbackInputStream}. * * @param input stream to parse