azure-pipelines-windows.yml 4.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. parameters:
  2. WindowsImage: "windows-latest"
  3. TestProjects: "tests/**/*Tests.csproj"
  4. DotNetSdkVersion: 3.1.100
  5. jobs:
  6. - job: PublishWindows
  7. displayName: Publish Windows
  8. pool:
  9. vmImage: ${{ parameters.WindowsImage }}
  10. steps:
  11. - checkout: self
  12. clean: true
  13. submodules: true
  14. persistCredentials: true
  15. - task: CmdLine@2
  16. displayName: "Clone Web Client (Master, Release, or Tag)"
  17. condition: and(succeeded(), or(contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master'), contains(variables['Build.SourceBranch'], 'tag')), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
  18. inputs:
  19. script: "git clone --single-branch --branch $(Build.SourceBranchName) --depth=1 https://github.com/jellyfin/jellyfin-web.git $(Agent.TempDirectory)/jellyfin-web"
  20. - task: CmdLine@2
  21. displayName: "Clone Web Client (PR)"
  22. condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master')), in(variables['Build.Reason'], 'PullRequest'))
  23. inputs:
  24. script: "git clone --single-branch --branch $(System.PullRequest.TargetBranch) --depth 1 https://github.com/jellyfin/jellyfin-web.git $(Agent.TempDirectory)/jellyfin-web"
  25. - task: NodeTool@0
  26. displayName: "Install Node"
  27. condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master'), contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master')), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
  28. inputs:
  29. versionSpec: "10.x"
  30. - task: CmdLine@2
  31. displayName: "Build Web Client"
  32. condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master'), contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master')), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
  33. inputs:
  34. script: yarn install
  35. workingDirectory: $(Agent.TempDirectory)/jellyfin-web
  36. - task: CopyFiles@2
  37. displayName: "Copy Web Client"
  38. condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master'), contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master')), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
  39. inputs:
  40. sourceFolder: $(Agent.TempDirectory)/jellyfin-web/dist
  41. contents: "**"
  42. targetFolder: $(Build.SourcesDirectory)/MediaBrowser.WebDashboard/jellyfin-web
  43. cleanTargetFolder: true
  44. overWrite: true
  45. flattenFolders: false
  46. - task: CmdLine@2
  47. displayName: "Clone UX Repository"
  48. inputs:
  49. script: git clone --depth=1 https://github.com/jellyfin/jellyfin-ux $(Agent.TempDirectory)\jellyfin-ux
  50. - task: PowerShell@2
  51. displayName: "Build NSIS Installer"
  52. inputs:
  53. targetType: "filePath"
  54. filePath: ./deployment/windows/build-jellyfin.ps1
  55. arguments: -InstallFFMPEG -InstallNSSM -MakeNSIS -InstallTrayApp -UXLocation $(Agent.TempDirectory)\jellyfin-ux -InstallLocation $(build.artifactstagingdirectory)
  56. errorActionPreference: "stop"
  57. workingDirectory: $(Build.SourcesDirectory)
  58. - task: CopyFiles@2
  59. displayName: "Copy NSIS Installer"
  60. inputs:
  61. sourceFolder: $(Build.SourcesDirectory)/deployment/windows/
  62. contents: "jellyfin*.exe"
  63. targetFolder: $(System.ArtifactsDirectory)/setup
  64. cleanTargetFolder: true
  65. overWrite: true
  66. flattenFolders: true
  67. - task: PublishPipelineArtifact@0
  68. displayName: "Publish Artifact Setup"
  69. condition: succeeded()
  70. inputs:
  71. targetPath: "$(build.artifactstagingdirectory)/setup"
  72. artifactName: "Jellyfin Server Setup"