diff --git a/.gitea/workflows/build-apk.yml b/.gitea/workflows/build-apk.yml index e070e2d..fb1f7ff 100644 --- a/.gitea/workflows/build-apk.yml +++ b/.gitea/workflows/build-apk.yml @@ -54,25 +54,22 @@ jobs: GITEA_SERVER: ${{ secrets.GIT_SERVER }} run: | set -e + SERVER_CLEAN=$(echo "$GITEA_SERVER" | sed 's#/$##') + API_BASE="${SERVER_CLEAN}/api/v1" - API_BASE="${GITEA_SERVER}/api/v1" - - # Gitea Actions są kompatybilne z GITHUB_ envs OWNER="${{ github.repository_owner }}" REPO_NAME=$(echo "${{ github.repository }}" | cut -d/ -f2) TAG="${{ github.ref_name }}" - echo "URL: $API_BASE/repos/$OWNER/$REPO_NAME/releases" - echo "OWNER=$OWNER" - echo "REPO_NAME=$REPO_NAME" - echo "TAG=$TAG" + echo "Debug Info:" + echo "- API URL: $API_BASE/repos/$OWNER/$REPO_NAME/releases" + echo "- OWNER: $OWNER" + echo "- REPO: $REPO_NAME" + echo "- TAG: $TAG" - if [ -z "$TAG" ]; then - echo "Error: TAG (ref_name) is empty. Ensure you pushed a tag." - exit 1 - fi - - CREATE_RESPONSE=$(curl -s \ + # Próba utworzenia release z przechwyceniem statusu HTTP + RESPONSE_FILE=$(mktemp) + HTTP_STATUS=$(curl -s -o "$RESPONSE_FILE" -w "%{http_code}" \ -H "Content-Type: application/json" \ -H "Authorization: token $GITEA_TOKEN" \ -X POST \ @@ -85,37 +82,45 @@ jobs: }" \ "$API_BASE/repos/$OWNER/$REPO_NAME/releases") - echo "$CREATE_RESPONSE" + RESPONSE_BODY=$(cat "$RESPONSE_FILE") + echo "HTTP Status: $HTTP_STATUS" + echo "Response: $RESPONSE_BODY" - RELEASE_ID=$(echo "$CREATE_RESPONSE" \ - | grep -o '"id":[0-9]*' \ - | head -n1 \ - | cut -d: -f2) - - if [ -z "$RELEASE_ID" ]; then - echo "Failed to create release" + if [ "$HTTP_STATUS" -eq 409 ]; then + echo "Release already exists, fetching existing ID..." + RESPONSE_BODY=$(curl -s -H "Authorization: token $GITEA_TOKEN" "$API_BASE/repos/$OWNER/$REPO_NAME/releases/tags/$TAG") + RELEASE_ID=$(echo "$RESPONSE_BODY" | sed -n 's/.*"id":\([0-9]*\),.*/\1/p' | head -n1) + elif [ "$HTTP_STATUS" -eq 201 ]; then + RELEASE_ID=$(echo "$RESPONSE_BODY" | sed -n 's/.*"id":\([0-9]*\),.*/\1/p' | head -n1) + else + echo "Failed to create release. Expected 201 or 409, got $HTTP_STATUS" exit 1 fi - echo "RELEASE_ID=$RELEASE_ID" >> $GITEA_ENV + if [ -z "$RELEASE_ID" ]; then + echo "Failed to extract RELEASE_ID from response" + exit 1 + fi + + echo "RELEASE_ID=$RELEASE_ID" >> $GITHUB_ENV + echo "Successfully processed release ID: $RELEASE_ID" + - name: Upload APK to Gitea release env: GITEA_TOKEN: ${{ secrets.GIT_TOKEN }} GITEA_SERVER: ${{ secrets.GIT_SERVER }} run: | set -e - API_BASE=${GITEA_SERVER:+$GITEA_SERVER/api/v1} - API_BASE=${API_BASE:-https://gitea.com/api/v1} - REMOTE_URL=$(git config --get remote.origin.url || true) - REPO_FULL=$(echo "$REMOTE_URL" | sed -E 's#.*[:/](.+/.+)\.git$#\1#') - OWNER=$(echo "$REPO_FULL" | cut -d/ -f1) - REPO_NAME=$(echo "$REPO_FULL" | cut -d/ -f2) - APK_PATH=${APK_PATH:-$APK_PATH} + SERVER_CLEAN=$(echo "$GITEA_SERVER" | sed 's#/$##') + API_BASE="${SERVER_CLEAN}/api/v1" + + OWNER="${{ github.repository_owner }}" + REPO_NAME=$(echo "${{ github.repository }}" | cut -d/ -f2) + if [ -z "$APK_PATH" ]; then echo "APK_PATH not set" >&2 exit 1 fi - RELEASE_ID=${RELEASE_ID} if [ -z "$RELEASE_ID" ]; then echo "RELEASE_ID not set" >&2 exit 1