From ac36cdc976d0da1659120585b3adaaea15770714 Mon Sep 17 00:00:00 2001 From: Benjosh95 Date: Thu, 21 Aug 2025 09:35:38 +0200 Subject: [PATCH 1/7] feat: add java sdk generation job to pipeline --- .github/actions/build/java/action.yaml | 8 +++++ .github/actions/generate-sdk/java/action.yaml | 11 +++++++ .github/workflows/sdk-pr.yaml | 30 +++++++++++++++++++ scripts/project.sh | 4 +++ 4 files changed, 53 insertions(+) create mode 100644 .github/actions/build/java/action.yaml create mode 100644 .github/actions/generate-sdk/java/action.yaml diff --git a/.github/actions/build/java/action.yaml b/.github/actions/build/java/action.yaml new file mode 100644 index 0000000..54e5979 --- /dev/null +++ b/.github/actions/build/java/action.yaml @@ -0,0 +1,8 @@ +name: Build +description: "Build tools" +runs: + using: "composite" + steps: + - name: Install project tools and dependencies + shell: bash + run: make project-tools LANGUAGE=java \ No newline at end of file diff --git a/.github/actions/generate-sdk/java/action.yaml b/.github/actions/generate-sdk/java/action.yaml new file mode 100644 index 0000000..4459713 --- /dev/null +++ b/.github/actions/generate-sdk/java/action.yaml @@ -0,0 +1,11 @@ +name: Generate SDK +description: "Generates the Java SDK" +runs: + using: "composite" + steps: + - name: Download OAS + shell: bash + run: make download-oas + - name: Generate SDK + shell: bash + run: make generate-sdk LANGUAGE=java \ No newline at end of file diff --git a/.github/workflows/sdk-pr.yaml b/.github/workflows/sdk-pr.yaml index 7ce266a..3d9b66f 100644 --- a/.github/workflows/sdk-pr.yaml +++ b/.github/workflows/sdk-pr.yaml @@ -78,3 +78,33 @@ jobs: poetry config virtualenvs.create false (cd ./sdk-repo-updated && make install-dev) scripts/sdk-create-pr.sh "generator-bot-${{ github.run_id }}" "Generated from GitHub run [${{ github.run_id }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" "git@github.com:stackitcloud/stackit-sdk-python.git" "python" + + main-java: + name: "[Java] Update SDK Repo" + runs-on: ubuntu-latest + permissions: + pull-requests: write + contents: write + steps: + - name: Install SSH Key + uses: shimataro/ssh-key-action@v2 + with: + key: ${{ secrets.SSH_PRIVATE_KEY }} + known_hosts: ${{ vars.SSH_KNOWN_HOSTS }} + - name: Install Java + uses: actions/setup-java@v4 + with: + distribution: "temurin" + java-version: ${{ env.JAVA_VERSION }} + - name: Checkout + uses: actions/checkout@v4 + - name: Build + uses: ./.github/actions/build/java + - name: Generate SDK + uses: ./.github/actions/generate-sdk/java + - name: Push SDK + env: + GH_REPO: "stackitcloud/stackit-sdk-java" + GH_TOKEN: ${{ secrets.SDK_PR_TOKEN }} + run: | + scripts/sdk-create-pr.sh "generator-bot-${{ github.run_id }}" "Generated from GitHub run [${{ github.run_id }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" "git@github.com:stackitcloud/stackit-sdk-java.git" "java" diff --git a/scripts/project.sh b/scripts/project.sh index a29840a..be15d5e 100755 --- a/scripts/project.sh +++ b/scripts/project.sh @@ -26,6 +26,10 @@ elif [ "$action" = "tools" ]; then go install golang.org/x/tools/cmd/goimports@latest elif [ "${LANGUAGE}" == "python" ]; then pip install black==24.8.0 isort~=5.13.2 autoimport~=1.6.1 + elif [ "${LANGUAGE}" == "java" ]; then + # Java tools are typically installed via the system or actions/setup-java + # Additional Java-specific tools can be added here if needed + echo "Java tools are ready for use" else echo "! Invalid language: $($LANGUAGE), please use $0 help for help" fi From bdef41d2513d34519ad2e61732e4d0287918716d Mon Sep 17 00:00:00 2001 From: Benjosh95 Date: Fri, 22 Aug 2025 08:55:58 +0200 Subject: [PATCH 2/7] tryout ssh instead of https --- scripts/generate-sdk/languages/java.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/generate-sdk/languages/java.sh b/scripts/generate-sdk/languages/java.sh index 2e98ed1..006bc1a 100644 --- a/scripts/generate-sdk/languages/java.sh +++ b/scripts/generate-sdk/languages/java.sh @@ -42,7 +42,7 @@ generate_java_sdk() { if [[ -z ${SDK_REPO_URL} ]]; then echo "SDK_REPO_URL not specified, default will be used." - SDK_REPO_URL="https://github.com/stackitcloud/stackit-sdk-java.git" + SDK_REPO_URL="git@github.com:stackitcloud/stackit-sdk-java.git" fi # Prepare folders From 31a0b278f7fc69936d5c2bc36806a9944d97deae Mon Sep 17 00:00:00 2001 From: Benjosh95 Date: Fri, 22 Aug 2025 09:21:32 +0200 Subject: [PATCH 3/7] workaround to skip lint and test for now --- scripts/sdk-create-pr.sh | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/scripts/sdk-create-pr.sh b/scripts/sdk-create-pr.sh index 03eb624..5a6294f 100755 --- a/scripts/sdk-create-pr.sh +++ b/scripts/sdk-create-pr.sh @@ -101,13 +101,19 @@ for service_path in ${work_dir}/sdk_to_push/services/*; do fi # If lint or test fails for a service, we skip it and continue to the next one - make lint skip-non-generated-files=true service=$service || { - echo "! Linting failed for $service. THE UPDATE OF THIS SERVICE WILL BE SKIPPED." - continue - } + # Skip linting for Java as it doesn't have a lint target + if [ "${LANGUAGE}" != "java" ]; then + make lint skip-non-generated-files=true service=$service || { + echo "! Linting failed for $service. THE UPDATE OF THIS SERVICE WILL BE SKIPPED." + continue + } + else + echo ">> Skipping linting for Java service $service (no lint target available)" + fi # Our unit test template fails because it doesn't support fields with validations, # such as the UUID component used by IaaS. We introduce this hardcoded skip until we fix it - if [ "${service}" = "iaas" ] || [ "${service}" = "iaasalpha" ]; then + # We also skip tests for Java as it doesn't have a test target available yet + if [ "${LANGUAGE}" = "java" ] || [ "${service}" = "iaas" ] || [ "${service}" = "iaasalpha" ]; then echo ">> Skipping tests of $service service" else make test skip-non-generated-files=true service=$service || { From ba708bdb773ae1258ce2ca4c52fa18e301188f12 Mon Sep 17 00:00:00 2001 From: Benjosh95 Date: Thu, 28 Aug 2025 09:34:28 +0200 Subject: [PATCH 4/7] adjust sdk-pr and scripts worfklow for java --- .github/actions/build/java/action.yaml | 8 -------- .github/actions/generate-sdk/java/action.yaml | 11 ----------- .github/workflows/sdk-pr.yaml | 6 +++--- scripts/project.sh | 2 -- scripts/sdk-create-pr.sh | 16 +++++----------- 5 files changed, 8 insertions(+), 35 deletions(-) delete mode 100644 .github/actions/build/java/action.yaml delete mode 100644 .github/actions/generate-sdk/java/action.yaml diff --git a/.github/actions/build/java/action.yaml b/.github/actions/build/java/action.yaml deleted file mode 100644 index 54e5979..0000000 --- a/.github/actions/build/java/action.yaml +++ /dev/null @@ -1,8 +0,0 @@ -name: Build -description: "Build tools" -runs: - using: "composite" - steps: - - name: Install project tools and dependencies - shell: bash - run: make project-tools LANGUAGE=java \ No newline at end of file diff --git a/.github/actions/generate-sdk/java/action.yaml b/.github/actions/generate-sdk/java/action.yaml deleted file mode 100644 index 4459713..0000000 --- a/.github/actions/generate-sdk/java/action.yaml +++ /dev/null @@ -1,11 +0,0 @@ -name: Generate SDK -description: "Generates the Java SDK" -runs: - using: "composite" - steps: - - name: Download OAS - shell: bash - run: make download-oas - - name: Generate SDK - shell: bash - run: make generate-sdk LANGUAGE=java \ No newline at end of file diff --git a/.github/workflows/sdk-pr.yaml b/.github/workflows/sdk-pr.yaml index 3d9b66f..c6f2edd 100644 --- a/.github/workflows/sdk-pr.yaml +++ b/.github/workflows/sdk-pr.yaml @@ -98,10 +98,10 @@ jobs: java-version: ${{ env.JAVA_VERSION }} - name: Checkout uses: actions/checkout@v4 - - name: Build - uses: ./.github/actions/build/java + - name: Download OAS + run: make download-oas - name: Generate SDK - uses: ./.github/actions/generate-sdk/java + run: make generate-sdk LANGUAGE=java - name: Push SDK env: GH_REPO: "stackitcloud/stackit-sdk-java" diff --git a/scripts/project.sh b/scripts/project.sh index be15d5e..0c71c6d 100755 --- a/scripts/project.sh +++ b/scripts/project.sh @@ -27,8 +27,6 @@ elif [ "$action" = "tools" ]; then elif [ "${LANGUAGE}" == "python" ]; then pip install black==24.8.0 isort~=5.13.2 autoimport~=1.6.1 elif [ "${LANGUAGE}" == "java" ]; then - # Java tools are typically installed via the system or actions/setup-java - # Additional Java-specific tools can be added here if needed echo "Java tools are ready for use" else echo "! Invalid language: $($LANGUAGE), please use $0 help for help" diff --git a/scripts/sdk-create-pr.sh b/scripts/sdk-create-pr.sh index 5a6294f..03eb624 100755 --- a/scripts/sdk-create-pr.sh +++ b/scripts/sdk-create-pr.sh @@ -101,19 +101,13 @@ for service_path in ${work_dir}/sdk_to_push/services/*; do fi # If lint or test fails for a service, we skip it and continue to the next one - # Skip linting for Java as it doesn't have a lint target - if [ "${LANGUAGE}" != "java" ]; then - make lint skip-non-generated-files=true service=$service || { - echo "! Linting failed for $service. THE UPDATE OF THIS SERVICE WILL BE SKIPPED." - continue - } - else - echo ">> Skipping linting for Java service $service (no lint target available)" - fi + make lint skip-non-generated-files=true service=$service || { + echo "! Linting failed for $service. THE UPDATE OF THIS SERVICE WILL BE SKIPPED." + continue + } # Our unit test template fails because it doesn't support fields with validations, # such as the UUID component used by IaaS. We introduce this hardcoded skip until we fix it - # We also skip tests for Java as it doesn't have a test target available yet - if [ "${LANGUAGE}" = "java" ] || [ "${service}" = "iaas" ] || [ "${service}" = "iaasalpha" ]; then + if [ "${service}" = "iaas" ] || [ "${service}" = "iaasalpha" ]; then echo ">> Skipping tests of $service service" else make test skip-non-generated-files=true service=$service || { From 2b2fd235fbf61ae4d097c7fdcbf7e147af3a4c33 Mon Sep 17 00:00:00 2001 From: Benjosh95 Date: Thu, 28 Aug 2025 09:34:46 +0200 Subject: [PATCH 5/7] adjust ci workflow for java --- .github/workflows/ci.yaml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index fed36f6..17461db 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -121,3 +121,33 @@ jobs: run: | . .venv/bin/activate make test + + main-java: + name: CI [Java] + runs-on: ubuntu-latest + strategy: + matrix: + version: ["11", "17", "21"] + steps: + - name: Install SSH Key + uses: shimataro/ssh-key-action@v2 + with: + key: ${{ secrets.SSH_PRIVATE_KEY }} + known_hosts: ${{ vars.SSH_KNOWN_HOSTS }} + - name: Install Java + uses: actions/setup-java@v4 + with: + distribution: "temurin" + java-version: ${{ env.JAVA_VERSION }} + - name: Checkout + uses: actions/checkout@v4 + - name: Download OAS + run: make download-oas + - name: Generate SDK + run: make generate-sdk LANGUAGE=java + - name: Lint + working-directory: ./sdk-repo-updated + run: make lint + - name: Test + working-directory: ./sdk-repo-updated + run: make test From 6a43aeb5f7ba9a145f4e24b6ca9ea3166f9ee59c Mon Sep 17 00:00:00 2001 From: Benjosh95 Date: Thu, 28 Aug 2025 10:23:33 +0200 Subject: [PATCH 6/7] fix --- .github/workflows/ci.yaml | 10 ++++++---- .github/workflows/sdk-pr.yaml | 6 ++++-- scripts/project.sh | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 17461db..e9fa8d1 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -127,7 +127,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - version: ["11", "17", "21"] + java-version: ["11", "17", "21"] steps: - name: Install SSH Key uses: shimataro/ssh-key-action@v2 @@ -138,13 +138,15 @@ jobs: uses: actions/setup-java@v4 with: distribution: "temurin" - java-version: ${{ env.JAVA_VERSION }} + java-version: ${{ matrix.java-version }} - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Download OAS run: make download-oas - name: Generate SDK - run: make generate-sdk LANGUAGE=java + run: make generate-sdk + env: + LANGUAGE: java - name: Lint working-directory: ./sdk-repo-updated run: make lint diff --git a/.github/workflows/sdk-pr.yaml b/.github/workflows/sdk-pr.yaml index c6f2edd..e61837a 100644 --- a/.github/workflows/sdk-pr.yaml +++ b/.github/workflows/sdk-pr.yaml @@ -97,11 +97,13 @@ jobs: distribution: "temurin" java-version: ${{ env.JAVA_VERSION }} - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Download OAS run: make download-oas - name: Generate SDK - run: make generate-sdk LANGUAGE=java + run: make generate-sdk + env: + LANGUAGE: java - name: Push SDK env: GH_REPO: "stackitcloud/stackit-sdk-java" diff --git a/scripts/project.sh b/scripts/project.sh index 0c71c6d..f9eb69e 100755 --- a/scripts/project.sh +++ b/scripts/project.sh @@ -27,7 +27,7 @@ elif [ "$action" = "tools" ]; then elif [ "${LANGUAGE}" == "python" ]; then pip install black==24.8.0 isort~=5.13.2 autoimport~=1.6.1 elif [ "${LANGUAGE}" == "java" ]; then - echo "Java tools are ready for use" + echo "No additional project setup for java needed" else echo "! Invalid language: $($LANGUAGE), please use $0 help for help" fi From 87a490c0250b2cbe34ec6cb7992c0fb20f14a9c3 Mon Sep 17 00:00:00 2001 From: Benjosh95 Date: Thu, 28 Aug 2025 11:25:10 +0200 Subject: [PATCH 7/7] add TODO comment to java script --- scripts/generate-sdk/languages/java.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/generate-sdk/languages/java.sh b/scripts/generate-sdk/languages/java.sh index 006bc1a..0adb37c 100644 --- a/scripts/generate-sdk/languages/java.sh +++ b/scripts/generate-sdk/languages/java.sh @@ -40,6 +40,7 @@ generate_java_sdk() { GIT_REPO_ID="stackit-sdk-java" fi + # TODO: Change to use the https url when repo is public if [[ -z ${SDK_REPO_URL} ]]; then echo "SDK_REPO_URL not specified, default will be used." SDK_REPO_URL="git@github.com:stackitcloud/stackit-sdk-java.git"