# .NET Desktop # Build and run tests for .NET Desktop or Windows classic desktop solutions. # Add steps that publish symbols, save build artifacts, and more: # https://docs.microsoft.com/azure/devops/pipelines/apps/windows/dot-net trigger: - master resources: repositories: - repository: RGBNET type: github endpoint: github.com_SpoinkyNL name: DarthAffe/RGB.NET ref: Development - repository: Plugins type: github endpoint: github.com_SpoinkyNL name: Artemis-RGB/Artemis.Plugins ref: master pool: vmImage: 'windows-latest' variables: artemisSolution: '**/Artemis.sln' rgbSolution: '**/RGB.NET.sln' BuildId: $(Build.BuildId) BuildNumber: $(Build.BuildNumber) SourceBranch: $(Build.SourceBranch) SourceVersion: $(Build.SourceVersion) steps: - checkout: RGBNET path: s/RGB.NET - checkout: self path: s/Artemis - checkout: Plugins path: s/Artemis.Plugins - task: DotNetCoreCLI@2 displayName: 'Build RGB.NET' inputs: command: 'build' projects: '$(rgbSolution)' arguments: '--configuration Release' - task: DotNetCoreCLI@2 displayName: 'Publish Artemis' inputs: command: 'publish' publishWebProjects: false projects: '$(artemisSolution)' arguments: '--runtime win-x64 --self-contained false --output $(Build.ArtifactStagingDirectory)/build /nowarn:cs1591' zipAfterPublish: false modifyOutputPath: false - task: PowerShell@2 displayName: 'Create buildinfo.json' inputs: targetType: 'inline' script: | $OFS = "`r`n" SET-Content -Path 'buildinfo.json' -Value ('{' + $OFS + ' "BuildId": 0,' + $OFS + ' "BuildNumber": 0.0,' + $OFS + ' "SourceBranch": "",' + $OFS + ' "SourceVersion": ""' + $OFS + '}') workingDirectory: '$(Build.ArtifactStagingDirectory)/build' - task: FileTransform@1 displayName: 'Populate buildinfo.json' inputs: folderPath: '$(Build.ArtifactStagingDirectory)/build' fileType: 'json' targetFiles: '**/buildinfo.json' - task: PowerShell@2 displayName: 'Insert build number into plugin.json' inputs: targetType: 'inline' script: | Get-ChildItem -Recurse -Filter plugin.json | Foreach-Object { $buidNumber = "1.0.1." + $Env:BUILD_BUILDID; $a = Get-Content $_.FullName | ConvertFrom-Json $a.Version = $buidNumber; $a | ConvertTo-Json | Set-Content $_.FullName } workingDirectory: 's/Artemis.Plugins' - task: DotNetCoreCLI@2 displayName: 'Publish Artemis.Plugins' inputs: command: 'publish' publishWebProjects: false arguments: '--runtime win-x64 --self-contained false --output $(Build.ArtifactStagingDirectory)/build/Plugins' projects: '$(pluginProjects)' zipAfterPublish: true - task: PublishPipelineArtifact@1 displayName: 'Upload build to Azure Pipelines' inputs: targetPath: '$(Build.ArtifactStagingDirectory)/build' artifact: 'Artemis build' publishLocation: 'pipeline' - task: ArchiveFiles@2 inputs: rootFolderOrFile: '$(Build.ArtifactStagingDirectory)/build' includeRootFolder: false archiveType: 'zip' archiveFile: '$(Build.ArtifactStagingDirectory)/archive/artemis-build.zip' replaceExistingArchive: true - task: PowerShell@2 inputs: targetType: 'inline' script: '(Get-FileHash .\artemis-build.zip).Hash | Out-File -FilePath .\hash.txt' workingDirectory: '$(Build.ArtifactStagingDirectory)/archive' - task: FtpUpload@2 displayName: "Binaries FTP upload" inputs: credentialsOption: 'inputs' serverUrl: 'ftp://artemis-rgb.com' username: 'devops' password: '$(ftp_password)' rootDirectory: '$(Build.ArtifactStagingDirectory)/archive' filePatterns: '**' remoteDirectory: '/builds.artemis-rgb.com/binaries/$(Build.SourceBranchName)/$(Build.BuildNumber)' clean: false preservePaths: true trustSSL: false