release workflow fix

Signed-off-by: galeon <dertiellis@gmail.com>
This commit is contained in:
galeon committed 2026-10-12 09:25:48 +03:00
1 parent 443850196d
commit ebf8ff7869
1 file changed
-25
-25
View File
@@ -1,16 +1,3 @@
# Сборка BiLauncher под Windows, Linux и macOS и публикация в Gitea Releases.
#
# push тега vX.Y.Z (или vX.Y.Z-rc1 → pre-release):
# create-release создаёт черновик релиза → три сборки прикладывают к нему файлы →
# publish добавляет SHA256SUMS.txt и снимает флаг черновика. Если какая-то сборка
# упала, релиз остаётся черновиком и пользователям не виден.
# Ручной запуск (workflow_dispatch): те же сборки, но результат — артефакты прогона,
# релиз не создаётся.
#
# Пути к Qt на раннерах задаются в их config.yaml (runner.envs): QT_ROOT — kit Qt,
# QT_TOOLS — папка Tools из Qt Online Installer (там CMake и Ninja).
# Секрет RELEASE_TOKEN — PAT с правом repository: write.
name: release name: release
on: on:
@@ -56,7 +43,6 @@ jobs:
TOKEN: ${{ secrets.RELEASE_TOKEN }} TOKEN: ${{ secrets.RELEASE_TOKEN }}
TAG: ${{ steps.meta.outputs.tag }} TAG: ${{ steps.meta.outputs.tag }}
run: | run: |
# Описание релиза — раздел CHANGELOG.md для этой версии
base="${TAG#v}"; base="${base%%-*}" base="${TAG#v}"; base="${base%%-*}"
notes=$(awk -v v="$base" ' notes=$(awk -v v="$base" '
/^## \[/ { if (on) exit; if (index($0, "[" v "]")) { on=1; next } } /^## \[/ { if (on) exit; if (index($0, "[" v "]")) { on=1; next } }
@@ -85,12 +71,9 @@ jobs:
run: | run: |
export PATH="$QT_TOOLS/CMake/bin:$QT_TOOLS/Ninja:$PATH" export PATH="$QT_TOOLS/CMake/bin:$QT_TOOLS/Ninja:$PATH"
rm -rf build AppDir dist rm -rf build AppDir dist
# LIBDIR=lib: zlibreference.cpp ищет libz рядом, в ../lib/BiLauncher,
# а на Ubuntu по умолчанию был бы lib/x86_64-linux-gnu.
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release \ cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH="$QT_ROOT" \ -DCMAKE_PREFIX_PATH="$QT_ROOT" \
-DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib
# На ВМ 6 ГБ памяти: без ограничения 42 параллельных компилятора уходят в OOM.
cmake --build build -j 8 cmake --build build -j 8
cmake --install build --prefix "$PWD/AppDir/usr" cmake --install build --prefix "$PWD/AppDir/usr"
@@ -142,7 +125,6 @@ jobs:
shell: powershell shell: powershell
run: | run: |
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
# Короткие пути: дерево WebEngine легко вылезает за MAX_PATH.
$build = "C:\r\bl-build"; $stage = "C:\r\bl-stage"; $dist = "$PWD\dist" $build = "C:\r\bl-build"; $stage = "C:\r\bl-stage"; $dist = "$PWD\dist"
Remove-Item -Recurse -Force $build, $stage, $dist -ErrorAction SilentlyContinue Remove-Item -Recurse -Force $build, $stage, $dist -ErrorAction SilentlyContinue
@@ -163,14 +145,10 @@ jobs:
& "$env:ISCC_DIR\ISCC.exe" /Q "/DAppVersion=$env:VERSION" "/DSourceDir=$stage" "/DOutputDir=$dist" packaging\windows\BiLauncher.iss & "$env:ISCC_DIR\ISCC.exe" /Q "/DAppVersion=$env:VERSION" "/DSourceDir=$stage" "/DOutputDir=$dist" packaging\windows\BiLauncher.iss
if ($LASTEXITCODE) { throw "iscc" } if ($LASTEXITCODE) { throw "iscc" }
# Portable: то же дерево, что ставит установщик, без vc_redist
# (в portable-варианте среда выполнения MSVC должна уже стоять в системе).
Remove-Item "$stage\bin\vc_redist.x64.exe" -ErrorAction SilentlyContinue Remove-Item "$stage\bin\vc_redist.x64.exe" -ErrorAction SilentlyContinue
$portable = "C:\r\BiLauncher-$env:VERSION" $portable = "C:\r\BiLauncher-$env:VERSION"
Remove-Item -Recurse -Force $portable -ErrorAction SilentlyContinue Remove-Item -Recurse -Force $portable -ErrorAction SilentlyContinue
Move-Item $stage $portable Move-Item $stage $portable
# Системный bsdtar по полному пути: в PATH раннера раньше стоит GNU tar из Git,
# который не умеет zip и принимает «C:» за имя удалённого хоста.
& "$env:SystemRoot\System32\tar.exe" -a -c -f "$dist\BiLauncher-$env:VERSION-win64-portable.zip" -C C:\r "BiLauncher-$env:VERSION" & "$env:SystemRoot\System32\tar.exe" -a -c -f "$dist\BiLauncher-$env:VERSION-win64-portable.zip" -C C:\r "BiLauncher-$env:VERSION"
if ($LASTEXITCODE) { throw "zip" } if ($LASTEXITCODE) { throw "zip" }
Remove-Item -Recurse -Force $portable Remove-Item -Recurse -Force $portable
@@ -179,7 +157,6 @@ jobs:
$sums = Get-ChildItem $dist | ForEach-Object { $sums = Get-ChildItem $dist | ForEach-Object {
"{0} {1}" -f (Get-FileHash $_.FullName -Algorithm SHA256).Hash.ToLower(), $_.Name } "{0} {1}" -f (Get-FileHash $_.FullName -Algorithm SHA256).Hash.ToLower(), $_.Name }
$b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes(($sums -join "`n") + "`n")) $b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes(($sums -join "`n") + "`n"))
# Не Out-File: PowerShell 5.1 пишет UTF-8 с BOM, и имя первой переменной ломается.
[IO.File]::AppendAllText($env:GITHUB_OUTPUT, "sums=$b64`n") [IO.File]::AppendAllText($env:GITHUB_OUTPUT, "sums=$b64`n")
- name: Загрузка в релиз - name: Загрузка в релиз
@@ -226,8 +203,6 @@ jobs:
- id: pack - id: pack
name: Ad-hoc подпись и DMG name: Ad-hoc подпись и DMG
run: | run: |
# Без Developer ID: ad-hoc подпись нужна, чтобы приложение вообще
# запускалось на Apple Silicon; Gatekeeper всё равно спросит подтверждение.
codesign --force --deep --sign - stage/BiLauncher.app codesign --force --deep --sign - stage/BiLauncher.app
codesign --verify --deep --strict stage/BiLauncher.app codesign --verify --deep --strict stage/BiLauncher.app
mkdir -p dmgroot dist mkdir -p dmgroot dist