2f2010ce59
* Much better, but still broken It crashes with two custom pages after one another. (So when the service should be installed). * Fixed the problems and finished the NSIS installer. Also ignored some of the artifacts. * Added changes to CI for setup building. Consolidate building and fixed git error. Small CI fixes. Move UX repo to SourcesDirectory Fix stupid checkout <> clone error. Fix typo in PowerShell command. Artifact publish tasks can not have wildcards.
226 lines
8.6 KiB
YAML
226 lines
8.6 KiB
YAML
name: $(Date:yyyyMMdd)$(Rev:.r)
|
|
|
|
variables:
|
|
- name: TestProjects
|
|
value: 'Jellyfin.Server.Tests/Jellyfin.Server.Tests.csproj'
|
|
- name: RestoreBuildProjects
|
|
value: 'Jellyfin.Server/Jellyfin.Server.csproj'
|
|
|
|
pr:
|
|
autoCancel: true
|
|
|
|
trigger:
|
|
batch: true
|
|
|
|
jobs:
|
|
- job: main_build
|
|
displayName: Main Build
|
|
pool:
|
|
vmImage: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
release:
|
|
BuildConfiguration: Release
|
|
debug:
|
|
BuildConfiguration: Debug
|
|
maxParallel: 2
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
submodules: true
|
|
persistCredentials: false
|
|
|
|
- task: DotNetCoreCLI@2
|
|
displayName: Publish
|
|
inputs:
|
|
command: publish
|
|
publishWebProjects: false
|
|
projects: '$(RestoreBuildProjects)'
|
|
arguments: '--configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)'
|
|
zipAfterPublish: false
|
|
|
|
# - task: PublishBuildArtifacts@1
|
|
# displayName: 'Publish Artifact'
|
|
# inputs:
|
|
# PathtoPublish: '$(build.artifactstagingdirectory)'
|
|
# artifactName: 'jellyfin-build-$(BuildConfiguration)'
|
|
# zipAfterPublish: true
|
|
|
|
- task: PublishPipelineArtifact@0
|
|
displayName: 'Publish Artifact Naming'
|
|
condition: and(eq(variables['BuildConfiguration'], 'Release'), succeeded())
|
|
inputs:
|
|
targetPath: '$(build.artifactstagingdirectory)/Jellyfin.Server/Emby.Naming.dll'
|
|
artifactName: 'Jellyfin.Naming'
|
|
|
|
- task: PublishPipelineArtifact@0
|
|
displayName: 'Publish Artifact Controller'
|
|
condition: and(eq(variables['BuildConfiguration'], 'Release'), succeeded())
|
|
inputs:
|
|
targetPath: '$(build.artifactstagingdirectory)/Jellyfin.Server/MediaBrowser.Controller.dll'
|
|
artifactName: 'Jellyfin.Controller'
|
|
|
|
- task: PublishPipelineArtifact@0
|
|
displayName: 'Publish Artifact Model'
|
|
condition: and(eq(variables['BuildConfiguration'], 'Release'), succeeded())
|
|
inputs:
|
|
targetPath: '$(build.artifactstagingdirectory)/Jellyfin.Server/MediaBrowser.Model.dll'
|
|
artifactName: 'Jellyfin.Model'
|
|
|
|
- task: PublishPipelineArtifact@0
|
|
displayName: 'Publish Artifact Common'
|
|
condition: and(eq(variables['BuildConfiguration'], 'Release'), succeeded())
|
|
inputs:
|
|
targetPath: '$(build.artifactstagingdirectory)/Jellyfin.Server/MediaBrowser.Common.dll'
|
|
artifactName: 'Jellyfin.Common'
|
|
|
|
- job: main_build_win
|
|
displayName: Main Build Windows
|
|
pool:
|
|
vmImage: windows-latest
|
|
strategy:
|
|
matrix:
|
|
release:
|
|
BuildConfiguration: Release
|
|
maxParallel: 2
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
submodules: true
|
|
persistCredentials: false
|
|
|
|
- task: CmdLine@2
|
|
displayName: Clone the UX repository
|
|
inputs:
|
|
script: git clone --depth=1 https://github.com/jellyfin/jellyfin-ux $(Agent.TempDirectory)\jellyfin-ux
|
|
|
|
- task: PowerShell@2
|
|
displayName: Build the NSIS Installer
|
|
inputs:
|
|
targetType: 'filePath' # Optional. Options: filePath, inline
|
|
filePath: ./deployment/windows/build-jellyfin.ps1 # Required when targetType == FilePath
|
|
arguments: -InstallFFMPEG -InstallNSSM -MakeNSIS -UXLocation $(Agent.TempDirectory)\jellyfin-ux -InstallLocation $(build.artifactstagingdirectory)
|
|
#script: '# Write your PowerShell commands here.Write-Host Hello World' # Required when targetType == Inline
|
|
errorActionPreference: 'stop' # Optional. Options: stop, continue, silentlyContinue
|
|
#failOnStderr: false # Optional
|
|
#ignoreLASTEXITCODE: false # Optional
|
|
#pwsh: false # Optional
|
|
workingDirectory: $(Build.SourcesDirectory) # Optional
|
|
|
|
- task: CopyFiles@2
|
|
displayName: Copy the NSIS Installer to the artifact directory
|
|
inputs:
|
|
sourceFolder: $(Build.SourcesDirectory)/deployment/windows/ # Optional
|
|
contents: 'jellyfin*.exe'
|
|
targetFolder: $(System.ArtifactsDirectory)/setup
|
|
cleanTargetFolder: true # Optional
|
|
overWrite: true # Optional
|
|
flattenFolders: true # Optional
|
|
|
|
- task: PublishPipelineArtifact@0
|
|
displayName: 'Publish Setup Artifact'
|
|
condition: and(eq(variables['BuildConfiguration'], 'Release'), succeeded())
|
|
inputs:
|
|
targetPath: '$(build.artifactstagingdirectory)/setup'
|
|
artifactName: 'Jellyfin Server Setup'
|
|
|
|
- job: dotnet_compat
|
|
displayName: Compatibility Check
|
|
pool:
|
|
vmImage: ubuntu-latest
|
|
dependsOn: main_build
|
|
condition: and(succeeded(), variables['System.PullRequest.PullRequestNumber']) # Only execute if the pullrequest numer is defined. (So not for normal CI builds)
|
|
strategy:
|
|
matrix:
|
|
Naming:
|
|
NugetPackageName: Jellyfin.Naming
|
|
AssemblyFileName: Emby.Naming.dll
|
|
Controller:
|
|
NugetPackageName: Jellyfin.Controller
|
|
AssemblyFileName: MediaBrowser.Controller.dll
|
|
Model:
|
|
NugetPackageName: Jellyfin.Model
|
|
AssemblyFileName: MediaBrowser.Model.dll
|
|
Common:
|
|
NugetPackageName: Jellyfin.Common
|
|
AssemblyFileName: MediaBrowser.Common.dll
|
|
maxParallel: 2
|
|
steps:
|
|
- checkout: none
|
|
|
|
- task: DownloadPipelineArtifact@2
|
|
displayName: Download the New Assembly Build Artifact
|
|
inputs:
|
|
source: 'current' # Options: current, specific
|
|
#preferTriggeringPipeline: false # Optional
|
|
#tags: # Optional
|
|
artifact: '$(NugetPackageName)' # Optional
|
|
#patterns: '**' # Optional
|
|
path: '$(System.ArtifactsDirectory)/new-artifacts'
|
|
#project: # Required when source == Specific
|
|
#pipeline: # Required when source == Specific
|
|
runVersion: 'latest' # Required when source == Specific. Options: latest, latestFromBranch, specific
|
|
#runBranch: 'refs/heads/master' # Required when source == Specific && runVersion == LatestFromBranch
|
|
#runId: # Required when source == Specific && runVersion == Specific
|
|
|
|
- task: CopyFiles@2
|
|
displayName: Copy New Assembly to new-release folder
|
|
inputs:
|
|
sourceFolder: $(System.ArtifactsDirectory)/new-artifacts # Optional
|
|
contents: '**/*.dll'
|
|
targetFolder: $(System.ArtifactsDirectory)/new-release
|
|
cleanTargetFolder: true # Optional
|
|
overWrite: true # Optional
|
|
flattenFolders: true # Optional
|
|
|
|
- task: DownloadPipelineArtifact@2
|
|
displayName: Download the Reference Assembly Build Artifact
|
|
inputs:
|
|
source: 'specific' # Options: current, specific
|
|
#preferTriggeringPipeline: false # Optional
|
|
#tags: # Optional
|
|
artifact: '$(NugetPackageName)' # Optional
|
|
#patterns: '**' # Optional
|
|
path: '$(System.ArtifactsDirectory)/current-artifacts'
|
|
project: '$(System.TeamProjectId)' # Required when source == Specific
|
|
pipeline: '$(System.DefinitionId)' # Required when source == Specific
|
|
runVersion: 'latestFromBranch' # Required when source == Specific. Options: latest, latestFromBranch, specific
|
|
runBranch: 'refs/heads/$(System.PullRequest.TargetBranch)' # Required when source == Specific && runVersion == LatestFromBranch
|
|
#runId: # Required when source == Specific && runVersion == Specific
|
|
|
|
- task: CopyFiles@2
|
|
displayName: Copy Reference Assembly to current-release folder
|
|
inputs:
|
|
sourceFolder: $(System.ArtifactsDirectory)/current-artifacts # Optional
|
|
contents: '**/*.dll'
|
|
targetFolder: $(System.ArtifactsDirectory)/current-release
|
|
cleanTargetFolder: true # Optional
|
|
overWrite: true # Optional
|
|
flattenFolders: true # Optional
|
|
|
|
- task: DownloadGitHubRelease@0
|
|
displayName: Download ABI compatibility check tool from GitHub
|
|
inputs:
|
|
connection: Jellyfin Release Download
|
|
userRepository: EraYaN/dotnet-compatibility
|
|
defaultVersionType: 'latest' # Options: latest, specificVersion, specificTag
|
|
#version: # Required when defaultVersionType != Latest
|
|
itemPattern: '**-ci.zip' # Optional
|
|
downloadPath: '$(System.ArtifactsDirectory)'
|
|
|
|
- task: ExtractFiles@1
|
|
displayName: Extract ABI compatibility check tool
|
|
inputs:
|
|
archiveFilePatterns: '$(System.ArtifactsDirectory)/*-ci.zip'
|
|
destinationFolder: $(System.ArtifactsDirectory)/tools
|
|
cleanDestinationFolder: true
|
|
|
|
- task: CmdLine@2
|
|
displayName: Execute ABI compatibility check tool
|
|
inputs:
|
|
script: 'dotnet tools/CompatibilityCheckerCoreCLI.dll current-release/$(AssemblyFileName) new-release/$(AssemblyFileName) --azure-pipelines'
|
|
workingDirectory: $(System.ArtifactsDirectory) # Optional
|
|
#failOnStderr: false # Optional
|
|
|
|
|