diff --git a/.gitea/workflows/publish-pyfglair.yaml b/.gitea/workflows/publish-pyfglair.yaml index a652fe1..f3deabb 100644 --- a/.gitea/workflows/publish-pyfglair.yaml +++ b/.gitea/workflows/publish-pyfglair.yaml @@ -99,11 +99,20 @@ jobs: OWNER="${REPO%%/*}" GITEA_USER="${PYPI_USER:-${GITHUB_ACTOR:-git}}" pip install --upgrade twine + + # twine 7 не поддерживает --skip-existing для не-PyPI репозиториев, + # поэтому проверяем simple-индекс Gitea сами. + VERSION="$(basename "$(ls dist/pyfglair-*.tar.gz | head -1)" | sed -E 's/^pyfglair-(.+)\.tar\.gz$/\1/')" + INDEX="$SERVER/api/packages/$OWNER/pypi/simple/pyfglair/" + if curl -fsS -u "$GITEA_USER:$TOKEN" "$INDEX" | grep -q "pyfglair-${VERSION}-"; then + echo "Версия $VERSION уже опубликована — пропуск загрузки." + exit 0 + fi + python -m twine upload \ --repository-url "$SERVER/api/packages/$OWNER/pypi" \ --username "$GITEA_USER" \ --password "$TOKEN" \ - --skip-existing \ --non-interactive \ dist/* echo "Опубликовано: $SERVER/api/packages/$OWNER/pypi/simple/pyfglair/" diff --git a/docs/RELEASE_HA.md b/docs/RELEASE_HA.md index 452502b..870df2d 100644 --- a/docs/RELEASE_HA.md +++ b/docs/RELEASE_HA.md @@ -35,9 +35,10 @@ Workflow: `.gitea/workflows/publish-pyfglair.yaml` (workflow объявляет Workflow собирает `wheel` + `sdist`, прогоняет smoke-тест установки (запускается из `/tmp` с `python -P`, чтобы не подхватить исходники -`pyfglair/` вместо wheel) и публикует через `twine upload --skip-existing`. -Повторная публикация той же версии пропускается; для новой версии поднимите -`version` в `pyproject.toml`. +`pyfglair/` вместо wheel) и публикует через `twine upload`. Twine 7 не +поддерживает `--skip-existing` для не-PyPI репозиториев, поэтому workflow +сам проверяет simple-индекс Gitea и пропускает загрузку, если версия уже +опубликована. Для новой версии поднимите `version` в `pyproject.toml`. ### 1.2. Установка pyfglair в Home Assistant