diff --git a/action.yml b/action.yml index 815cdfd..7d04786 100644 --- a/action.yml +++ b/action.yml @@ -47,7 +47,7 @@ runs: if [[ -n "${{ inputs.ignorePatterns }}" ]]; then IFS=',' read -ra exclusions <<< "${{ inputs.ignorePatterns }}" - + for exclusion in "${exclusions[@]}"; do tar_cmd+=(--exclude="${exclusion}") log_info "Excluding pattern ${exclusion}" @@ -59,22 +59,36 @@ runs: # Execute the tar command "${tar_cmd[@]}" - + shopt -u dotglob mv "${{ inputs.customArchiveName }}.tar.gz" ../ - name: Publishing App + continue-on-error: true # Ensures the job shows a warning instead of failing shell: bash run: | PKG_URL="${{ gitea.server_url }}/api/packages/${{ gitea.repository_owner }}/generic/${{ inputs.appName }}/${{ inputs.version }}/${{ inputs.customArchiveName }}.tar.gz" log_info "Sending package in $(yellow)${PKG_URL}" - curl --user "MilaBot:${{ inputs.token }}" \ - --upload-file "${{ inputs.customArchiveName }}.tar.gz" \ - "${PKG_URL}" \ - --progress-bar \ - --show-error \ - --fail + HTTP_RESPONSE=$(curl --user "MilaBot:${{ inputs.token }}" \ + --upload-file "${{ inputs.customArchiveName }}.tar.gz" \ + "${PKG_URL}" \ + --progress-bar \ + --show-error \ + --fail --silent --write-out "%{http_code}" --output /dev/null) + + if [[ "$HTTP_RESPONSE" == "409" ]]; then + echo "::warning:: ⚠️ Warning: File already exists (HTTP 409). Ignoring failure." + exit 1 # Step "fails", but job stays in warning state due to continue-on-error + elif [[ "$HTTP_RESPONSE" -ge 200 && "$HTTP_RESPONSE" -lt 300 ]]; then + echo "✅ Upload successful." + exit 0 + else + echo "HTTP_RESPONSE=$HTTP_RESPONSE" >> "$GITEA_ENV" + + echo "❌ Error: HTTP response $HTTP_RESPONSE" + exit 1 + fi PKG_SHA="$(sha256sum "${{ inputs.customArchiveName }}.tar.gz" | cut -d' ' -f1 | tr -d '\n')" log_info "Exporting package sha256 hash in env var $(yellow)PKG_SHA" @@ -82,6 +96,9 @@ runs: log_info "Exporting package url in env var $(yellow)PKG_URL" echo "PKG_URL=${PKG_URL}" >> $GITEA_ENV - + log_info "Cleaning up" rm -f "${{ inputs.customArchiveName }}.tar.gz" + - name: Validate job + shell: bash + run: [[ -z "$HTTP_RESPONSE" ]]; || exit 1