windows-x64-release-dev.yml 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. # .NET Desktop
  2. # Build and run tests for .NET Desktop or Windows classic desktop solutions.
  3. # Add steps that publish symbols, save build artifacts, and more:
  4. # https://docs.microsoft.com/azure/devops/pipelines/apps/windows/dot-net
  5. trigger:
  6. - development
  7. pr: none
  8. pool:
  9. vmImage: 'windows-latest'
  10. variables:
  11. - group: Release Secrets
  12. - name: solution
  13. value: '**/*.sln'
  14. - name: archNumber
  15. value: '64'
  16. - name: architecture
  17. value: 'x$(archNumber)'
  18. - name: buildPlatform
  19. value: 'win-$(architecture)'
  20. - name: buildConfiguration
  21. value: 'DevRelease'
  22. - name: wasiVer
  23. value: 'wasi-sdk-24.0-$(wasi-arch)-windows'
  24. - name: wasiUrl
  25. value: 'https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-24/$(wasiVer).tar.gz'
  26. steps:
  27. - task: UseDotNet@2
  28. inputs:
  29. packageType: 'sdk'
  30. version: '8.x'
  31. - task: CmdLine@2
  32. displayName: 'Download WASI SDK'
  33. inputs:
  34. script: |
  35. curl -L -o $(wasiVer).tar.gz $(wasiUrl)
  36. - task: CmdLine@2
  37. displayName: 'Unpack WASI SDK'
  38. inputs:
  39. script: |
  40. tar -xzf $(wasiVer).tar.gz
  41. echo "Contents of directory after extraction:"
  42. dir $(wasiVer)
  43. - task: PowerShell@2
  44. displayName: 'Set Environment Path for WASI SDK'
  45. inputs:
  46. targetType: 'inline'
  47. script: |
  48. $env:WASI_SDK_PATH = "$(Get-Location)\$(wasiVer)"
  49. Write-Host "##vso[task.setvariable variable=WASI_SDK_PATH]$env:WASI_SDK_PATH"
  50. - task: PowerShell@2
  51. displayName: 'Verify Environment Path'
  52. inputs:
  53. targetType: 'inline'
  54. script: |
  55. Write-Host "Environment path set to: $env:WASI_SDK_PATH"
  56. - task: NuGetToolInstaller@1
  57. - task: DotNetCoreCLI@2
  58. displayName: Install wasi-wasm
  59. inputs:
  60. command: 'custom'
  61. custom: 'workload'
  62. arguments: 'install wasi-experimental'
  63. - task: DotNetCoreCLI@2
  64. displayName: Install wasm-tools
  65. inputs:
  66. command: 'custom'
  67. custom: 'workload'
  68. arguments: 'install wasm-tools'
  69. - task: NuGetCommand@2
  70. displayName: 'Restore solution'
  71. inputs:
  72. restoreSolution: '$(solution)'
  73. - task: DotNetCoreCLI@2
  74. displayName: "Build PixiEditor Solution"
  75. inputs:
  76. command: 'build'
  77. projects: 'src/PixiEditor'
  78. arguments: '-r "$(buildPlatform)" -c $(buildConfiguration)'
  79. - task: DotNetCoreCLI@2
  80. displayName: "Build release PixiEditor.UpdateInstaller"
  81. inputs:
  82. command: 'publish'
  83. publishWebProjects: false
  84. projects: '**/PixiEditor.UpdateInstaller.Desktop.csproj'
  85. arguments: '-o "UpdateInstaller" -r "$(buildPlatform)" --self-contained=false -p:PublishSingleFile=true -c $(buildConfiguration)'
  86. zipAfterPublish: false
  87. - task: PowerShell@2
  88. displayName: "Set tag version"
  89. inputs:
  90. filePath: 'assemblyVerReader.ps1'
  91. - task: PowerShell@2
  92. displayName: Publish PixiEditor
  93. inputs:
  94. filePath: 'src/PixiEditor.Builder/build.ps1'
  95. arguments: '--project-path "$(System.DefaultWorkingDirectory)\src\PixiEditor.Desktop" --build-configuration "$(buildConfiguration)" --runtime "$(buildPlatform)" -o "$(System.DefaultWorkingDirectory)\Builds\PixiEditor-$(architecture)-light\PixiEditor" --crash-report-webhook-url "$(crash-webhook-url)"'
  96. workingDirectory: 'src/PixiEditor.Builder'
  97. - task: ArchiveFiles@2
  98. inputs:
  99. rootFolderOrFile: 'Builds\PixiEditor-$(architecture)-light'
  100. includeRootFolder: false
  101. archiveType: 'zip'
  102. archiveFile: 'PixiEditor.$(TagVersion).$(architecture).zip'
  103. replaceExistingArchive: true
  104. - task: PublishPipelineArtifact@1
  105. displayName: "Publish zip artifact"
  106. inputs:
  107. targetPath: '$(System.DefaultWorkingDirectory)\PixiEditor.$(TagVersion).$(architecture).zip'
  108. artifact: 'PixiEditor.$(TagVersion).$(architecture).zip'
  109. publishLocation: 'pipeline'
  110. - task: CopyFiles@2
  111. displayName: "Copy updater to PixiEditor target dir"
  112. inputs:
  113. SourceFolder: 'UpdateInstaller'
  114. Contents: '**'
  115. TargetFolder: 'Builds/PixiEditor-$(architecture)-light/PixiEditor'
  116. flattenFolders: true
  117. - task: PowerShell@2
  118. displayName: "Compile installer"
  119. inputs:
  120. targetType: 'inline'
  121. script: '& "$env:userprofile\.nuget\packages\tools.innosetup\6.3.1\tools\ISCC.exe" src\Installer\installer-setup-$(architecture)-light.iss'
  122. - task: PublishPipelineArtifact@1
  123. displayName: "Publish artifact"
  124. inputs:
  125. targetPath: 'src/Installer/Assets/PixiEditor-$(architecture)-light/'
  126. artifact: 'PixiEditor-setup-$(architecture).exe'
  127. publishLocation: 'pipeline'
  128. - task: ArchiveFiles@2
  129. displayName: "Create zipped installer"
  130. inputs:
  131. rootFolderOrFile: 'src/Installer/Assets/PixiEditor-$(architecture)-light'
  132. includeRootFolder: false
  133. archiveType: 'zip'
  134. archiveFile: '$(Build.ArtifactStagingDirectory)/PixiEditor-$(TagVersion)-setup$(archNumber).zip'
  135. replaceExistingArchive: true
  136. - task: PublishPipelineArtifact@1
  137. displayName: "Publish installer zip artifact"
  138. inputs:
  139. targetPath: '$(Build.ArtifactStagingDirectory)/PixiEditor-$(TagVersion)-setup$(archNumber).zip'
  140. artifact: 'PixiEditor-$(TagVersion)-setup$(archNumber).zip'
  141. publishLocation: 'pipeline'