From 3f7b34d6bb60dfa9bdc715322cb3b72ad3b03f0a Mon Sep 17 00:00:00 2001 From: Jayden Lee Date: Wed, 21 Jan 2026 14:36:15 +0900 Subject: [PATCH 1/2] Change curl command to print a detailed error response --- .github/workflows/publish-cloudsmith.yml | 38 +++++++++++++++++------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/.github/workflows/publish-cloudsmith.yml b/.github/workflows/publish-cloudsmith.yml index 97a414d2..045327af 100644 --- a/.github/workflows/publish-cloudsmith.yml +++ b/.github/workflows/publish-cloudsmith.yml @@ -59,7 +59,7 @@ jobs: fi echo "cloudsmith_owner=$CLOUDSMITH_OWNER" >> "$GITHUB_OUTPUT" - + - name: Checkout uses: actions/checkout@v4 with: @@ -145,12 +145,30 @@ jobs: UPLOAD_URL="https://api.cloudsmith.io/v1/packages/${OWNER}/${REPO}/upload/maven/" echo "Uploading to: ${UPLOAD_URL}" - - curl -fsS -X POST \ - -H "Authorization: Bearer ${CLOUDSMITH_API_KEY}" \ - -F "package_file=@${MAIN_JAR}" \ - -F "pom_file=@${POM_FILE}" \ - -F "javadoc_file=@${JAVADOC_JAR}" \ - -F "sources_file=@${SOURCES_JAR}" \ - -F "tests_file=@${TESTS_JAR}" \ - "${UPLOAD_URL}" \ No newline at end of file + echo "MAIN_JAR=${MAIN_JAR}" + echo "JAVADOC_JAR=${JAVADOC_JAR}" + echo "SOURCES_JAR=${SOURCES_JAR}" + echo "TESTS_JAR=${TESTS_JAR}" + echo "POM_FILE=${POM_FILE}" + + # Upload and capture response + HTTP_CODE="$( + curl -sS -o /tmp/cloudsmith_resp.json -w "%{http_code}" -X POST \ + -H "Authorization: Bearer ${CLOUDSMITH_API_KEY}" \ + -F "package_file=@${MAIN_JAR}" \ + -F "pom_file=@${POM_FILE}" \ + -F "javadoc_file=@${JAVADOC_JAR}" \ + -F "sources_file=@${SOURCES_JAR}" \ + -F "tests_file=@${TESTS_JAR}" \ + "${UPLOAD_URL}" + )" + + echo "HTTP_CODE=${HTTP_CODE}" + echo "Response body:" + cat /tmp/cloudsmith_resp.json || true + + if [ "${HTTP_CODE}" -lt 200 ] || [ "${HTTP_CODE}" -ge 300 ]; then + echo "Upload failed with status ${HTTP_CODE}" + exit 1 + fi + \ No newline at end of file From 200d2bd51cf71b3af3f0abf236e8b7eccb24bd69 Mon Sep 17 00:00:00 2001 From: Jayden Lee Date: Wed, 21 Jan 2026 18:53:59 +0900 Subject: [PATCH 2/2] [CI/CD] changed package upload method from API to CloudSmith CLI(recommended way) --- .github/workflows/publish-cloudsmith.yml | 60 ++++++++++++++---------- 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/.github/workflows/publish-cloudsmith.yml b/.github/workflows/publish-cloudsmith.yml index 045327af..2d2a4da4 100644 --- a/.github/workflows/publish-cloudsmith.yml +++ b/.github/workflows/publish-cloudsmith.yml @@ -127,7 +127,14 @@ jobs: exit 1 fi - - name: Upload to Cloudsmith Maven via API + - name: Install Cloudsmith CLI + run: | + set -euo pipefail + python3 -m pip install --upgrade pip + python3 -m pip install "cloudsmith-cli>=1.7.0" + cloudsmith --version + + - name: Upload to Cloudsmith Maven via CLI env: CLOUDSMITH_API_KEY: ${{ secrets.CLOUDSMITH_API_KEY }} run: | @@ -135,6 +142,7 @@ jobs: OWNER="${{ steps.resolve.outputs.cloudsmith_owner }}" REPO="${{ steps.resolve.outputs.cloudsmith_repo }}" + TARGET="${OWNER}/${REPO}" MAIN_JAR="$(ls -1 target/*.jar | grep -vE '(-javadoc|-sources|-tests)\.jar$' | head -n 1)" JAVADOC_JAR="$(ls -1 target/*-javadoc.jar | head -n 1)" @@ -142,33 +150,35 @@ jobs: TESTS_JAR="$(ls -1 target/*-tests.jar | head -n 1)" POM_FILE="pom.xml" - UPLOAD_URL="https://api.cloudsmith.io/v1/packages/${OWNER}/${REPO}/upload/maven/" - - echo "Uploading to: ${UPLOAD_URL}" + echo "=== Cloudsmith upload target ===" + echo "TARGET=${TARGET}" echo "MAIN_JAR=${MAIN_JAR}" echo "JAVADOC_JAR=${JAVADOC_JAR}" echo "SOURCES_JAR=${SOURCES_JAR}" echo "TESTS_JAR=${TESTS_JAR}" echo "POM_FILE=${POM_FILE}" - - # Upload and capture response - HTTP_CODE="$( - curl -sS -o /tmp/cloudsmith_resp.json -w "%{http_code}" -X POST \ - -H "Authorization: Bearer ${CLOUDSMITH_API_KEY}" \ - -F "package_file=@${MAIN_JAR}" \ - -F "pom_file=@${POM_FILE}" \ - -F "javadoc_file=@${JAVADOC_JAR}" \ - -F "sources_file=@${SOURCES_JAR}" \ - -F "tests_file=@${TESTS_JAR}" \ - "${UPLOAD_URL}" - )" - - echo "HTTP_CODE=${HTTP_CODE}" - echo "Response body:" - cat /tmp/cloudsmith_resp.json || true - - if [ "${HTTP_CODE}" -lt 200 ] || [ "${HTTP_CODE}" -ge 300 ]; then - echo "Upload failed with status ${HTTP_CODE}" - exit 1 + echo "================================" + + # Run upload and capture stdout/stderr + set +e + cloudsmith push maven "${TARGET}" "${MAIN_JAR}" \ + --pom-file "${POM_FILE}" \ + --javadoc-file "${JAVADOC_JAR}" \ + --sources-file "${SOURCES_JAR}" \ + --extra-files "${TESTS_JAR}" \ + > /tmp/cloudsmith_stdout.log 2> /tmp/cloudsmith_stderr.log + EXIT_CODE=$? + set -e + + echo "=== Cloudsmith CLI stdout ===" + cat /tmp/cloudsmith_stdout.log || true + echo "=== Cloudsmith CLI stderr ===" + cat /tmp/cloudsmith_stderr.log || true + echo "==============================" + + if [ "${EXIT_CODE}" -ne 0 ]; then + echo "Cloudsmith upload failed (exit code=${EXIT_CODE})" + exit "${EXIT_CODE}" fi - \ No newline at end of file + + echo "Cloudsmith upload succeeded"