first commit
This commit is contained in:
commit
a8557e9cdb
4 changed files with 111 additions and 0 deletions
80
gitea-runner.ps1
Normal file
80
gitea-runner.ps1
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
# Ensure /data equivalent exists
|
||||
$DataDir = "C:\data"
|
||||
if (-not (Test-Path $DataDir)) {
|
||||
New-Item -ItemType Directory -Path $DataDir | Out-Null
|
||||
}
|
||||
|
||||
Set-Location $DataDir
|
||||
|
||||
# State file
|
||||
$RUNNER_STATE_FILE = $env:RUNNER_STATE_FILE
|
||||
if (-not $RUNNER_STATE_FILE) { $RUNNER_STATE_FILE = ".runner" }
|
||||
|
||||
# Config argument
|
||||
$CONFIG_ARG = ""
|
||||
if ($env:CONFIG_FILE) {
|
||||
$CONFIG_ARG = "--config $($env:CONFIG_FILE)"
|
||||
}
|
||||
|
||||
# Extra arguments
|
||||
$EXTRA_ARGS = ""
|
||||
if ($env:GITEA_RUNNER_LABELS) {
|
||||
$EXTRA_ARGS += " --labels $($env:GITEA_RUNNER_LABELS)"
|
||||
}
|
||||
if ($env:GITEA_RUNNER_EPHEMERAL) {
|
||||
$EXTRA_ARGS += " --ephemeral"
|
||||
}
|
||||
|
||||
# Run arguments
|
||||
$RUN_ARGS = ""
|
||||
if ($env:GITEA_RUNNER_ONCE) {
|
||||
$RUN_ARGS = "--once"
|
||||
}
|
||||
|
||||
# Read token from file if not set
|
||||
if (-not $env:GITEA_RUNNER_REGISTRATION_TOKEN -and (Test-Path $env:GITEA_RUNNER_REGISTRATION_TOKEN_FILE)) {
|
||||
$env:GITEA_RUNNER_REGISTRATION_TOKEN = Get-Content $env:GITEA_RUNNER_REGISTRATION_TOKEN_FILE -Raw
|
||||
}
|
||||
|
||||
# Check state file
|
||||
if (-not (Test-Path $RUNNER_STATE_FILE -PathType Leaf)) {
|
||||
Write-Host "$RUNNER_STATE_FILE is missing or not a regular file"
|
||||
}
|
||||
|
||||
# Initialize variables for registration loop
|
||||
$try = 0
|
||||
$success = $false
|
||||
|
||||
if (-not (Get-Item $RUNNER_STATE_FILE).Length) {
|
||||
$maxAttempts = if ($env:GITEA_MAX_REG_ATTEMPTS) { [int]$env:GITEA_MAX_REG_ATTEMPTS } else { 10 }
|
||||
|
||||
while (-not $success -and $try -lt $maxAttempts) {
|
||||
$try++
|
||||
Write-Host "Attempt #$try to register runner..."
|
||||
|
||||
# Build the full command as a string
|
||||
$regCommand = "C:\act_runner.exe register --instance `"$env:GITEA_INSTANCE_URL`" --token `"$env:GITEA_RUNNER_REGISTRATION_TOKEN`" --name `"$($env:GITEA_RUNNER_NAME -or $env:COMPUTERNAME)`" $CONFIG_ARG $EXTRA_ARGS --no-interactive"
|
||||
|
||||
# Execute the command
|
||||
$regOutput = Invoke-Expression "$regCommand 2>&1"
|
||||
|
||||
# Log output
|
||||
$regOutput | Tee-Object -FilePath "C:\temp\reg.log"
|
||||
|
||||
if ($regOutput -match "Runner registered successfully") {
|
||||
Write-Host "SUCCESS"
|
||||
$success = $true
|
||||
} else {
|
||||
Write-Host "Waiting to retry ..."
|
||||
Start-Sleep -Seconds 5
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Unset sensitive env vars
|
||||
Remove-Item Env:\GITEA_RUNNER_REGISTRATION_TOKEN -ErrorAction SilentlyContinue
|
||||
Remove-Item Env:\GITEA_RUNNER_REGISTRATION_TOKEN_FILE -ErrorAction SilentlyContinue
|
||||
|
||||
# Start daemon
|
||||
$daemonCommand = "C:\act_runner.exe daemon $CONFIG_ARG $RUN_ARGS"
|
||||
Invoke-Expression "$daemonCommand"
|
||||
Loading…
Add table
Add a link
Reference in a new issue