ha(ci): publish-скрипт на POSIX sh — bash в Alpine не нужен

set -o pipefail убран (единственный bashism), shebang /bin/sh; musl-джоб
вызывает sh scripts/publish-gitea-pypi.sh, bash из apk-списка исключён.
Логика проверена на фейковом индексе: уже загруженный linux-wheel
пропускается, musl-wheel и sdist загружаются.
This commit is contained in:
2026-09-29 16:36:26 +03:00
parent 90b9e2783b
commit 4ee428a6fd
2 changed files with 6 additions and 5 deletions
+3 -3
View File
@@ -83,7 +83,7 @@ jobs:
TOKEN: ${{ secrets.PYPI_TOKEN }} TOKEN: ${{ secrets.PYPI_TOKEN }}
GITEA_JOB_TOKEN: ${{ secrets.GITEA_TOKEN }} GITEA_JOB_TOKEN: ${{ secrets.GITEA_TOKEN }}
PYPI_USER: ${{ secrets.PYPI_USER }} PYPI_USER: ${{ secrets.PYPI_USER }}
run: bash scripts/publish-gitea-pypi.sh run: sh scripts/publish-gitea-pypi.sh
build-musllinux: build-musllinux:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -95,7 +95,7 @@ jobs:
REPO_URL: ${{ github.server_url }}/${{ github.repository }}.git REPO_URL: ${{ github.server_url }}/${{ github.repository }}.git
SHA: ${{ github.sha }} SHA: ${{ github.sha }}
run: | run: |
apk add --no-cache git cmake ninja g++ make curl libstdc++-dev bash apk add --no-cache git cmake ninja g++ make curl libstdc++-dev
if [ -z "$REPO_URL" ] || [ "$REPO_URL" = "/.git" ]; then if [ -z "$REPO_URL" ] || [ "$REPO_URL" = "/.git" ]; then
echo "::error::Пустой github.server_url/repository — задайте контексты или соберите musllinux вручную (docs/RELEASE_HA.md §1.4)" echo "::error::Пустой github.server_url/repository — задайте контексты или соберите musllinux вручную (docs/RELEASE_HA.md §1.4)"
exit 1 exit 1
@@ -132,4 +132,4 @@ jobs:
GITEA_JOB_TOKEN: ${{ secrets.GITEA_TOKEN }} GITEA_JOB_TOKEN: ${{ secrets.GITEA_TOKEN }}
PYPI_USER: ${{ secrets.PYPI_USER }} PYPI_USER: ${{ secrets.PYPI_USER }}
DIST_DIR: /src/dist DIST_DIR: /src/dist
run: cd /src && bash scripts/publish-gitea-pypi.sh run: cd /src && sh scripts/publish-gitea-pypi.sh
+3 -2
View File
@@ -1,7 +1,8 @@
#!/usr/bin/env bash #!/bin/sh
# Публикация файлов из DIST_DIR в PyPI-реестр пакетов Gitea. # Публикация файлов из DIST_DIR в PyPI-реестр пакетов Gitea.
# Уже загруженные (по имени файла в simple-индексе) пропускаются: twine 7 не # Уже загруженные (по имени файла в simple-индексе) пропускаются: twine 7 не
# поддерживает --skip-existing для не-PyPI репозиториев. # поддерживает --skip-existing для не-PyPI репозиториев.
# POSIX sh (Alpine busybox/dash) — внешний bash не требуется.
# #
# Переменные: # Переменные:
# TOKEN (или GITEA_JOB_TOKEN) — обязательный токен (PAT write:package или # TOKEN (или GITEA_JOB_TOKEN) — обязательный токен (PAT write:package или
@@ -10,7 +11,7 @@
# SERVER, OWNER — Gitea и владелец; если не заданы, берутся # SERVER, OWNER — Gitea и владелец; если не заданы, берутся
# из git remote (origin) # из git remote (origin)
# PYPI_USER — имя пользователя (по умолчанию актор) # PYPI_USER — имя пользователя (по умолчанию актор)
set -euo pipefail set -eu
DIST_DIR="${DIST_DIR:-dist}" DIST_DIR="${DIST_DIR:-dist}"
TOKEN="${TOKEN:-${GITEA_JOB_TOKEN:-}}" TOKEN="${TOKEN:-${GITEA_JOB_TOKEN:-}}"