diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index d8f79b8..bcf77fb 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -375,28 +375,26 @@ jobs: GITEA_REPO: mcpctl run: | RPM_FILE=$(ls dist/mcpctl-*.rpm | head -1) - RPM_VERSION=$(rpm -qp --queryformat '%{VERSION}-%{RELEASE}' "$RPM_FILE") - echo "Publishing $RPM_FILE (version $RPM_VERSION)..." + echo "Publishing $RPM_FILE..." - # Delete existing version if present - HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" \ - -H "Authorization: token ${GITEA_TOKEN}" \ - "${GITEA_URL}/api/v1/packages/${GITEA_OWNER}/rpm/mcpctl/${RPM_VERSION}") - - if [ "$HTTP_CODE" = "200" ]; then - echo "Version exists, replacing..." - curl -s -o /dev/null -X DELETE \ - -H "Authorization: token ${GITEA_TOKEN}" \ - "${GITEA_URL}/api/v1/packages/${GITEA_OWNER}/rpm/mcpctl/${RPM_VERSION}" - fi - - # Upload - curl --fail -X PUT \ + # Upload — don't delete existing packages, Gitea supports + # multiple architectures under the same version. + HTTP_CODE=$(curl -s -o /tmp/rpm-upload.out -w "%{http_code}" \ + -X PUT \ -H "Authorization: token ${GITEA_TOKEN}" \ --upload-file "$RPM_FILE" \ - "${GITEA_URL}/api/packages/${GITEA_OWNER}/rpm/upload" + "${GITEA_URL}/api/packages/${GITEA_OWNER}/rpm/upload") - echo "Published successfully!" + if [ "$HTTP_CODE" = "201" ] || [ "$HTTP_CODE" = "200" ]; then + echo "Published successfully!" + elif [ "$HTTP_CODE" = "409" ]; then + echo "Already exists (same arch+version), skipping" + else + echo "Upload returned HTTP $HTTP_CODE" + cat /tmp/rpm-upload.out 2>/dev/null || true + exit 1 + fi + rm -f /tmp/rpm-upload.out # Link package to repo source scripts/link-package.sh diff --git a/scripts/publish-rpm.sh b/scripts/publish-rpm.sh index 130b259..313f0a5 100755 --- a/scripts/publish-rpm.sh +++ b/scripts/publish-rpm.sh @@ -35,31 +35,27 @@ if [ -z "$RPM_FILE" ]; then exit 1 fi -# Get version string as it appears in Gitea (e.g. "0.1.0-1") -RPM_VERSION=$(rpm -qp --queryformat '%{VERSION}-%{RELEASE}' "$RPM_FILE") +echo "==> Publishing $RPM_FILE to ${GITEA_URL}..." -echo "==> Publishing $RPM_FILE (version $RPM_VERSION) to ${GITEA_URL}..." - -# Check if version already exists and delete it first -EXISTING=$(curl -s -o /dev/null -w "%{http_code}" \ - -H "Authorization: token ${GITEA_TOKEN}" \ - "${GITEA_URL}/api/v1/packages/${GITEA_OWNER}/rpm/mcpctl/${RPM_VERSION}") - -if [ "$EXISTING" = "200" ]; then - echo "==> Version $RPM_VERSION already exists, replacing..." - curl -s -o /dev/null -X DELETE \ - -H "Authorization: token ${GITEA_TOKEN}" \ - "${GITEA_URL}/api/v1/packages/${GITEA_OWNER}/rpm/mcpctl/${RPM_VERSION}" -fi - -# Upload -curl --fail -s -X PUT \ +# Upload — don't delete existing packages, Gitea supports +# multiple architectures under the same version. +HTTP_CODE=$(curl -s -o /tmp/rpm-upload.out -w "%{http_code}" \ + -X PUT \ -H "Authorization: token ${GITEA_TOKEN}" \ --upload-file "$RPM_FILE" \ - "${GITEA_URL}/api/packages/${GITEA_OWNER}/rpm/upload" + "${GITEA_URL}/api/packages/${GITEA_OWNER}/rpm/upload") -echo "" -echo "==> Published successfully!" +if [ "$HTTP_CODE" = "201" ] || [ "$HTTP_CODE" = "200" ]; then + echo "==> Published successfully!" +elif [ "$HTTP_CODE" = "409" ]; then + echo "==> Already exists (same arch+version), skipping" +else + echo "==> Upload returned HTTP $HTTP_CODE" + cat /tmp/rpm-upload.out 2>/dev/null || true + rm -f /tmp/rpm-upload.out + exit 1 +fi +rm -f /tmp/rpm-upload.out # Ensure package is linked to the repository source "$SCRIPT_DIR/link-package.sh"