# .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 pr: none resources: repositories: - repository: Plugins type: github endpoint: github.com_SpoinkyNL name: Artemis-RGB/Artemis.Plugins ref: master variables: windowsProject: "**/Artemis.UI.Windows/Artemis.UI.Windows.csproj" linuxProject: "**/Artemis.UI.Linux/Artemis.UI.Linux.csproj" pluginProjects: "**/Artemis.Plugins.*.csproj" BuildId: $(Build.BuildId) BuildNumber: $(Build.BuildNumber) SourceBranch: $(Build.SourceBranch) SourceVersion: $(Build.SourceVersion) jobs: - job: Windows pool: vmImage: "windows-latest" steps: - checkout: self path: s/Artemis - checkout: Plugins path: s/Artemis.Plugins - task: DotNetCoreCLI@2 displayName: "Artemis - Publish" inputs: command: "publish" publishWebProjects: false projects: "$(windowsProject)" arguments: '--configuration Release --runtime win10-x64 --output $(Build.ArtifactStagingDirectory)/windows-build /nowarn:cs1591' zipAfterPublish: false modifyOutputPath: false - task: PowerShell@2 displayName: "Artemis - 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)/windows-build" - task: FileTransform@1 displayName: "Artemis - Populate buildinfo.json" inputs: folderPath: "$(Build.ArtifactStagingDirectory)/windows-build" fileType: "json" targetFiles: "**/buildinfo.json" - task: PowerShell@2 displayName: "Plugins - 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: "Artemis.Plugins" - task: DotNetCoreCLI@2 displayName: "Plugins - Publish" inputs: command: "publish" publishWebProjects: false arguments: "--configuration Release --runtime win10-x64 --output $(Build.ArtifactStagingDirectory)/windows-build/Plugins" projects: "$(pluginProjects)" zipAfterPublish: true - task: PublishPipelineArtifact@1 displayName: "Upload build to Azure Pipelines" inputs: targetPath: "$(Build.ArtifactStagingDirectory)/windows-build" artifact: "Artemis build - Windows" publishLocation: "pipeline" - task: ArchiveFiles@2 displayName: "ZIP binaries" inputs: rootFolderOrFile: "$(Build.ArtifactStagingDirectory)/windows-build" includeRootFolder: false archiveType: "zip" archiveFile: "$(Build.ArtifactStagingDirectory)/archive/artemis-build-windows.zip" replaceExistingArchive: true - task: PowerShell@2 displayName: "Calculate ZIP hash" inputs: targetType: "inline" script: '(Get-FileHash .\artemis-build-windows.zip).Hash | Out-File -FilePath .\hash-windows.txt' workingDirectory: "$(Build.ArtifactStagingDirectory)/archive" - task: FtpUpload@2 displayName: "Upload binaries to FTP" 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 - job: Linux pool: vmImage: "ubuntu-latest" steps: - checkout: self path: s/Artemis - checkout: Plugins path: s/Artemis.Plugins - task: DotNetCoreCLI@2 displayName: "Artemis - Publish" inputs: command: "publish" publishWebProjects: false projects: "$(linuxProject)" arguments: '--configuration Release --runtime linux-x64 --output $(Build.ArtifactStagingDirectory)/linux-build /nowarn:cs1591' zipAfterPublish: false modifyOutputPath: false - task: PowerShell@2 displayName: "Artemis - 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)/linux-build" - task: FileTransform@1 displayName: "Artemis - Populate buildinfo.json" inputs: folderPath: "$(Build.ArtifactStagingDirectory)/linux-build" fileType: "json" targetFiles: "**/buildinfo.json" - task: PowerShell@2 displayName: "Plugins - 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: "Artemis.Plugins" - task: DotNetCoreCLI@2 displayName: "Plugins - Publish" inputs: command: "publish" publishWebProjects: false arguments: "--configuration Release --runtime linux-x64 --output $(Build.ArtifactStagingDirectory)/linux-build/Plugins" projects: "$(pluginProjects)" zipAfterPublish: true - task: PublishPipelineArtifact@1 displayName: "Upload build to Azure Pipelines" inputs: targetPath: "$(Build.ArtifactStagingDirectory)/linux-build" artifact: "Artemis build - Linux" publishLocation: "pipeline" - task: ArchiveFiles@2 displayName: "ZIP binaries" inputs: rootFolderOrFile: "$(Build.ArtifactStagingDirectory)/linux-build" includeRootFolder: false archiveType: "zip" archiveFile: "$(Build.ArtifactStagingDirectory)/archive/artemis-build-linux.zip" replaceExistingArchive: true - task: PowerShell@2 displayName: "Calculate ZIP hash" inputs: targetType: "inline" script: '(Get-FileHash .\artemis-build-linux.zip).Hash | Out-File -FilePath .\hash-linux.txt' workingDirectory: "$(Build.ArtifactStagingDirectory)/archive" - task: FtpUpload@2 displayName: "Upload binaries to FTP" 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