azure-pipelines-main.yml 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. parameters:
  2. LinuxImage: 'ubuntu-latest'
  3. RestoreBuildProjects: 'Jellyfin.Server/Jellyfin.Server.csproj'
  4. DotNetSdkVersion: 7.0.x
  5. jobs:
  6. - job: Build
  7. displayName: Build
  8. strategy:
  9. matrix:
  10. Release:
  11. BuildConfiguration: Release
  12. Debug:
  13. BuildConfiguration: Debug
  14. pool:
  15. vmImage: '${{ parameters.LinuxImage }}'
  16. steps:
  17. - checkout: self
  18. clean: true
  19. submodules: true
  20. persistCredentials: true
  21. - task: DownloadPipelineArtifact@2
  22. displayName: 'Download Web Branch'
  23. condition: in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI', 'BuildCompletion')
  24. inputs:
  25. path: '$(Agent.TempDirectory)'
  26. artifact: 'jellyfin-web-production'
  27. source: 'specific'
  28. project: 'jellyfin'
  29. pipeline: 'Jellyfin Web'
  30. runBranch: variables['Build.SourceBranch']
  31. - task: DownloadPipelineArtifact@2
  32. displayName: 'Download Web Target'
  33. condition: eq(variables['Build.Reason'], 'PullRequest')
  34. inputs:
  35. path: '$(Agent.TempDirectory)'
  36. artifact: 'jellyfin-web-production'
  37. source: 'specific'
  38. project: 'jellyfin'
  39. pipeline: 'Jellyfin Web'
  40. runBranch: variables['System.PullRequest.TargetBranch']
  41. - task: ExtractFiles@1
  42. displayName: 'Extract Web Client'
  43. inputs:
  44. archiveFilePatterns: '$(Agent.TempDirectory)/*.zip'
  45. destinationFolder: '$(Build.SourcesDirectory)/MediaBrowser.WebDashboard'
  46. cleanDestinationFolder: false
  47. - task: UseDotNet@2
  48. displayName: 'Update DotNet'
  49. inputs:
  50. packageType: sdk
  51. version: ${{ parameters.DotNetSdkVersion }}
  52. - task: DotNetCoreCLI@2
  53. displayName: 'Publish Server'
  54. inputs:
  55. command: publish
  56. publishWebProjects: false
  57. projects: '${{ parameters.RestoreBuildProjects }}'
  58. arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
  59. zipAfterPublish: false
  60. - task: PublishPipelineArtifact@1
  61. displayName: 'Publish Artifact Naming'
  62. condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
  63. inputs:
  64. targetPath: '$(build.ArtifactStagingDirectory)/Jellyfin.Server/Emby.Naming.dll'
  65. artifactName: 'Jellyfin.Naming'
  66. - task: PublishPipelineArtifact@1
  67. displayName: 'Publish Artifact Controller'
  68. condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
  69. inputs:
  70. targetPath: '$(build.ArtifactStagingDirectory)/Jellyfin.Server/MediaBrowser.Controller.dll'
  71. artifactName: 'Jellyfin.Controller'
  72. - task: PublishPipelineArtifact@1
  73. displayName: 'Publish Artifact Model'
  74. condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
  75. inputs:
  76. targetPath: '$(build.ArtifactStagingDirectory)/Jellyfin.Server/MediaBrowser.Model.dll'
  77. artifactName: 'Jellyfin.Model'
  78. - task: PublishPipelineArtifact@1
  79. displayName: 'Publish Artifact Common'
  80. condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
  81. inputs:
  82. targetPath: '$(build.ArtifactStagingDirectory)/Jellyfin.Server/MediaBrowser.Common.dll'
  83. artifactName: 'Jellyfin.Common'
  84. - task: PublishPipelineArtifact@1
  85. displayName: 'Publish Artifact Extensions'
  86. condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
  87. inputs:
  88. targetPath: '$(build.ArtifactStagingDirectory)/Jellyfin.Server/Jellyfin.Extensions.dll'
  89. artifactName: 'Jellyfin.Extensions'