blob: e827c1497f3f795feb4e2f245b1ca13f6f39d1c8 [file] [log] [blame]
# Stop the script on the first error
$ErrorActionPreference = "Stop"
# Read password from file
$WORKER_PASSWORD=Get-Content "C:\volumes\secrets\token"
#Create short drive alias "Q:" for worker dir, to keep path lengths <260
SUBST Q: C:\volumes\buildbot
Get-PSDrive
# chdir to the volume storing the temporary data
# This is a mounted volume
Set-Location Q:\
# Write host and admin information
# delete old folder if it exists
# configure powershell output to use UTF-8, otherwiese buildbot can't read the file
if ( Test-Path -Path 'info\' -PathType Container ) {
Remove-Item -Recurse -Force info
}
mkdir "info\"
$HOST_FILE="info\host"
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
Write-Output "Windows version: $(cmd /c ver)" > $HOST_FILE
Write-Output "VCTools version: $(ls C:\BuildTools\VC\Tools\MSVC | Select -ExpandProperty Name)" >> $HOST_FILE
Write-Output "Cores : $((Get-CimInstance Win32_ComputerSystem).NumberOfLogicalProcessors)" >> $HOST_FILE
Write-Output "RAM : $([int][Math]::Round((Get-CimInstance Win32_ComputerSystem).TotalPhysicalMemory / 1073741824)) GB" >> $HOST_FILE
Write-Output "Christian Kühnel <kuhnel@google.com>" > "info\admin"
# create the worker
Write-Output "creating worker..."
buildslave create-slave --keepalive=200 Q: `
"lab.llvm.org:9994" "$env:WORKER_NAME" "$WORKER_PASSWORD"
# Note: Powershell does NOT exit on non-zero return codes, so we need to check manually.
if ($LASTEXITCODE -ne 0) { throw "Exit code of 'buildslave create' is $LASTEXITCODE" }
# Replace backward slashes with forward slashes on buildbot.tac
# Otherwise Cmake will go into infinite re-configuration loops
python C:\buildbot\fix_buildbot_tac_paths.py buildbot.tac
if ($LASTEXITCODE -ne 0) { throw "Exit code of 'fix_buildbot_tac_paths' is $LASTEXITCODE" }
# start the daemon, as this does not print and logs to std out, run it in the background
Write-Output "starting worker..."
cmd /c Start /B buildslave start Q:
# Wait a bit until the logfile exists
Start-Sleep -s 5
# To keep the container running and produce log outputs: dump the worker
# log to stdout, this is the windows equivalent of `tail -f`
Get-Content -Path "Q:\twistd.log" -Wait