Created
October 10, 2021 20:42
-
-
Save Khatami/0e8c5c569b67e3c82c8f644749c73895 to your computer and use it in GitHub Desktop.
How to install SonarScanner on self-hosted tfs agent (.Net framework)
This file contains hidden or 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
| FROM mcr.microsoft.com/dotnet/framework/sdk:4.7.2-windowsservercore-ltsc2019 | |
| WORKDIR /azp | |
| RUN powershell -Command Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) | |
| RUN powershell -Command choco install sonarscanner-msbuild-net46 -y | |
| COPY start.ps1 . | |
| CMD powershell .\start.ps1 |
This file contains hidden or 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
| if (-not (Test-Path Env:AZP_URL)) { | |
| Write-Error "error: missing AZP_URL environment variable" | |
| exit 1 | |
| } | |
| if (-not (Test-Path Env:AZP_TOKEN_FILE)) { | |
| if (-not (Test-Path Env:AZP_TOKEN)) { | |
| Write-Error "error: missing AZP_TOKEN environment variable" | |
| exit 1 | |
| } | |
| $Env:AZP_TOKEN_FILE = "\azp\.token" | |
| $Env:AZP_TOKEN | Out-File -FilePath $Env:AZP_TOKEN_FILE | |
| } | |
| Remove-Item Env:AZP_TOKEN | |
| if ((Test-Path Env:AZP_WORK) -and -not (Test-Path $Env:AZP_WORK)) { | |
| New-Item $Env:AZP_WORK -ItemType directory | Out-Null | |
| } | |
| New-Item "\azp\agent" -ItemType directory | Out-Null | |
| # Let the agent ignore the token env variables | |
| $Env:VSO_AGENT_IGNORE = "AZP_TOKEN,AZP_TOKEN_FILE" | |
| Set-Location agent | |
| Write-Host "1. Determining matching Azure Pipelines agent..." -ForegroundColor Cyan | |
| $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$(Get-Content ${Env:AZP_TOKEN_FILE})")) | |
| $package = Invoke-RestMethod -Headers @{Authorization=("Basic $base64AuthInfo")} "$(${Env:AZP_URL})/_apis/distributedtask/packages/agent?platform=win-x64&`$top=1" | |
| $packageUrl = $package[0].Value.downloadUrl | |
| Write-Host $packageUrl | |
| Write-Host "2. Downloading and installing Azure Pipelines agent..." -ForegroundColor Cyan | |
| $wc = New-Object System.Net.WebClient | |
| $wc.DownloadFile($packageUrl, "$(Get-Location)\agent.zip") | |
| Expand-Archive -Path "agent.zip" -DestinationPath "\azp\agent" | |
| try | |
| { | |
| Write-Host "3. Configuring Azure Pipelines agent..." -ForegroundColor Cyan | |
| .\config.cmd --unattended ` | |
| --agent "$(if (Test-Path Env:AZP_AGENT_NAME) { ${Env:AZP_AGENT_NAME} } else { ${Env:computername} })" ` | |
| --url "$(${Env:AZP_URL})" ` | |
| --auth PAT ` | |
| --token "$(Get-Content ${Env:AZP_TOKEN_FILE})" ` | |
| --pool "$(if (Test-Path Env:AZP_POOL) { ${Env:AZP_POOL} } else { 'Default' })" ` | |
| --work "$(if (Test-Path Env:AZP_WORK) { ${Env:AZP_WORK} } else { '_work' })" ` | |
| --replace | |
| Write-Host "4. Running Azure Pipelines agent..." -ForegroundColor Cyan | |
| .\run.cmd | |
| } | |
| finally | |
| { | |
| Write-Host "Cleanup. Removing Azure Pipelines agent..." -ForegroundColor Cyan | |
| .\config.cmd remove --unattended ` | |
| --auth PAT ` | |
| --token "$(Get-Content ${Env:AZP_TOKEN_FILE})" | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment