Files
agent-radar 7be535059e
Dependency audit / audit (push) Canceled after 0s
CI / plan (push) Canceled after 0s
Gitoxide helper admission / macos-latest (push) Canceled after 0s
Gitoxide helper admission / ubuntu-latest (push) Canceled after 0s
Gitoxide helper admission / windows-latest (push) Canceled after 0s
Runtime Host peer admission / quality (push) Canceled after 0s
Windows recovery / windows_recovery (push) Canceled after 0s
CI / heavy (push) Canceled after 0s
CI / test (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 19:05:14 +08:00

94 lines
3.4 KiB
PowerShell

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
$ErrorActionPreference = 'Stop'
$PSNativeCommandUseErrorActionPreference = $false
$launcher = Join-Path $PSScriptRoot 'launcher\target\debug\maka-windows-sandbox.exe'
if (-not (Test-Path -LiteralPath $launcher)) {
throw "Missing launcher binary: $launcher"
}
$sid = [Security.Principal.WindowsIdentity]::GetCurrent().User.Value
$pipeSuffix = "maka-sandbox-client-ci-$PID"
$pipeName = "\\.\pipe\$pipeSuffix"
$manifestPath = Join-Path $env:RUNNER_TEMP "maka-windows-broker-client-$PID.json"
$launch = @{
version = 1
requestId = 'broker-client-smoke-launch'
executable = $launcher
arguments = @('--self-probe')
cwd = Split-Path -Parent $launcher
readRoots = @()
writeRoots = @()
network = 'restricted'
environment = @{}
}
$digestInput = Join-Path $env:RUNNER_TEMP "maka-windows-client-digest-$PID.json"
$launch | ConvertTo-Json -Depth 5 | Set-Content -LiteralPath $digestInput -Encoding utf8
$digest = (& $launcher --launch-digest $digestInput 2>&1) -join ''
Remove-Item -LiteralPath $digestInput -Force
if ($LASTEXITCODE -ne 0 -or $digest -notmatch '^[a-f0-9]{64}$') {
throw "Unable to compute launch digest: $digest"
}
$manifest = @{
version = 1
requestId = 'broker-client-smoke'
clientPid = 0
clientNonce = '0123456789abcdef0123456789abcdef'
profileDigest = $digest
launch = $launch
}
$manifest | ConvertTo-Json -Depth 5 | Set-Content -LiteralPath $manifestPath -Encoding utf8
$start = [Diagnostics.ProcessStartInfo]::new()
$start.FileName = $launcher
$start.UseShellExecute = $false
$start.CreateNoWindow = $true
$start.RedirectStandardError = $true
$start.ArgumentList.Add('--broker-serve-once')
$start.ArgumentList.Add($pipeName)
$start.ArgumentList.Add($sid)
$start.ArgumentList.Add($digest)
$server = [Diagnostics.Process]::Start($start)
try {
$output = & $launcher --broker-client $pipeName $manifestPath 2>&1
$exitCode = $LASTEXITCODE
$rendered = $output -join "`n"
if ($exitCode -ne 0) {
throw "Broker client AppContainer launch failed: exit=$exitCode output=$rendered"
}
if (Test-Path -LiteralPath $manifestPath) {
throw 'Broker client left its launch manifest on disk'
}
if (-not $server.WaitForExit(10000)) {
$server.Kill($true)
throw 'Broker server did not exit after the client exchange'
}
if ($server.ExitCode -ne 0) {
throw "Broker server failed: $($server.StandardError.ReadToEnd())"
}
Write-Host "Broker client PID binding, manifest cleanup, and AppContainer launch verified: $rendered"
} finally {
Remove-Item -LiteralPath $manifestPath -Force -ErrorAction SilentlyContinue
if (-not $server.HasExited) { $server.Kill($true) }
$server.Dispose()
}
exit 0