azure-pipelines-main.yml 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. parameters:
  2. LinuxImage: "ubuntu-latest"
  3. RestoreBuildProjects: "Jellyfin.Server/Jellyfin.Server.csproj"
  4. DotNetSdkVersion: 3.1.100
  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: CmdLine@2
  22. displayName: "Clone Web Branch"
  23. condition: and(succeeded(), or(contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master')), eq(variables['BuildConfiguration'], 'Release'), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
  24. inputs:
  25. script: "git clone --single-branch --branch $(Build.SourceBranchName) --depth=1 https://github.com/jellyfin/jellyfin-web.git $(Agent.TempDirectory)/jellyfin-web"
  26. - task: CmdLine@2
  27. displayName: "Clone Web Target"
  28. condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master')), eq(variables['BuildConfiguration'], 'Release'), in(variables['Build.Reason'], 'PullRequest'))
  29. inputs:
  30. script: "git clone --single-branch --branch $(System.PullRequest.TargetBranch) --depth 1 https://github.com/jellyfin/jellyfin-web.git $(Agent.TempDirectory)/jellyfin-web"
  31. - task: NodeTool@0
  32. displayName: "Install Node"
  33. 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')), eq(variables['BuildConfiguration'], 'Release'), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
  34. inputs:
  35. versionSpec: "12.x"
  36. - task: CmdLine@2
  37. displayName: "Build 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')), eq(variables['BuildConfiguration'], 'Release'), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
  39. inputs:
  40. script: yarn install
  41. workingDirectory: $(Agent.TempDirectory)/jellyfin-web
  42. - task: CopyFiles@2
  43. displayName: "Copy Web Client"
  44. 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')), eq(variables['BuildConfiguration'], 'Release'), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
  45. inputs:
  46. sourceFolder: $(Agent.TempDirectory)/jellyfin-web/dist
  47. contents: "**"
  48. targetFolder: $(Build.SourcesDirectory)/MediaBrowser.WebDashboard/jellyfin-web
  49. cleanTargetFolder: true
  50. overWrite: true
  51. flattenFolders: false
  52. - task: UseDotNet@2
  53. displayName: "Update DotNet"
  54. inputs:
  55. packageType: sdk
  56. version: ${{ parameters.DotNetSdkVersion }}
  57. - task: DotNetCoreCLI@2
  58. displayName: "Publish Server"
  59. inputs:
  60. command: publish
  61. publishWebProjects: false
  62. projects: "${{ parameters.RestoreBuildProjects }}"
  63. arguments: "--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)"
  64. zipAfterPublish: false
  65. - task: PublishPipelineArtifact@0
  66. displayName: "Publish Artifact Naming"
  67. condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
  68. inputs:
  69. targetPath: "$(build.ArtifactStagingDirectory)/Jellyfin.Server/Emby.Naming.dll"
  70. artifactName: "Jellyfin.Naming"
  71. - task: PublishPipelineArtifact@0
  72. displayName: "Publish Artifact Controller"
  73. condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
  74. inputs:
  75. targetPath: "$(build.ArtifactStagingDirectory)/Jellyfin.Server/MediaBrowser.Controller.dll"
  76. artifactName: "Jellyfin.Controller"
  77. - task: PublishPipelineArtifact@0
  78. displayName: "Publish Artifact Model"
  79. condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
  80. inputs:
  81. targetPath: "$(build.ArtifactStagingDirectory)/Jellyfin.Server/MediaBrowser.Model.dll"
  82. artifactName: "Jellyfin.Model"
  83. - task: PublishPipelineArtifact@0
  84. displayName: "Publish Artifact Common"
  85. condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
  86. inputs:
  87. targetPath: "$(build.ArtifactStagingDirectory)/Jellyfin.Server/MediaBrowser.Common.dll"
  88. artifactName: "Jellyfin.Common"