Fix: убрана зависимость от make/zip/python3 в CI workflow
Wiki Sync / Синхронизация Wiki (push) Failing after 0s
Release CI/CD / Сборка и публикация релиза (push) Successful in 4m11s

This commit is contained in:
Dmitriy Fofanov
2026-02-23 23:12:50 +03:00
parent 25c0132f9e
commit f072d954de
2 changed files with 138 additions and 16 deletions
+69 -8
View File
@@ -118,10 +118,52 @@ jobs:
- name: "Кросс-компиляция для всех платформ (16 бинарников)"
shell: bash
run: |
make build-all VERSION=${{ steps.ver.outputs.version }}
VER="${{ steps.ver.outputs.version }}"
LDFLAGS="-s -w -X main.version=${VER}"
GOFLAGS="-trimpath"
CMD="./cmd/genaudiobookinfo"
OUT="${BUILD_DIR}"
mkdir -p "${OUT}"
build() {
local goos=$1 goarch=$2 suffix=$3 extra_env="$4"
local outfile="${OUT}/${APP_NAME}-${suffix}"
echo ">>> ${goos}/${goarch} → ${APP_NAME}-${suffix}"
env GOOS=${goos} GOARCH=${goarch} ${extra_env} \
go build ${GOFLAGS} -ldflags "${LDFLAGS}" -o "${outfile}" ${CMD}
}
# Linux
build linux amd64 linux-amd64
build linux 386 linux-386
build linux arm64 linux-arm64
build linux arm linux-armv7 "GOARM=7"
build linux mips linux-mips "GOMIPS=softfloat"
build linux mipsle linux-mipsle "GOMIPS=softfloat"
build linux riscv64 linux-riscv64
# macOS
build darwin amd64 darwin-amd64
build darwin arm64 darwin-arm64
# Windows
build windows amd64 windows-amd64.exe
build windows 386 windows-386.exe
build windows arm64 windows-arm64.exe
# FreeBSD
build freebsd amd64 freebsd-amd64
build freebsd arm64 freebsd-arm64
# OpenBSD
build openbsd amd64 openbsd-amd64
# NetBSD
build netbsd amd64 netbsd-amd64
echo ""
echo "Собранные бинарники:"
ls -lh ${BUILD_DIR}/
echo "Собранные бинарники ($(ls ${OUT}/ | wc -l)):"
ls -lh ${OUT}/
# ── Архивы + контрольные суммы ──────────────────────────────────────
- name: "Создание архивов и контрольных сумм"
@@ -137,7 +179,13 @@ jobs:
*.exe)
ARCNAME="${f%.exe}.zip"
echo " ${f} → archives/${ARCNAME}"
zip "archives/${ARCNAME}" "$f"
if command -v zip &>/dev/null; then
zip "archives/${ARCNAME}" "$f"
else
# Fallback: tar.gz вместо zip если zip не установлен
ARCNAME="${f%.exe}.tar.gz"
tar -czf "archives/${ARCNAME}" "$f"
fi
;;
${APP_NAME}-*)
ARCNAME="${f}.tar.gz"
@@ -318,11 +366,19 @@ jobs:
echo "══════════════════════════════════════"
# ── JSON-кодирование тела релиза ───────────────────────────────
BODY_JSON=$(python3 -c "
# JSON-кодирование: python3 или чистый bash
if command -v python3 &>/dev/null; then
BODY_JSON=$(python3 -c "
import json
with open('/tmp/release_body.md', 'r') as f:
print(json.dumps(f.read()))
")
else
# Чистый bash: экранируем для JSON
BODY_RAW=$(cat /tmp/release_body.md)
BODY_JSON=$(printf '%s' "$BODY_RAW" | sed 's/\\/\\\\/g; s/"/\\"/g; s/ /\\t/g' | awk '{printf "%s\\n", $0}' | sed 's/\\n$//')
BODY_JSON="\"${BODY_JSON}\""
fi
# ── Создание релиза через Gitea API ────────────────────────────
echo ""
@@ -341,13 +397,18 @@ jobs:
\"prerelease\": false
}")
RELEASE_ID=$(echo "$RELEASE_JSON" | \
python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('id',''))" 2>/dev/null || true)
# Извлекаем ID релиза: python3 или grep/sed
if command -v python3 &>/dev/null; then
RELEASE_ID=$(echo "$RELEASE_JSON" | \
python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('id',''))" 2>/dev/null || true)
else
RELEASE_ID=$(echo "$RELEASE_JSON" | grep -o '"id":[0-9]*' | head -1 | grep -o '[0-9]*')
fi
if [ -z "$RELEASE_ID" ] || [ "$RELEASE_ID" = "None" ]; then
echo "ОШИБКА: не удалось создать релиз!"
echo "Ответ API:"
echo "$RELEASE_JSON" | python3 -m json.tool 2>/dev/null || echo "$RELEASE_JSON"
echo "$RELEASE_JSON"
exit 1
fi