Corrected paths in build.sh and build.ps1 to reference correct directories. Added "nuke" project to Elsa.sln for organizing build scripts under solution items.
75 lines
3.2 KiB
PowerShell
75 lines
3.2 KiB
PowerShell
[CmdletBinding()]
|
|
Param(
|
|
[Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]
|
|
[string[]]$BuildArguments
|
|
)
|
|
|
|
Write-Output "PowerShell $($PSVersionTable.PSEdition) version $($PSVersionTable.PSVersion)"
|
|
|
|
Set-StrictMode -Version 2.0; $ErrorActionPreference = "Stop"; $ConfirmPreference = "None"; trap { Write-Error $_ -ErrorAction Continue; exit 1 }
|
|
$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent "..\.."
|
|
|
|
###########################################################################
|
|
# CONFIGURATION
|
|
###########################################################################
|
|
|
|
$BuildProjectFile = "$PSScriptRoot\build\_build.csproj"
|
|
$TempDirectory = "$PSScriptRoot\\.nuke\temp"
|
|
|
|
$DotNetGlobalFile = "$PSScriptRoot\\global.json"
|
|
$DotNetInstallUrl = "https://dot.net/v1/dotnet-install.ps1"
|
|
$DotNetChannel = "STS"
|
|
|
|
$env:DOTNET_CLI_TELEMETRY_OPTOUT = 1
|
|
$env:DOTNET_NOLOGO = 1
|
|
|
|
###########################################################################
|
|
# EXECUTION
|
|
###########################################################################
|
|
|
|
function ExecSafe([scriptblock] $cmd) {
|
|
& $cmd
|
|
if ($LASTEXITCODE) { exit $LASTEXITCODE }
|
|
}
|
|
|
|
# If dotnet CLI is installed globally and it matches requested version, use for execution
|
|
if ($null -ne (Get-Command "dotnet" -ErrorAction SilentlyContinue) -and `
|
|
$(dotnet --version) -and $LASTEXITCODE -eq 0) {
|
|
$env:DOTNET_EXE = (Get-Command "dotnet").Path
|
|
}
|
|
else {
|
|
# Download install script
|
|
$DotNetInstallFile = "$TempDirectory\dotnet-install.ps1"
|
|
New-Item -ItemType Directory -Path $TempDirectory -Force | Out-Null
|
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
|
(New-Object System.Net.WebClient).DownloadFile($DotNetInstallUrl, $DotNetInstallFile)
|
|
|
|
# If global.json exists, load expected version
|
|
if (Test-Path $DotNetGlobalFile) {
|
|
$DotNetGlobal = $(Get-Content $DotNetGlobalFile | Out-String | ConvertFrom-Json)
|
|
if ($DotNetGlobal.PSObject.Properties["sdk"] -and $DotNetGlobal.sdk.PSObject.Properties["version"]) {
|
|
$DotNetVersion = $DotNetGlobal.sdk.version
|
|
}
|
|
}
|
|
|
|
# Install by channel or version
|
|
$DotNetDirectory = "$TempDirectory\dotnet-win"
|
|
if (!(Test-Path variable:DotNetVersion)) {
|
|
ExecSafe { & powershell $DotNetInstallFile -InstallDir $DotNetDirectory -Channel $DotNetChannel -NoPath }
|
|
} else {
|
|
ExecSafe { & powershell $DotNetInstallFile -InstallDir $DotNetDirectory -Version $DotNetVersion -NoPath }
|
|
}
|
|
$env:DOTNET_EXE = "$DotNetDirectory\dotnet.exe"
|
|
$env:PATH = "$DotNetDirectory;$env:PATH"
|
|
}
|
|
|
|
Write-Output "Microsoft (R) .NET SDK version $(& $env:DOTNET_EXE --version)"
|
|
|
|
if (Test-Path env:NUKE_ENTERPRISE_TOKEN) {
|
|
& $env:DOTNET_EXE nuget remove source "nuke-enterprise" > $null
|
|
& $env:DOTNET_EXE nuget add source "https://f.feedz.io/nuke/enterprise/nuget" --name "nuke-enterprise" --username "PAT" --password $env:NUKE_ENTERPRISE_TOKEN > $null
|
|
}
|
|
|
|
ExecSafe { & $env:DOTNET_EXE build $BuildProjectFile /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet }
|
|
ExecSafe { & $env:DOTNET_EXE run --project $BuildProjectFile --no-build -- $BuildArguments }
|