Pipelines/Sign-Apps.ps1

function Sign-Apps {
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory=$true)]
        [string] $KeyVaultName,
        [Parameter(Mandatory=$true)]
        [string] $CertificateName,
        [Parameter(Mandatory=$true)]
        [string] $ClientId,
        [Parameter(Mandatory=$true)]
        [string] $ClientSecret,
        [Parameter(Mandatory=$true)]
        [string] $TenantId,
        [Parameter(Mandatory=$false)]
        [string] $PathToFiles = './**/*.app',
        [Parameter(Mandatory=$false)]
        [string] $Description = 'Signed with AL-Go for GitHub',
        [Parameter(Mandatory=$false)]
        [string] $DescriptionUrl = $env:BUILD_REPOSITORY_URI
    )

    Write-Host "##[group]Parameters"
    Write-Host "KeyVaultName: $KeyVaultName"
    Write-Host "CertificateName: $CertificateName"
    Write-Host "ClientId: $ClientId"
    Write-Host "TenantId: $TenantId"
    Write-Host "PathToFiles: $PathToFiles"
    Write-Host "Description: $description"
    Write-Host "DescriptionUrl: $descriptionUrl"
    Write-Host "##[endgroup]"

    if (-not $CertificateName) {
        Write-Host "CertificateName is not set. Exiting."
        return
    }

    Install-Module -Name SMART-BcBuildHelper -Force

    cd $env:BUILD_ARTIFACTSTAGINGDIRECTORY  # Todo move out as a parameter

    $Files = Get-ChildItem -Path $PathToFiles -File | Select-Object -ExpandProperty FullName
    if (-not $Files) {
        Write-Host "No files to sign. Exiting."
        return
    }

    Write-Host "##[group]Files to be signed"
    $Files | ForEach-Object {
        Write-Host "- $_"
    }
    Write-Host "##[endgroup]"

    Write-Host "##[group]Signing files" 

    Invoke-SigningTool `
        -KeyVaultName $KeyVaultName `
        -CertificateName $CertificateName `
        -ClientId $ClientId `
        -ClientSecret $ClientSecret `
        -TenantId $TenantId `
        -FilesToSign $PathToFiles `
        -Description $description `
        -DescriptionUrl $descriptionUrl `

    Write-Host "##[endgroup]"
}