-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild-windows.ps1
More file actions
36 lines (30 loc) · 1.93 KB
/
Copy pathbuild-windows.ps1
File metadata and controls
36 lines (30 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
$ErrorActionPreference = "Stop"
$ProjectRoot = Split-Path -Parent $MyInvocation.MyCommand.Path
Set-Location $ProjectRoot
if (-not (Get-Command python -ErrorAction SilentlyContinue)) {
throw "Python non trovato nel PATH. Installa Python 3.10+ e riprova."
}
function Invoke-CheckedNative {
param(
[Parameter(Mandatory = $true)][scriptblock]$Command,
[Parameter(Mandatory = $true)][string]$Description
)
& $Command
if ($LASTEXITCODE -ne 0) {
throw "$Description non riuscito (exit code $LASTEXITCODE)."
}
}
Invoke-CheckedNative { python -m pip install -r requirements-build.txt } "Installazione dipendenze di build"
Invoke-CheckedNative { python -m unittest discover -s tests -v } "Test automatici"
Invoke-CheckedNative { python -m pip_audit -r requirements.txt } "Audit vulnerabilita dipendenze"
Invoke-CheckedNative { python -m PyInstaller --noconfirm --clean BC-ModelVault.spec } "Build PyInstaller"
$Executable = Join-Path $ProjectRoot "dist\BC-ModelVault.exe"
$Hash = (Get-FileHash -LiteralPath $Executable -Algorithm SHA256).Hash.ToLowerInvariant()
"$Hash BC-ModelVault.exe" | Set-Content -LiteralPath (Join-Path $ProjectRoot "dist\SHA256SUMS.txt") -Encoding ascii
$SbomEnvironment = Join-Path $ProjectRoot "tmp\sbom-env"
Invoke-CheckedNative { python -m venv --clear $SbomEnvironment } "Creazione ambiente SBOM"
$SbomPython = Join-Path $SbomEnvironment "Scripts\python.exe"
Invoke-CheckedNative { & $SbomPython -m pip install --disable-pip-version-check -r requirements.txt } "Risoluzione dipendenze runtime per SBOM"
Invoke-CheckedNative { & $SbomPython -m pip uninstall --yes pip } "Esclusione pip dalla SBOM runtime"
Invoke-CheckedNative { python -m cyclonedx_py environment $SbomPython --pyproject pyproject.toml --spec-version 1.7 --output-format JSON --output-file (Join-Path $ProjectRoot "dist\sbom.cdx.json") } "Generazione SBOM CycloneDX"
Write-Host "Build, audit, SBOM e checksum completati: $Executable"