diff --git a/README.md b/README.md index 68a5779..fba09c6 100644 --- a/README.md +++ b/README.md @@ -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] @@ -152,6 +152,7 @@ graph LR Controllers --> Program %% Layer connections + Models --> Mappings Validators --> Controllers Mappings --> Services @@ -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. diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 87807d8..cb0d074 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -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)' \ No newline at end of file + # 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