1 parent
443850196d
commit
ebf8ff7869
1 file changed
-25
@@ -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
|
||||||
|
|||||||
Reference in new issue
Block a user