ha(ci): pre-check simple-индекса Gitea вместо --skip-existing (twine 7)

twine 7 запрещает --skip-existing для не-PyPI репозиториев
(UnsupportedConfiguration); workflow проверяет наличие версии в
simple-индексе и пропускает повторную публикацию.
This commit is contained in:
2026-09-29 16:00:13 +03:00
parent 24ada01ceb
commit 8a073d96a6
2 changed files with 14 additions and 4 deletions
+10 -1
View File
@@ -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/"
+4 -3
View File
@@ -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