ha(ci): pre-check simple-индекса Gitea вместо --skip-existing (twine 7)
twine 7 запрещает --skip-existing для не-PyPI репозиториев (UnsupportedConfiguration); workflow проверяет наличие версии в simple-индексе и пропускает повторную публикацию.
This commit is contained in:
@@ -99,11 +99,20 @@ jobs:
|
|||||||
OWNER="${REPO%%/*}"
|
OWNER="${REPO%%/*}"
|
||||||
GITEA_USER="${PYPI_USER:-${GITHUB_ACTOR:-git}}"
|
GITEA_USER="${PYPI_USER:-${GITHUB_ACTOR:-git}}"
|
||||||
pip install --upgrade twine
|
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 \
|
python -m twine upload \
|
||||||
--repository-url "$SERVER/api/packages/$OWNER/pypi" \
|
--repository-url "$SERVER/api/packages/$OWNER/pypi" \
|
||||||
--username "$GITEA_USER" \
|
--username "$GITEA_USER" \
|
||||||
--password "$TOKEN" \
|
--password "$TOKEN" \
|
||||||
--skip-existing \
|
|
||||||
--non-interactive \
|
--non-interactive \
|
||||||
dist/*
|
dist/*
|
||||||
echo "Опубликовано: $SERVER/api/packages/$OWNER/pypi/simple/pyfglair/"
|
echo "Опубликовано: $SERVER/api/packages/$OWNER/pypi/simple/pyfglair/"
|
||||||
|
|||||||
+4
-3
@@ -35,9 +35,10 @@ Workflow: `.gitea/workflows/publish-pyfglair.yaml` (workflow объявляет
|
|||||||
|
|
||||||
Workflow собирает `wheel` + `sdist`, прогоняет smoke-тест установки
|
Workflow собирает `wheel` + `sdist`, прогоняет smoke-тест установки
|
||||||
(запускается из `/tmp` с `python -P`, чтобы не подхватить исходники
|
(запускается из `/tmp` с `python -P`, чтобы не подхватить исходники
|
||||||
`pyfglair/` вместо wheel) и публикует через `twine upload --skip-existing`.
|
`pyfglair/` вместо wheel) и публикует через `twine upload`. Twine 7 не
|
||||||
Повторная публикация той же версии пропускается; для новой версии поднимите
|
поддерживает `--skip-existing` для не-PyPI репозиториев, поэтому workflow
|
||||||
`version` в `pyproject.toml`.
|
сам проверяет simple-индекс Gitea и пропускает загрузку, если версия уже
|
||||||
|
опубликована. Для новой версии поднимите `version` в `pyproject.toml`.
|
||||||
|
|
||||||
### 1.2. Установка pyfglair в Home Assistant
|
### 1.2. Установка pyfglair в Home Assistant
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user