[WIP] Nonadmin on windows #161
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Windows Nightly Run | |
on: [pull_request] | |
jobs: | |
start-ec2-instance: | |
uses: ./.github/workflows/provision-runner.yml | |
with: | |
ec2-image-id: ami-01fa2492704e48175 | |
ec2-instance-type: t2.micro | |
security-group-id: sg-0a3e6b53e86d0e69d | |
subnet-id: subnet-06113672589e7e836 | |
ec2-os-type: windows | |
secrets: | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
github-token: ${{ secrets.GH_RUNNER_API_TOKEN }} | |
nonadmin-password: ${{ secrets.NONADMIN_PASSWORD }} | |
run-tests: | |
needs: start-ec2-instance | |
runs-on: ${{ needs.start-ec2-instance.outputs.instance_label }} | |
steps: | |
# - name: Write Test Script | |
# shell: powershell | |
# run: | | |
# # Ensure the directory exists | |
# $runnerDir = "C:\Users\nonadmin\Documents\actions-runner\work" | |
# if (-not (Test-Path -Path $runnerDir)) { | |
# New-Item -Path $runnerDir -ItemType Directory -Force | |
# } | |
# | |
# # Create the test script | |
# $scriptContent = @" | |
# # Redirect output directly in the script | |
# code --version >> "C:\Users\nonadmin\Documents\actions-runner\work\run-tests-output.log" 2>> "C:\Users\nonadmin\Documents\actions-runner\work\run-tests-error.log" | |
# node --version >> "C:\Users\nonadmin\Documents\actions-runner\work\run-tests-output.log" 2>> "C:\Users\nonadmin\Documents\actions-runner\work\run-tests-error.log" | |
# "@ | |
# | |
# $scriptPath = "$runnerDir\run-tests.ps1" | |
# $scriptContent | Out-File -FilePath $scriptPath -Encoding utf8 -Force | |
- name: Run Test Script with PsExec | |
shell: powershell | |
run: | | |
# Define paths | |
$psExecUrl = "https://download.sysinternals.com/files/PSTools.zip" | |
$toolsDir = "C:\tools" | |
$psExecPath = "$toolsDir\PsExec64.exe" | |
$logDir = "C:\Users\nonadmin\Documents\actions-runner\work" | |
$logPathOut = "$logDir\run-tests-output.log" | |
$logPathErr = "$logDir\run-tests-error.log" | |
# Step 1: Install PsExec | |
Write-Output "Downloading and installing PsExec..." | |
if (Test-Path -Path $toolsDir) { Remove-Item -Recurse -Force $toolsDir } | |
New-Item -Path $toolsDir -ItemType Directory -Force | |
Invoke-WebRequest -Uri $psExecUrl -OutFile "$toolsDir\PSTools.zip" | |
Expand-Archive -Path "$toolsDir\PSTools.zip" -DestinationPath $toolsDir -Force | |
Write-Output "PsExec installed successfully." | |
# Step 2: Ensure the log directory exists | |
Write-Output "Ensuring log directory exists: $logDir" | |
if (-Not (Test-Path -Path $logDir)) { | |
New-Item -Path $logDir -ItemType Directory -Force | |
} | |
# Step 3: Execute the command using PsExec | |
Write-Output "Executing PsExec as nonadmin to run 'code --version'..." | |
Write-Output "PsExec Path: $psExecPath" | |
# Write-Output "Executing command: & $psExecPath -accepteula -nobanner -u nonadmin -p 'pass123!' powershell.exe -Command 'hostname > $logPathOut 2> $logPathErr'" | |
try { | |
& $psExecPath -accepteula -nobanner -u nonadmin -p "pass123!" powershell.exe -Command "hostname" | |
} catch { | |
Write-Output "Error running PsExec: $_" | |
} | |
#& $psExecPath -accepteula -nobanner -u nonadmin -p "pass123!" powershell.exe ` | |
# -Command "hostname > '$logPathOut' 2> '$logPathErr'" | |
# Step 4: Check if output log file exists | |
if (-Not (Test-Path -Path $logDir)) { | |
Write-Output "Log directory does not exist, creating: $logDir" | |
New-Item -Path $logDir -ItemType Directory -Force | |
} else { | |
Write-Output "Log directory exists: $logDir" | |
} | |
# Step 5: Output log files to GitHub Actions | |
Write-Output "--- Run Output ---" | |
Get-Content -Path $logPathOut | |
Write-Output "--- Run Error ---" | |
Get-Content -Path $logPathErr | |
# stop-ec2-instance: | |
# needs: [ start-ec2-instance, run-tests ] | |
# if: always() | |
# uses: ./.github/workflows/remove-runner.yml | |
# with: | |
# ec2-instance-id: ${{ needs.start-ec2-instance.outputs.ec2-instance-id }} | |
# ec2-runner-label: ${{ needs.start-ec2-instance.outputs.instance_label }} | |
# secrets: | |
# aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
# aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
# github-token: ${{ secrets.GH_RUNNER_API_TOKEN }} | |