alz/azuredevops/pipelines/bicep/templates/helpers/bicep-installer.yaml (52 lines of code) (raw):
---
parameters:
- name: serviceConnection
type: string
steps:
- pwsh: |
$latestVersion = (Find-Module AZ).Version
Write-Host "Latest AZ PowerShell Version: $latestVersion"
echo "##vso[task.setvariable variable=lastestPowerShellAzVersion;]$latestVersion"
$installedModule = Get-InstalledModule -Name AZ -ErrorAction SilentlyContinue
$installedVersion = $installedModule.Version
Write-Host "Installed AZ PowerShell Version: $installedVersion"
$runPowerShellAzUpgrade = $true
if($installedVersion -ne $latestVersion) {
Write-Host "Az PowerShell is not at the latest version, running upgrade step..."
} else {
Write-Host "Az PowerShell is already at the latest version, skipping upgrade step..."
$runPowerShellAzUpgrade = $false
}
echo "##vso[task.setvariable variable=runPowerShellAzUpgrade;]$runPowerShellAzUpgrade"
displayName: Check Az PowerShell Version
- task: AzurePowerShell@5
displayName: "Upgrade AZ PowerShell"
condition: and(succeeded(), eq(variables['runPowerShellAzUpgrade'], 'true'))
inputs:
azureSubscription: $${{ parameters.serviceConnection }}
pwsh: true
preferredAzurePowerShellVersion: $(lastestPowerShellAzVersion)
ScriptType: "InlineScript"
Inline: |
Write-Host "Attempted Upgrade of AZ PowerShell to $env:lastestPowerShellAzVersion"
- pwsh: |
$TOOLS_PATH = $env:TOOLS_PATH
$installDir = Join-Path -Path $TOOLS_PATH -ChildPath "bicep"
$toolFileName = "bicep"
$toolFilePath = Join-Path -Path $installDir -ChildPath $toolFileName
if(!(Test-Path $installDir)) {
New-Item -ItemType Directory -Path $installDir | Out-String | Write-Verbose
}
$url = "https://github.com/Azure/bicep/releases/latest/download/bicep-linux-x64"
Invoke-WebRequest -Uri $url -OutFile "$toolFilePath" | Out-String | Write-Verbose
$isExecutable = $(test -x $toolFilePath; 0 -eq $LASTEXITCODE)
if(!($isExecutable)) {
chmod +x $toolFilePath
}
$env:PATH = "$($installDir):$env:PATH"
Write-Host "##vso[task.setvariable variable=PATH]$env:PATH"
bicep --version
Write-Host "Installed Latest Bicep Version"
displayName: Install Bicep
env:
TOOLS_PATH: $(Agent.ToolsDirectory)