2019-02-19 02:16:17 +00:00
name : $(Date:yyyyMMdd)$(Rev:.r)
2019-02-18 22:47:31 +00:00
variables :
2019-02-19 01:17:57 +00:00
- name : TestProjects
value : 'Jellyfin.Server.Tests/Jellyfin.Server.Tests.csproj'
- name : RestoreBuildProjects
value : 'Jellyfin.Server/Jellyfin.Server.csproj'
2019-02-18 22:47:31 +00:00
2019-02-18 21:36:24 +00:00
pr :
2019-02-18 22:42:24 +00:00
autoCancel : true
trigger :
batch : true
2019-02-18 21:26:40 +00:00
2019-02-18 22:24:39 +00:00
jobs :
2019-02-19 01:17:57 +00:00
- job : main_build
displayName : Main Build
pool :
2019-07-05 09:17:48 +00:00
vmImage : ubuntu-latest
2019-02-19 01:17:57 +00:00
strategy :
matrix :
release :
BuildConfiguration : Release
debug :
2019-02-19 01:50:25 +00:00
BuildConfiguration : Debug
2019-02-19 02:16:17 +00:00
maxParallel : 2
2019-02-18 22:47:31 +00:00
steps :
- checkout : self
2019-02-26 23:53:16 +00:00
clean : true
2019-02-18 22:47:31 +00:00
submodules : true
persistCredentials : false
2019-02-18 22:42:24 +00:00
2019-02-18 22:47:31 +00:00
- task : DotNetCoreCLI@2
displayName : Restore
inputs :
command : restore
projects : '$(RestoreBuildProjects)'
2019-07-05 10:06:01 +00:00
enabled : false
2019-02-18 22:42:24 +00:00
2019-02-18 22:47:31 +00:00
- task : DotNetCoreCLI@2
displayName : Build
inputs :
projects : '$(RestoreBuildProjects)'
arguments : '--configuration $(BuildConfiguration)'
2019-07-05 10:06:01 +00:00
enabled : false
2019-02-18 22:42:24 +00:00
2019-02-18 22:47:31 +00:00
- task : DotNetCoreCLI@2
displayName : Test
inputs :
command : test
projects : '$(RestoreBuildProjects)'
arguments : '--configuration $(BuildConfiguration)'
enabled : false
2019-02-18 21:26:40 +00:00
2019-02-18 22:47:31 +00:00
- task : DotNetCoreCLI@2
displayName : Publish
inputs :
command : publish
publishWebProjects : false
projects : '$(RestoreBuildProjects)'
arguments : '--configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)'
2019-02-19 01:55:10 +00:00
zipAfterPublish : false
2019-02-18 21:26:40 +00:00
2019-02-19 01:55:10 +00:00
# - task: PublishBuildArtifacts@1
# displayName: 'Publish Artifact'
# inputs:
# PathtoPublish: '$(build.artifactstagingdirectory)'
# artifactName: 'jellyfin-build-$(BuildConfiguration)'
# zipAfterPublish: true
2019-02-19 01:17:57 +00:00
2019-07-05 10:02:35 +00:00
- task : PublishPipelineArtifact@0
2019-02-19 01:17:57 +00:00
displayName : 'Publish Artifact Naming'
2019-03-13 20:09:08 +00:00
condition : and(eq(variables['BuildConfiguration'], 'Release'), succeeded())
2019-02-19 01:17:57 +00:00
inputs :
2019-07-05 10:02:35 +00:00
targetPath : '$(build.artifactstagingdirectory)/Jellyfin.Server/Emby.Naming.dll'
2019-02-19 01:17:57 +00:00
artifactName : 'Jellyfin.Naming'
2019-07-05 10:02:35 +00:00
- task : PublishPipelineArtifact@0
2019-02-19 01:17:57 +00:00
displayName : 'Publish Artifact Controller'
2019-03-13 20:09:08 +00:00
condition : and(eq(variables['BuildConfiguration'], 'Release'), succeeded())
2019-02-19 01:17:57 +00:00
inputs :
2019-07-05 10:02:35 +00:00
targetPath : '$(build.artifactstagingdirectory)/Jellyfin.Server/MediaBrowser.Controller.dll'
2019-02-19 01:17:57 +00:00
artifactName : 'Jellyfin.Controller'
2019-07-05 10:02:35 +00:00
- task : PublishPipelineArtifact@0
2019-02-19 01:17:57 +00:00
displayName : 'Publish Artifact Model'
2019-03-13 20:09:08 +00:00
condition : and(eq(variables['BuildConfiguration'], 'Release'), succeeded())
2019-02-19 01:17:57 +00:00
inputs :
2019-07-05 10:02:35 +00:00
targetPath : '$(build.artifactstagingdirectory)/Jellyfin.Server/MediaBrowser.Model.dll'
2019-02-19 01:17:57 +00:00
artifactName : 'Jellyfin.Model'
2019-07-05 10:02:35 +00:00
- task : PublishPipelineArtifact@0
2019-02-19 01:17:57 +00:00
displayName : 'Publish Artifact Common'
2019-03-13 20:09:08 +00:00
condition : and(eq(variables['BuildConfiguration'], 'Release'), succeeded())
2019-02-19 01:17:57 +00:00
inputs :
2019-07-05 10:02:35 +00:00
targetPath : '$(build.artifactstagingdirectory)/Jellyfin.Server/MediaBrowser.Common.dll'
2019-02-19 01:17:57 +00:00
artifactName : 'Jellyfin.Common'
- job : dotnet_compat
displayName : Compatibility Check
pool :
2019-07-05 09:17:48 +00:00
vmImage : ubuntu-latest
2019-02-19 01:17:57 +00:00
dependsOn : main_build
2019-07-05 09:17:48 +00:00
condition : and(succeeded(), variables['System.PullRequest.PullRequestNumber']) # Only execute if the pullrequest numer is defined. (So not for normal CI builds)
2019-02-19 01:17:57 +00:00
strategy :
matrix :
Naming :
NugetPackageName : Jellyfin.Naming
2019-02-19 01:28:16 +00:00
AssemblyFileName : Emby.Naming.dll
2019-02-19 01:17:57 +00:00
Controller :
NugetPackageName : Jellyfin.Controller
2019-02-19 01:28:16 +00:00
AssemblyFileName : MediaBrowser.Controller.dll
2019-02-19 01:17:57 +00:00
Model :
NugetPackageName : Jellyfin.Model
2019-02-19 01:28:16 +00:00
AssemblyFileName : MediaBrowser.Model.dll
2019-02-19 01:17:57 +00:00
Common :
NugetPackageName : Jellyfin.Common
2019-02-19 01:28:16 +00:00
AssemblyFileName : MediaBrowser.Common.dll
2019-02-19 02:16:17 +00:00
maxParallel : 2
2019-02-19 01:17:57 +00:00
steps :
- checkout : none
2019-07-05 10:02:35 +00:00
- task : DownloadPipelineArtifact@2
2019-07-05 10:10:57 +00:00
displayName : Download the New Assembly Build Artifact
2019-02-19 01:17:57 +00:00
inputs :
2019-07-05 10:10:57 +00:00
source: 'current' # Options : current, specific
2019-07-05 10:02:35 +00:00
#preferTriggeringPipeline: false # Optional
#tags: # Optional
artifact : '$(NugetPackageName)' # Optional
#patterns: '**' # Optional
2019-07-05 10:10:57 +00:00
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
2019-07-05 10:02:35 +00:00
#runId: # Required when source == Specific && runVersion == Specific
2019-02-19 01:17:57 +00:00
- task : CopyFiles@2
2019-07-05 11:03:34 +00:00
displayName : Copy New Assembly to new-release folder
2019-02-19 01:17:57 +00:00
inputs :
2019-07-05 10:10:57 +00:00
sourceFolder : $(System.ArtifactsDirectory)/new-artifacts # Optional
2019-02-19 01:17:57 +00:00
contents : '**/*.dll'
2019-07-05 10:10:57 +00:00
targetFolder : $(System.ArtifactsDirectory)/new-release
2019-02-19 01:17:57 +00:00
cleanTargetFolder : true # Optional
overWrite : true # Optional
2019-07-05 10:10:57 +00:00
flattenFolders : true # Optional
2019-02-19 01:17:57 +00:00
2019-07-05 10:02:35 +00:00
- task : DownloadPipelineArtifact@2
2019-07-05 10:10:57 +00:00
displayName : Download the Reference Assembly Build Artifact
2019-02-19 01:17:57 +00:00
inputs :
2019-07-05 10:10:57 +00:00
source: 'specific' # Options : current, specific
2019-07-05 10:02:35 +00:00
#preferTriggeringPipeline: false # Optional
#tags: # Optional
artifact : '$(NugetPackageName)' # Optional
#patterns: '**' # Optional
2019-07-05 10:10:57 +00:00
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
2019-07-05 10:02:35 +00:00
#runId: # Required when source == Specific && runVersion == Specific
2019-02-19 01:59:56 +00:00
- task : CopyFiles@2
2019-07-05 11:03:34 +00:00
displayName : Copy Reference Assembly to current-release folder
2019-02-19 01:59:56 +00:00
inputs :
2019-07-05 10:10:57 +00:00
sourceFolder : $(System.ArtifactsDirectory)/current-artifacts # Optional
2019-02-19 01:59:56 +00:00
contents : '**/*.dll'
2019-07-05 10:10:57 +00:00
targetFolder : $(System.ArtifactsDirectory)/current-release
2019-02-19 01:59:56 +00:00
cleanTargetFolder : true # Optional
overWrite : true # Optional
flattenFolders : true # Optional
2019-02-19 01:17:57 +00:00
2019-03-07 21:00:28 +00:00
- task : DownloadGitHubRelease@0
2019-02-19 01:17:57 +00:00
displayName : Download ABI compatibility check tool from GitHub
inputs :
2019-07-06 22:20:37 +00:00
connection : Jellyfin Release Download
2019-02-19 01:17:57 +00:00
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 :
2019-02-19 02:07:44 +00:00
archiveFilePatterns : '$(System.ArtifactsDirectory)/*-ci.zip'
2019-02-19 01:28:16 +00:00
destinationFolder : $(System.ArtifactsDirectory)/tools
2019-02-19 01:17:57 +00:00
cleanDestinationFolder : true
2019-02-19 01:28:16 +00:00
- task : CmdLine@2
displayName : Execute ABI compatibility check tool
inputs :
2019-02-19 02:12:53 +00:00
script : 'dotnet tools/CompatibilityCheckerCoreCLI.dll current-release/$(AssemblyFileName) new-release/$(AssemblyFileName)'
2019-02-19 01:28:16 +00:00
workingDirectory : $(System.ArtifactsDirectory) # Optional
#failOnStderr: false # Optional
2019-02-19 01:17:57 +00:00