mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-12 21:38:38 +00:00
217 lines
7.8 KiB
YAML
217 lines
7.8 KiB
YAML
# .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
|