diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 4fb9861..53c580d 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -74,8 +74,20 @@ jobs: TWINE_USERNAME: ${{ github.actor }} TWINE_PASSWORD: ${{ secrets.PACKAGE_REGISTRY_TOKEN || secrets.GITHUB_TOKEN }} run: | - uvx twine upload \ + # Gitea's PyPI registry does not support twine's --skip-existing, so + # we run a plain upload and tolerate an "already exists" conflict in + # the shell (dev versions are unique per run, so this only bites a + # main re-run of an already-published release). + set +e + out=$(uvx twine upload \ --repository-url "${{ github.server_url }}/api/packages/${{ github.repository_owner }}/pypi" \ --non-interactive \ - --skip-existing \ - dist/* + --verbose \ + dist/* 2>&1) + code=$? + echo "$out" + if [ $code -ne 0 ] && echo "$out" | grep -qiE "already exist|conflict|409"; then + echo "::notice::Version already published — treating as success." + exit 0 + fi + exit $code