Files
dbmgr-hmos/ci/build-hap.ps1
T
2026-10-19 00:11:38 +08:00

66 lines
1.8 KiB
PowerShell
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<#
build-hap.ps1 - 命令行构建 HAP(CI 与本地通用)
用法:
powershell -ExecutionPolicy Bypass -File ci\build-hap.ps1 [-BuildMode debug|release] [-Product default] [-SdkHome <SDK 路径>] [-DryRun]
说明:
- 只封装 hvigorw 调用与产物定位,签名由 CI 的独立步骤完成(见 ci/README.md);
- -DryRun 只打印将要执行的命令,不触发构建(用于自检与流水线 dry-run)。
#>
param(
[ValidateSet('debug', 'release')][string]$BuildMode = 'debug',
[string]$Product = 'default',
[string]$SdkHome = 'D:\env\huawei\command-line-tools\sdk',
[switch]$DryRun
)
$ErrorActionPreference = 'Stop'
$projectRoot = Split-Path -Parent $PSScriptRoot
if (-not (Test-Path (Join-Path $projectRoot 'hvigorfile.ts'))) {
throw "未找到工程根目录(缺少 hvigorfile.ts): $projectRoot"
}
if (-not (Test-Path $SdkHome)) {
throw "SDK 路径不存在: $SdkHome"
}
$env:DEVECO_SDK_HOME = $SdkHome
$hvArgs = @(
'assembleHap',
'--mode', 'module',
'-p', "product=$Product",
'-p', "buildMode=$BuildMode",
'--no-daemon'
)
if ($DryRun) {
Write-Output ("PROJECT: " + $projectRoot)
Write-Output ("SDK: " + $SdkHome)
Write-Output ("DRYRUN: hvigorw " + ($hvArgs -join ' '))
return
}
Push-Location $projectRoot
try {
& hvigorw @hvArgs
if ($LASTEXITCODE -ne 0) {
throw "hvigorw 构建失败,退出码 $LASTEXITCODE"
}
}
finally {
Pop-Location
}
$outDir = Join-Path $projectRoot ("entry\build\" + $Product + "\outputs\" + $Product)
$hap = Get-ChildItem $outDir -Filter '*.hap' -ErrorAction SilentlyContinue |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1
if ($null -eq $hap) {
throw "未找到 HAP 产物: $outDir"
}
Write-Output ("ARTIFACT: " + $hap.FullName)
Write-Output ("SIZE: " + $hap.Length)