diff --git a/azure-pipelines-pr.yml b/azure-pipelines-pr.yml new file mode 100644 index 000000000..a63766c6c --- /dev/null +++ b/azure-pipelines-pr.yml @@ -0,0 +1,112 @@ +# .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: none +pr: +- master +- Development + +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' + pluginProjects: '**/Artemis.Plugins.*.csproj' + 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: 'RGB.NET - Build' + inputs: + command: 'build' + projects: '$(rgbSolution)' + arguments: '--configuration Release' + +- task: DotNetCoreCLI@2 + displayName: 'Artemis - Publish' + 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: '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)/build' + +- task: FileTransform@1 + displayName: 'Artemis - Populate buildinfo.json' + inputs: + folderPath: '$(Build.ArtifactStagingDirectory)/build' + fileType: 'json' + targetFiles: '**/buildinfo.json' + +- task: CopyFiles@2 + displayName: 'Plugins - Prepare Artemis binaries' + inputs: + SourceFolder: '$(Build.ArtifactStagingDirectory)/build' + Contents: '**' + TargetFolder: 'Artemis/src/Artemis.UI/bin/x64/Debug/net5.0-windows' + +- 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: '--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' \ No newline at end of file