trigger: branches: include: - master paths: include: - Server variables: runtime: 'win-x64' coreVersion: 'net8.0' nugetSource: 'https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/' stages: - stage: Development displayName: Development pool: name: 'OpenInsight Metrology Viewer' demands: OpenInsight-Metrology-Viewer-Server-Development variables: ASPNETCORE_ENVIRONMENT: 'Development' assemblyTitle: 'OI.Metrology.Server' configuration: 'Debug' userSecretsId: 'b0a3891c-b775-422c-80ee-63a2f385045d' jobs: - job: DebugDotnet steps: - script: | echo Assembly Title: $(AssemblyTitle) echo Build Id: $(Build.BuildId) echo Build Reason: $(Build.Reason) echo Repo Id: $(Build.Repository.Id) echo Repo Name: $(Build.Repository.Name) echo Source Version: $(Build.SourceVersion) echo Configuration: $(Configuration) echo Core Version: $(CoreVersion) echo Nuget Source: $(NugetSource) echo Runtime: $(Runtime) echo UserSecretsId: $(UserSecretsId) displayName: 'Echo Check' - script: | dotnet user-secrets init dotnet user-secrets set BuildNumber $(Build.BuildId) dotnet user-secrets set GitCommit $(Build.SourceVersion) dotnet user-secrets list workingDirectory: Server displayName: 'App - Safe storage of app secrets' - script: dotnet build --configuration $(Configuration) --source $(NugetSource) workingDirectory: Server displayName: 'App - Build' - script: dotnet build --configuration $(Configuration) --source $(NugetSource) workingDirectory: Tests displayName: 'Tests - Build' - script: dotnet test --configuration $(Configuration) workingDirectory: Tests displayName: 'Tests - Test' - script: dotnet publish --configuration $(Configuration) --runtime $(Runtime) --self-contained workingDirectory: Server displayName: 'App - Publish' - script: dotnet publish --configuration $(Configuration) --runtime $(Runtime) -p:PublishAot=true workingDirectory: Server displayName: 'App - AOT Publish' enabled: false - task: CopyFiles@2 displayName: 'Copy Files to: D:\' inputs: Contents: '*' SourceFolder: 'Server\bin\$(Configuration)\$(CoreVersion)\$(Runtime)\publish' TargetFolder: 'D:\$(CoreVersion)\$(Runtime)\$(Build.Repository.Name)\$(Configuration)\$(Build.BuildId)\$(AssemblyTitle)' OverWrite: true - script: dotnet clean --configuration $(Configuration) workingDirectory: Tests displayName: 'Tests - Clean' - script: dotnet clean --configuration $(Configuration) workingDirectory: Server - script: C:/Windows/system32/inetsrv/appcmd.exe stop apppool /apppool.name:$(AssemblyTitle).$(Configuration) workingDirectory: Server displayName: 'Stop Pool' continueOnError: true - script: C:/Windows/system32/inetsrv/appcmd.exe stop site /site.name:$(AssemblyTitle).$(Configuration) workingDirectory: Server displayName: 'Stop Website' continueOnError: true - script: rmdir "D:\web-sites\$(AssemblyTitle).$(Configuration)" workingDirectory: Server displayName: 'Remove MKLink' continueOnError: true - script: mklink /J "D:\web-sites\$(AssemblyTitle).$(Configuration)" "D:\$(CoreVersion)\$(Runtime)\$(Build.Repository.Name)\$(Configuration)\$(Build.BuildId)\$(AssemblyTitle)" workingDirectory: Server displayName: 'Create MKLink' - script: mkdir "D:\web-sites\$(AssemblyTitle).$(Configuration)\$(AssemblyTitle).$(Configuration)" workingDirectory: Server displayName: 'Make Directory' continueOnError: true - script: (robocopy /E /IS /IT /IM "%USERPROFILE%/AppData/Roaming/Microsoft/UserSecrets/$(UserSecretsId)" "D:\$(CoreVersion)\$(Runtime)\$(Build.Repository.Name)\$(Configuration)\$(Build.BuildId)\$(AssemblyTitle)" secrets.json) ^& IF %ERRORLEVEL% LEQ 7 exit 0 workingDirectory: Server displayName: 'Replace User Secrets Id File' - script: (robocopy /E /IS /IT /IM "%USERPROFILE%/AppData/Roaming/Microsoft/UserSecrets/$(UserSecretsId)" "D:\$(CoreVersion)\$(Runtime)\$(Build.Repository.Name)\$(Configuration)\$(Build.BuildId)\$(AssemblyTitle)" web.config) ^& IF %ERRORLEVEL% LEQ 7 exit 0 workingDirectory: Server displayName: 'Replace Web Configuration File' - script: C:/Windows/system32/inetsrv/appcmd.exe start apppool /apppool.name:$(AssemblyTitle).$(Configuration) workingDirectory: Server displayName: 'Start Pool' - script: C:/Windows/system32/inetsrv/appcmd.exe start site /site.name:$(AssemblyTitle).$(Configuration) workingDirectory: Server displayName: 'Start Website' - stage: Release displayName: Release pool: name: 'OpenInsight Metrology Viewer' demands: OpenInsight-Metrology-Viewer-Server variables: ASPNETCORE_ENVIRONMENT: 'Production' assemblyTitle: 'OI.Metrology.Server' configuration: 'Release' jobs: - job: ReleaseDotnet steps: - script: | echo Assembly Title: $(AssemblyTitle) echo Build Id: $(Build.BuildId) echo Build Reason: $(Build.Reason) echo Repo Id: $(Build.Repository.Id) echo Repo Name: $(Build.Repository.Name) echo Source Version: $(Build.SourceVersion) echo Configuration: $(Configuration) echo Core Version: $(CoreVersion) echo Nuget Source: $(NugetSource) echo Runtime: $(Runtime) displayName: 'Echo Check' - script: | dotnet user-secrets init dotnet user-secrets set BuildNumber $(Build.BuildId) dotnet user-secrets set GitCommit $(Build.SourceVersion) dotnet user-secrets list workingDirectory: Server displayName: 'App - Safe storage of app secrets' - script: dotnet build --configuration $(Configuration) --source $(NugetSource) workingDirectory: Server displayName: 'App - Build' - script: dotnet build --configuration $(Configuration) --source $(NugetSource) workingDirectory: Tests displayName: 'Tests - Build' - script: dotnet test --configuration $(Configuration) workingDirectory: Tests displayName: 'Tests - Test' - script: dotnet publish --configuration $(Configuration) --runtime $(Runtime) --self-contained workingDirectory: Server displayName: 'App - Publish' - script: dotnet publish --configuration $(Configuration) --runtime $(Runtime) -p:PublishAot=true workingDirectory: Server displayName: 'App - AOT Publish' enabled: false - task: CopyFiles@2 displayName: 'Copy Files to: D:\' inputs: Contents: '*' SourceFolder: 'Server\bin\$(Configuration)\$(CoreVersion)\$(Runtime)\publish' TargetFolder: 'D:\$(CoreVersion)\$(Runtime)\$(Build.Repository.Name)\$(Configuration)\$(Build.BuildId)\$(AssemblyTitle)' OverWrite: true - script: dotnet clean --configuration $(Configuration) workingDirectory: Tests displayName: 'Tests - Clean' - script: dotnet clean --configuration $(Configuration) workingDirectory: Server displayName: 'App - Clean' - script: 'echo $(Build.SourceVersion)-$(Build.BuildId)>bin_x_x_\$(Configuration)\$(CoreVersion)\win-x64\$(Build.Repository.Name).txt' displayName: 'Force Fail' enabled: false