ha(ci): Gitea Actions — сборка и публикация pyfglair в PyPI-реестр пакетов Gitea
- .gitea/workflows/publish-pyfglair.yaml: ручной workflow_dispatch — toolchain, python -m build (wheel+sdist), smoke-тест wheel, twine upload в /api/packages/<owner>/pypi (PAT в секрете GITEA_PYPI_TOKEN; встроенный GITEA_TOKEN пакеты публиковать не умеет); вход bundled_mbedtls - setup.py: FGL_BUNDLED_MBEDTLS=0 уважается при сборке wheel (системный mbedtls), по умолчанию — встроенный (проверено readelf для обоих) - RELEASE_HA переписан: §1 внутренняя установка (Gitea Packages + команда pip install для HA), §2 PyPI (публично), §3 GitHub/HACS (Custom Repositories только на GitHub), §4-5 без изменений - README компонента: внутренняя установка pyfglair из Gitea Packages
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
# Сборка и публикация pyfglair в PyPI-реестр пакетов Gitea.
|
||||
# Запуск: Actions → Publish pyfglair → Run workflow (ручной, workflow_dispatch).
|
||||
#
|
||||
# Секреты репозитория (Settings → Actions → Secrets):
|
||||
# GITEA_PYPI_TOKEN — personal access token со scope write:package
|
||||
# GITEA_PYPI_USER — (опционально) имя пользователя Gitea для upload;
|
||||
# по умолчанию — актор запуска.
|
||||
#
|
||||
# Примечания Gitea Actions:
|
||||
# * встроенный GITEA_TOKEN не может публиковать пакеты — нужен PAT;
|
||||
# * actions/checkout и actions/setup-python тянутся с github.com
|
||||
# (если инстанс изолирован — замените на абсолютные URL своих зеркал);
|
||||
# * сборка wheel с bundled mbedtls требует доступ к github.com
|
||||
# (FetchContent); при BUNDLED=0 ставится системный libmbedtls-dev.
|
||||
name: Publish pyfglair
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
bundled_mbedtls:
|
||||
description: "1 — встроить mbedtls, 0 — использовать системный"
|
||||
required: false
|
||||
default: "1"
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.12"
|
||||
|
||||
- name: Toolchain
|
||||
run: |
|
||||
if ! command -v cmake >/dev/null || ! command -v ninja >/dev/null \
|
||||
|| ! command -v g++ >/dev/null; then
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y --no-install-recommends cmake ninja-build g++
|
||||
fi
|
||||
if [ "${{ inputs.bundled_mbedtls }}" = "0" ]; then
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y --no-install-recommends libmbedtls-dev
|
||||
fi
|
||||
cmake --version | head -1
|
||||
g++ --version | head -1
|
||||
|
||||
- name: Build wheel + sdist
|
||||
env:
|
||||
BUNDLED: ${{ inputs.bundled_mbedtls }}
|
||||
run: |
|
||||
if [ "$BUNDLED" = "0" ]; then
|
||||
export FGL_BUNDLED_MBEDTLS=0
|
||||
else
|
||||
export FGL_BUNDLED_MBEDTLS=1
|
||||
fi
|
||||
pip install --upgrade build
|
||||
python -m build
|
||||
ls -l dist
|
||||
|
||||
- name: Smoke test wheel
|
||||
run: |
|
||||
python -m venv /tmp/wheeltest
|
||||
/tmp/wheeltest/bin/pip install --quiet dist/*.whl
|
||||
/tmp/wheeltest/bin/python -c "import pyfglair.session as s; print('pyfglair:', s.__file__)"
|
||||
/tmp/wheeltest/bin/python -c "from pyfglair import Template, Prop, convert_to_display; assert convert_to_display(Template.A, Prop.DISPLAY_TEMPERATURE, 7000) == 200"
|
||||
|
||||
- name: Publish to Gitea package registry (PyPI)
|
||||
env:
|
||||
TOKEN: ${{ secrets.GITEA_PYPI_TOKEN }}
|
||||
SECRET_USER: ${{ secrets.GITEA_PYPI_USER }}
|
||||
run: |
|
||||
if [ -z "$TOKEN" ]; then
|
||||
echo "::error::Задайте секрет GITEA_PYPI_TOKEN (PAT со scope write:package)"
|
||||
exit 1
|
||||
fi
|
||||
SERVER="${GITHUB_SERVER_URL:-}"
|
||||
if [ -z "$SERVER" ]; then
|
||||
SERVER="$(git remote get-url origin | sed -E 's#^git@([^:]+):.*#https://\1#; s#^(https?://[^/]+)/.*#\1#')"
|
||||
fi
|
||||
REPO="${GITHUB_REPOSITORY:-$(git remote get-url origin | sed -E 's#.*[:/]([^/]+/[^/]+?)(\.git)?$#\1#')}"
|
||||
OWNER="${REPO%%/*}"
|
||||
GITEA_USER="${SECRET_USER:-${GITHUB_ACTOR:-git}}"
|
||||
pip install --upgrade twine
|
||||
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/"
|
||||
Reference in New Issue
Block a user