Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"rollForward": false
},
"fallout.globaltool": {
"version": "10.3.49",
"version": "10.4.0",
"commands": [
"fallout"
],
Expand Down
15 changes: 13 additions & 2 deletions .fallout/build.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -102,20 +102,31 @@
"Verbosity": {
"description": "Logging verbosity during build execution. Default is 'Normal'",
"$ref": "#/definitions/Verbosity"
},
"BuildProjectFile": {
"type": [
"null",
"string"
],
"description": "Path to the build project (.csproj) relative to the repository root. Defaults to 'build/_build.csproj' when unset. Read by the Fallout global tool's in-tool runner."
}
}
}
},
"allOf": [
{
"properties": {
"BuildArchitecture": {
"type": "string",
"description": "Build architecture"
},
"Configuration": {
"type": "string",
"description": "Configuration to build - Default is 'Debug' (local) or 'Release' (server)",
"enum": [
"Debug",
"Release"
]
],
"description": "Configuration to build - Default is 'Debug' (local) or 'Release' (server)"
},
"CoverallsJobID": {
"type": "string",
Expand Down
3 changes: 2 additions & 1 deletion .fallout/parameters.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"$schema": "build.schema.json",
"Solution": "DemoEngine.slnx"
"Solution": "DemoEngine.slnx",
"BuildProjectFile": "build/Build.csproj"
}
70 changes: 70 additions & 0 deletions .github/workflows/CI-arm.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# ------------------------------------------------------------------------------
# <auto-generated>
#
# This code was generated.
#
# - To turn off auto-generation set:
#
# [GitHubActions (AutoGenerate = false)]
#
# - To trigger manual generation invoke:
#
# fallout --generate-configuration GitHubActions_CI-arm --host GitHubActions
#
# </auto-generated>
# ------------------------------------------------------------------------------

name: CI-arm

on: [push]

env:
DEMO_ENGINE_BUILD_ARCH: arm64

jobs:
windows-latest:
name: windows-latest
runs-on: [windows-11-arm]
steps:
- uses: actions/checkout@v7
with:
lfs: true
fetch-depth: 0
- name: 'Cache: .fallout/temp, ~/.nuget/packages'
uses: actions/cache@v6
with:
path: |
.fallout/temp
~/.nuget/packages
key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj', '**/Directory.Packages.props') }}
- name: 'Setup: .NET SDK'
uses: actions/setup-dotnet@v6
with:
global-json-file: global.json
- name: 'Restore: dotnet tools'
run: dotnet tool restore
- name: 'Run: Clean, Compile, Test, Publish'
run: dotnet fallout Clean Compile Test Publish
env:
CoverallsToken: ${{ secrets.COVERALLS_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: 'Publish: coverage.zip'
uses: actions/upload-artifact@v7
with:
name: coverage.zip
path: artifacts/coverage.zip
- name: 'Publish: Demo.Engine.zip'
uses: actions/upload-artifact@v7
with:
name: Demo.Engine.zip
path: artifacts/Demo.Engine.zip
- name: 'Publish: Demo.Engine.win-x64.zip'
uses: actions/upload-artifact@v7
with:
name: Demo.Engine.win-x64.zip
path: artifacts/Demo.Engine.win-x64.zip
- name: 'Publish: Demo.Engine.win-arm64.zip'
uses: actions/upload-artifact@v7
with:
name: Demo.Engine.win-arm64.zip
path: artifacts/Demo.Engine.win-arm64.zip
23 changes: 16 additions & 7 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,44 +18,53 @@ name: CI

on: [push]

env:
DEMO_ENGINE_BUILD_ARCH: x64

jobs:
windows-latest:
name: windows-latest
runs-on: windows-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
with:
lfs: true
fetch-depth: 0
- name: 'Cache: .fallout/temp, ~/.nuget/packages'
uses: actions/cache@v4
uses: actions/cache@v6
with:
path: |
.fallout/temp
~/.nuget/packages
key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj', '**/Directory.Packages.props') }}
- name: 'Setup: .NET SDK'
uses: actions/setup-dotnet@v6
with:
global-json-file: global.json
- name: 'Restore: dotnet tools'
run: dotnet tool restore
- name: 'Run: Clean, Compile, Test, Publish'
run: ./build.cmd Clean Compile Test Publish
run: dotnet fallout Clean Compile Test Publish
env:
CoverallsToken: ${{ secrets.COVERALLS_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: 'Publish: coverage.zip'
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v7
with:
name: coverage.zip
path: artifacts/coverage.zip
- name: 'Publish: Demo.Engine.zip'
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v7
with:
name: Demo.Engine.zip
path: artifacts/Demo.Engine.zip
- name: 'Publish: Demo.Engine.win-x64.zip'
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v7
with:
name: Demo.Engine.win-x64.zip
path: artifacts/Demo.Engine.win-x64.zip
- name: 'Publish: Demo.Engine.win-arm64.zip'
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v7
with:
name: Demo.Engine.win-arm64.zip
path: artifacts/Demo.Engine.win-arm64.zip
27 changes: 13 additions & 14 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,32 @@
<PackageVersion Include="Autofac.Extensions.DependencyInjection" Version="11.0.2" />
<PackageVersion Include="BenchmarkDotNet" Version="0.15.8" />
<PackageVersion Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.15.8" />
<PackageVersion Include="Fallout.Common" Version="10.3.49" />
<PackageVersion Include="Fallout.Common" Version="10.4.0" />
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="5.6.0" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="5.6.0" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Analyzer.Testing" Version="1.1.3" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="5.0.0" />
<PackageVersion Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="10.0.103" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="10.0.10" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="10.0.11" />
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="10.0.10" />
<PackageVersion Include="Microsoft.Extensions.ObjectPool" Version="10.0.10" />
<PackageVersion Include="Microsoft.Testing.Extensions.CodeCoverage" Version="18.9.0" />
<PackageVersion Include="Microsoft.Extensions.ObjectPool" Version="10.0.11" />
<PackageVersion Include="Microsoft.Testing.Extensions.CodeCoverage" Version="18.10.0" />
<PackageVersion Include="Serilog" Version="4.4.0" />
<PackageVersion Include="Serilog.Extensions.Logging" Version="10.0.0" />
<PackageVersion Include="Serilog.Sinks.Async" Version="2.1.0" />
<PackageVersion Include="Serilog.Sinks.Console" Version="6.1.1" />
<PackageVersion Include="Serilog.Sinks.Debug" Version="3.0.0" />
<PackageVersion Include="MediatR" Version="[12.5.0, 13)" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="10.0.10" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.10" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="10.0.11" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.11" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="10.0.10" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="10.0.10" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.10" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="10.0.11" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.11" />
<PackageVersion Include="Nerdbank.GitVersioning" Version="3.10.91" />
<PackageVersion Include="System.Text.Json" Version="9.0.9" />
<PackageVersion Include="TUnit" Version="1.61.15" />
<PackageVersion Include="TUnit" Version="1.65.0" />
<PackageVersion Include="Verify.SourceGenerators" Version="2.5.0" />
<PackageVersion Include="Verify.TUnit" Version="31.26.0" />
<PackageVersion Include="Verify.TUnit" Version="31.28.0" />
<PackageVersion Include="Vortice.Dxc" Version="3.8.3" />
<PackageVersion Include="Vortice.Mathematics" Version="2.1.1" />
<PackageVersion Include="Vortice.D3DCompiler" Version="3.8.3" />
Expand All @@ -44,11 +44,10 @@
<PackageVersion Include="Shouldly" Version="4.3.0" />
<PackageVersion Include="coverlet.collector" Version="6.0.4" />
<PackageVersion Include="Nuke.Common" Version="10.1.0" />
<PackageVersion Include="ReportGenerator" Version="5.5.10" />
<PackageVersion Include="ReportGenerator" Version="5.5.11" />
<PackageVersion Include="coveralls.net" Version="4.0.1" />
</ItemGroup>
<ItemGroup Label="Transitive packages">
<PackageVersion Include="NuGet.Packaging" Version="[7.3.1,)" />
<PackageVersion Include="System.Security.Cryptography.Xml" Version="[10.0.6,)" />
<PackageVersion Include="NuGet.Packaging" Version="[7.9.0,)" />
</ItemGroup>
</Project>
</Project>
25 changes: 8 additions & 17 deletions build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,9 @@ $PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
# CONFIGURATION
###########################################################################

$BuildProjectFile = "$PSScriptRoot\build\Build.csproj"
$TempDirectory = "$PSScriptRoot\\.fallout\temp"
$TempDirectory = Join-Path $PSScriptRoot '/.fallout/temp'

$DotNetGlobalFile = "$PSScriptRoot\\global.json"
$DotNetGlobalFile = Join-Path $PSScriptRoot '/global.json'
$DotNetInstallUrl = "https://dot.net/v1/dotnet-install.ps1"
$DotNetChannel = "STS"

Expand All @@ -32,43 +31,35 @@ function ExecSafe([scriptblock] $cmd) {
if ($LASTEXITCODE) { exit $LASTEXITCODE }
}

# If dotnet CLI is installed globally and it matches requested version, use for execution
# If dotnet CLI is installed globally, use it; otherwise provision a local copy under .fallout\temp.
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"
$DotNetInstallFile = Join-Path $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"
$DotNetDirectory = Join-Path $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:DOTNET_EXE = Join-Path $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 }
ExecSafe { & $env:DOTNET_EXE tool restore }
ExecSafe { & $env:DOTNET_EXE fallout $BuildArguments }
15 changes: 3 additions & 12 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
# CONFIGURATION
###########################################################################

BUILD_PROJECT_FILE="$SCRIPT_DIR/build/Build.csproj"
TEMP_DIRECTORY="$SCRIPT_DIR//.fallout/temp"

DOTNET_GLOBAL_FILE="$SCRIPT_DIR//global.json"
Expand All @@ -27,25 +26,22 @@ function FirstJsonValue {
perl -nle 'print $1 if m{"'"$1"'": "([^"]+)",?}' <<< "${@:2}"
}

# If dotnet CLI is installed globally and it matches requested version, use for execution
# If dotnet CLI is installed globally, use it; otherwise provision a local copy under .fallout/temp.
if [ -x "$(command -v dotnet)" ] && dotnet --version &>/dev/null; then
export DOTNET_EXE="$(command -v dotnet)"
else
# Download install script
DOTNET_INSTALL_FILE="$TEMP_DIRECTORY/dotnet-install.sh"
mkdir -p "$TEMP_DIRECTORY"
curl -Lsfo "$DOTNET_INSTALL_FILE" "$DOTNET_INSTALL_URL"
chmod +x "$DOTNET_INSTALL_FILE"

# If global.json exists, load expected version
if [[ -f "$DOTNET_GLOBAL_FILE" ]]; then
DOTNET_VERSION=$(FirstJsonValue "version" "$(cat "$DOTNET_GLOBAL_FILE")")
if [[ "$DOTNET_VERSION" == "" ]]; then
unset DOTNET_VERSION
fi
fi

# Install by channel or version
DOTNET_DIRECTORY="$TEMP_DIRECTORY/dotnet-unix"
if [[ -z ${DOTNET_VERSION+x} ]]; then
"$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --channel "$DOTNET_CHANNEL" --no-path
Expand All @@ -58,10 +54,5 @@ fi

echo "Microsoft (R) .NET SDK version $("$DOTNET_EXE" --version)"

if [[ ! -z ${NUKE_ENTERPRISE_TOKEN+x} && "$NUKE_ENTERPRISE_TOKEN" != "" ]]; then
"$DOTNET_EXE" nuget remove source "nuke-enterprise" &>/dev/null || true
"$DOTNET_EXE" nuget add source "https://f.feedz.io/nuke/enterprise/nuget" --name "nuke-enterprise" --username "PAT" --password "$NUKE_ENTERPRISE_TOKEN" --store-password-in-clear-text &>/dev/null || true
fi

"$DOTNET_EXE" build "$BUILD_PROJECT_FILE" /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet
"$DOTNET_EXE" run --project "$BUILD_PROJECT_FILE" --no-build -- "$@"
"$DOTNET_EXE" tool restore
exec "$DOTNET_EXE" fallout "$@"
Loading