diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml index 2da96cdcd..73be63d7b 100644 --- a/.github/dependabot.yaml +++ b/.github/dependabot.yaml @@ -36,8 +36,6 @@ updates: - dependency-name: 'com.github.ekryd.sortpom:sortpom-maven-plugin' # used by deprecated code only, not worth updating for now - dependency-name: 'org.apache.axis2:*' - # newer versions cause issues with our release process - - dependency-name: 'org.apache.maven.plugins:maven-javadoc-plugin' # Ignore problematic license versions - dependency-name: 'com.sap.cloud.security:java-security' versions: ['3.6.1', '3.6.2'] diff --git a/.github/workflows/javadoc.yaml b/.github/workflows/javadoc.yaml new file mode 100644 index 000000000..d648e5e3a --- /dev/null +++ b/.github/workflows/javadoc.yaml @@ -0,0 +1,108 @@ +name: JavaDoc to Documentation Portal + +on: + workflow_dispatch: + inputs: + branch: + description: 'Branch/Commit/Tag for JavaDoc' + required: true + default: 'main' + +env: + JAVA_VERSION: 17 + DOCS_REPO: SAP/cloud-sdk + PROJECTS: "!:rfc,!:dwc-cf,!:datamodel-metadata-generator,!:odata-generator,!:odata-generator-maven-plugin,!:odata-generator-utility,!:odata-v4-generator,!:odata-v4-generator-maven-plugin,!:s4hana-connectivity,!:soap,!:testutil,!:s4hana-core" + +jobs: + build: + name: "JavaDoc to Documentation Portal" + runs-on: ubuntu-latest + + steps: + - name: "Prepare git" + run: | + git config --global user.email "cloudsdk@sap.com" + git config --global user.name "SAP Cloud SDK Bot" + + - name: "Checkout Repository" + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: "Switch branch" + run: git checkout "${{ github.event.inputs.branch || 'main' }}" + + - name: "Set up JDK 17" + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: 'maven' + + - name: "Determine Major Version" + id: determine-major-version + run: echo "MAJOR_VERSION=$(jq -r '.version' latest.json | cut -d '.' -f 1)" >> $GITHUB_OUTPUT + + - name: "Install project (skip tests)" + run: mvn install -DskipTests --quiet + + - name: "Process sources" + run: mvn process-sources -Drelease --fail-at-end --projects "${PROJECTS}" --quiet + + - name: "Copy delombok sources" + run: find . -type d -path "*/target/delombok" -exec sh -c 'cp -r "$1"/* "$(dirname $(dirname "$1"))/src/main/java/"' _ {} \; + + - name: "Generate aggregated Javadoc" + run: mvn clean javadoc:aggregate -Drelease -Djava.failOnWarning=false --projects "${PROJECTS}" --quiet + + - name: "Checkout Docs Repository" + uses: actions/checkout@v4 + with: + repository: ${{ env.DOCS_REPO }} + path: .cloud-sdk-docs + token: ${{ secrets.BOT_SDK_JS_FOR_DOCS_REPO_PR }} + + - name: "Replace JavaDoc" + id: replace-javadoc + run: | + TARGET_DIR=./.cloud-sdk-docs/static/java-api/v${{ steps.determine-major-version.outputs.MAJOR_VERSION }} + + ls -lA target + rm -rf $TARGET_DIR + mkdir -p $TARGET_DIR + mv target/reports/apidocs/* $TARGET_DIR + + cd ./.cloud-sdk-docs + git add -A . + + CHANGED_FILES="$(git status -s)" + if [[ -z "$CHANGED_FILES" ]]; then + echo "[DEBUG] No changes to API docs detected, skipping Pull Request creation." + echo "CREATE_PR=false" >> $GITHUB_OUTPUT + exit 0 + fi + + echo "CREATE_PR=true" >> $GITHUB_OUTPUT + BRANCH_NAME=java/release-docs-${{ steps.determine-major-version.outputs.MAJOR_VERSION }} + echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_OUTPUT + + git switch --create $BRANCH_NAME + git commit -m "chore: Update JavaDocs for release ${{ needs.bump-version.outputs.release-version }}" + COMMIT_SHA=$(git log -1 --pretty=format:"%H") + echo "COMMIT_SHA=$COMMIT_SHA" >> $GITHUB_OUTPUT + + git push origin $BRANCH_NAME + + - name: "Create JavaDoc PR" + id: create-javadoc-pr + if: ${{ steps.replace-javadoc.outputs.CREATE_PR == 'true' }} + working-directory: ./.cloud-sdk-docs + run: | + PR_TITLE="Java: Update JavaDocs for release ${{ needs.bump-version.outputs.release-version }}" + PR_BODY="Replace the contents of v${{ steps.determine-major-version.outputs.MAJOR_VERSION }} API docs with the latest release of the SDK." + + PR_URL=$(gh pr create --title "$PR_TITLE" --body "$PR_BODY" --repo "${{ env.DOCS_REPO }}") + echo "PR_URL=$PR_URL" >> $GITHUB_OUTPUT + echo "PR: $PR_URL" >> $GITHUB_STEP_SUMMARY + env: + GH_TOKEN: ${{ secrets.BOT_SDK_JS_FOR_DOCS_REPO_PR }} diff --git a/.github/workflows/prepare-release.yaml b/.github/workflows/prepare-release.yaml index c3d3d2662..3a680dded 100644 --- a/.github/workflows/prepare-release.yaml +++ b/.github/workflows/prepare-release.yaml @@ -154,6 +154,26 @@ jobs: env: GH_TOKEN: ${{ github.token }} + create-javadoc-aggregated-pr: + needs: [ create-release ] + name: "Create Aggregated JavaDoc PR on Documentation Portal" + runs-on: ubuntu-latest + permissions: + actions: write # needed to trigger the ci-build workflow + statuses: write # needed to update the commit status + steps: + - name: "Checkout repository" + uses: actions/checkout@v5 + with: + ref: ${{ needs.create-release.outputs.release-name }} + - name: "Trigger workflow (ignore failures)" + uses: ./.github/actions/trigger-workflow + continue-on-error: true + with: + workflow: javadoc.yaml + workflow-ref: javadoc-aggregate-delombok-3.12.0 + parameters: -f branch=${{ needs.create-release.outputs.release-name }} + create-release-notes-pr: name: "Create Release Notes PR" needs: [ bump-version, run-ci ] @@ -263,6 +283,7 @@ jobs: PR_URL=$(gh pr create --title "Release ${{ needs.bump-version.outputs.release-version }}" --body "## TODOs - [ ] Review the changes in [the release commit]($COMMIT_URL) - [ ] Review **and approve** the [Release Notes PR](${{ needs.create-release-notes-pr.outputs.pr-url }}) + - [ ] Review **and approve** the [JavaDoc PR](https://github.com/SAP/cloud-sdk/pulls?q=is%3Aopen+is%3Apr+author%3Abot-sdk-js+Update+JavaDocs) - [ ] Review the [Draft Release](${{ needs.create-release.outputs.release-url }}) - [ ] Review **and approve** this PR - [ ] Once all tests of this PR are green, trigger the [Perform Release Workflow](${{ github.event.repository.html_url }}/actions/workflows/perform-release.yml) diff --git a/README.md b/README.md index c61b7d2e1..296d033ee 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ![build](https://github.com/SAP/cloud-sdk-java/actions/workflows/continuous-integration.yaml/badge.svg?branch=main) [![REUSE status](https://api.reuse.software/badge/github.com/SAP/cloud-sdk-java)](https://api.reuse.software/info/github.com/SAP/cloud-sdk-java) [![Fosstars security rating](https://github.com/SAP/cloud-sdk-java/blob/fosstars-report/fosstars_badge.svg)](https://github.com/SAP/cloud-sdk-java/blob/fosstars-report/fosstars_report.md) -[![Maven Central](https://img.shields.io/badge/maven_central-5.23.0-blue.svg)](https://search.maven.org/search?q=g:com.sap.cloud.sdk%20AND%20a:sdk-core%20AND%20v:5.23.0) +[![Maven Central](https://img.shields.io/badge/maven_central-5.24.0-M5-blue.svg)](https://search.maven.org/search?q=g:com.sap.cloud.sdk%20AND%20a:sdk-core%20AND%20v:5.24.0-M5) [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/SAP/cloud-sdk-java) # SAP Cloud SDK SAP Cloud SDK for Java diff --git a/dependency-bundles/bom/pom.xml b/dependency-bundles/bom/pom.xml index 996585ac6..f23a2af52 100644 --- a/dependency-bundles/bom/pom.xml +++ b/dependency-bundles/bom/pom.xml @@ -345,7 +345,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.11.2 + 3.12.0 javadoc-jar diff --git a/dependency-bundles/modules-bom/pom.xml b/dependency-bundles/modules-bom/pom.xml index f792f69b2..50989420c 100644 --- a/dependency-bundles/modules-bom/pom.xml +++ b/dependency-bundles/modules-bom/pom.xml @@ -272,7 +272,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.11.2 + 3.12.0 javadoc-jar diff --git a/pom.xml b/pom.xml index 558abea58..c26d9dc56 100644 --- a/pom.xml +++ b/pom.xml @@ -515,7 +515,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.11.2 + 3.12.0 com.sap.cloud.sdk.datamodel @@ -1015,7 +1015,6 @@ com.sap.cloud.sdk.s4hana* - ${project.basedir}/target/delombok ${project.rootdir}/javadoc.overview.html @@ -1024,6 +1023,9 @@ jar + + ${project.basedir}/target/delombok + diff --git a/release_notes.md b/release_notes.md index e150016a6..3112514a9 100644 --- a/release_notes.md +++ b/release_notes.md @@ -16,7 +16,7 @@ ### 📈 Improvements -- When the circuit breaker opens, the resulting `ResilienceRuntimeException` will have the original `CallNotPermittedException` from the circuit breaker stored as a suppressed exception. +- ### 🐛 Fixed Issues