|
|
|
parameters:
|
|
|
|
WindowsImage: "windows-latest"
|
|
|
|
TestProjects: "tests/**/*Tests.csproj"
|
|
|
|
DotNetSdkVersion: 3.1.100
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
- job: PublishWindows
|
|
|
|
displayName: Publish Windows
|
|
|
|
pool:
|
|
|
|
vmImage: ${{ parameters.WindowsImage }}
|
|
|
|
steps:
|
|
|
|
- checkout: self
|
|
|
|
clean: true
|
|
|
|
submodules: true
|
|
|
|
persistCredentials: true
|
|
|
|
|
|
|
|
- task: CmdLine@2
|
|
|
|
displayName: "Clone Web Client (Master, Release, or Tag)"
|
|
|
|
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'))
|
|
|
|
inputs:
|
|
|
|
script: "git clone --single-branch --branch $(Build.SourceBranchName) --depth=1 https://github.com/jellyfin/jellyfin-web.git $(Agent.TempDirectory)/jellyfin-web"
|
|
|
|
|
|
|
|
- task: CmdLine@2
|
|
|
|
displayName: "Clone Web Client (PR)"
|
|
|
|
condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master')), in(variables['Build.Reason'], 'PullRequest'))
|
|
|
|
inputs:
|
|
|
|
script: "git clone --single-branch --branch $(System.PullRequest.TargetBranch) --depth 1 https://github.com/jellyfin/jellyfin-web.git $(Agent.TempDirectory)/jellyfin-web"
|
|
|
|
|
|
|
|
- task: NodeTool@0
|
|
|
|
displayName: "Install Node"
|
|
|
|
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'))
|
|
|
|
inputs:
|
|
|
|
versionSpec: "10.x"
|
|
|
|
|
|
|
|
- task: CmdLine@2
|
|
|
|
displayName: "Build Web Client"
|
|
|
|
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'))
|
|
|
|
inputs:
|
|
|
|
script: yarn install
|
|
|
|
workingDirectory: $(Agent.TempDirectory)/jellyfin-web
|
|
|
|
|
|
|
|
- task: CopyFiles@2
|
|
|
|
displayName: "Copy Web Client"
|
|
|
|
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'))
|
|
|
|
inputs:
|
|
|
|
sourceFolder: $(Agent.TempDirectory)/jellyfin-web/dist
|
|
|
|
contents: "**"
|
|
|
|
targetFolder: $(Build.SourcesDirectory)/MediaBrowser.WebDashboard/jellyfin-web
|
|
|
|
cleanTargetFolder: true
|
|
|
|
overWrite: true
|
|
|
|
flattenFolders: false
|
|
|
|
|
|
|
|
- task: CmdLine@2
|
|
|
|
displayName: "Clone UX Repository"
|
|
|
|
inputs:
|
|
|
|
script: git clone --depth=1 https://github.com/jellyfin/jellyfin-ux $(Agent.TempDirectory)\jellyfin-ux
|
|
|
|
|
|
|
|
- task: PowerShell@2
|
|
|
|
displayName: "Build NSIS Installer"
|
|
|
|
inputs:
|
|
|
|
targetType: "filePath"
|
|
|
|
filePath: ./deployment/windows/build-jellyfin.ps1
|
|
|
|
arguments: -InstallFFMPEG -InstallNSSM -MakeNSIS -InstallTrayApp -UXLocation $(Agent.TempDirectory)\jellyfin-ux -InstallLocation $(build.artifactstagingdirectory)
|
|
|
|
errorActionPreference: "stop"
|
|
|
|
workingDirectory: $(Build.SourcesDirectory)
|
|
|
|
|
|
|
|
- task: CopyFiles@2
|
|
|
|
displayName: "Copy NSIS Installer"
|
|
|
|
inputs:
|
|
|
|
sourceFolder: $(Build.SourcesDirectory)/deployment/windows/
|
|
|
|
contents: "jellyfin*.exe"
|
|
|
|
targetFolder: $(System.ArtifactsDirectory)/setup
|
|
|
|
cleanTargetFolder: true
|
|
|
|
overWrite: true
|
|
|
|
flattenFolders: true
|
|
|
|
|
|
|
|
- task: PublishPipelineArtifact@0
|
|
|
|
displayName: "Publish Artifact Setup"
|
|
|
|
condition: succeeded()
|
|
|
|
inputs:
|
|
|
|
targetPath: "$(build.artifactstagingdirectory)/setup"
|
|
|
|
artifactName: "Jellyfin Server Setup"
|