# Сборка и публикация 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/"