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
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ Dependencies flow from data layer through repositories and services to controlle
"clusterBorder": "#ddd"
}
}}%%
graph LR
graph TB
%% Layer 1: Data
Data[Data]

Expand Down Expand Up @@ -152,6 +152,7 @@ graph LR
Controllers --> Program

%% Layer connections
Models --> Mappings
Validators --> Controllers
Mappings --> Services

Expand Down Expand Up @@ -351,4 +352,4 @@ Contributions are welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) for de

## Legal

This is a proof-of-concept project intended for educational and demonstration purposes. All trademarks, registered trademarks, service marks, product names, company names, or logos mentioned are the property of their respective owners and are used for identification purposes only.
This project is provided for educational and demonstration purposes and may be used in production environments at your discretion. All referenced trademarks, service marks, product names, company names, and logos are the property of their respective owners and are used solely for identification or illustrative purposes.
102 changes: 67 additions & 35 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
@@ -1,44 +1,76 @@
# ASP.NET Core (.NET Framework)
# Build and test ASP.NET Core projects targeting the full .NET Framework.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core
# ASP.NET Core 8.0
# Build and test ASP.NET Core projects targeting .NET 8 on Linux.
# https://learn.microsoft.com/en-us/azure/devops/pipelines/ecosystems/dotnet-core

# Trigger pipeline on commits to master and pull requests (equivalent to GitHub Actions 'on: [push, pull_request]')
trigger:
- master
- master
- feature/*

pr:
- master

# Agent pool configuration (equivalent to GitHub Actions 'runs-on: ubuntu-latest')
pool:
vmImage: 'windows-latest'
vmImage: "ubuntu-latest"

# Environment variables (equivalent to GitHub Actions 'env:')
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
buildConfiguration: "Release"
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 # Skip .NET welcome message
DOTNET_NOLOGO: true # Suppress .NET logo in output
NUGET_PACKAGES: $(Pipeline.Workspace)/.nuget/packages

# Pipeline steps (equivalent to GitHub Actions 'steps:')
steps:
- task: NuGetToolInstaller@1

- task: Cache@2
inputs:
key: 'nuget | "$(Agent.OS)" | **/packages.lock.json,!**/bin/**,!**/obj/**'
restoreKeys: |
nuget | "$(Agent.OS)"
path: '$(NUGET_PACKAGES)'
cacheHitVar: 'CACHE_RESTORED'

- task: NuGetCommand@2
condition: ne(variables.CACHE_RESTORED, true)
inputs:
restoreSolution: '$(solution)'

- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/t:Restore /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'

- task: VSTest@2
inputs:
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
# Checkout repository (equivalent to actions/checkout@v6)
# Azure Pipelines does this implicitly, but making it explicit for clarity
- checkout: self
displayName: "Checkout repository"

# Cache NuGet packages (equivalent to actions/setup-dotnet cache feature)
# Uses packages.lock.json hash as cache key for faster restores
- task: Cache@2
displayName: "Cache NuGet packages"
inputs:
key: 'nuget | "$(Agent.OS)" | **/packages.lock.json'
restoreKeys: |
nuget | "$(Agent.OS)"
path: $(NUGET_PACKAGES)

# Install .NET 8 SDK (equivalent to actions/setup-dotnet@v5)
# performMultiLevelLookup: allows finding other SDK versions if needed
- task: UseDotNet@2
displayName: "Set up .NET 8"
inputs:
version: "8.x"
performMultiLevelLookup: true

# Restore NuGet packages (equivalent to 'dotnet restore')
# feedsToUse: 'select' uses feeds from NuGet.config
- task: DotNetCoreCLI@2
displayName: "Restore dependencies"
inputs:
command: "restore"
projects: "**/*.csproj"
feedsToUse: "select"

# Build the solution (equivalent to 'dotnet build')
# --no-restore: skip restore since we just did it (faster build)
- task: DotNetCoreCLI@2
displayName: "Build projects"
inputs:
command: "build"
projects: "**/*.sln"
arguments: "--configuration $(buildConfiguration) --no-restore"

# Run unit tests (equivalent to 'dotnet test')
# --no-build: use already-built assemblies (faster)
# publishTestResults: automatically publish test results to Azure DevOps (built-in feature)
- task: DotNetCoreCLI@2
displayName: "Run tests"
inputs:
command: "test"
projects: "**/*Tests/*.csproj"
arguments: "--configuration $(buildConfiguration) --no-build"
publishTestResults: true