jellyfin-server/.ci/azure-pipelines.yml

198 lines
7.2 KiB
YAML
Raw Normal View History

name: $(Date:yyyyMMdd)$(Rev:.r)
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'
pr:
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:
vmImage: ubuntu-latest
2019-02-19 01:17:57 +00:00
strategy:
matrix:
release:
BuildConfiguration: Release
debug:
BuildConfiguration: Debug
maxParallel: 2
steps:
- checkout: self
clean: true
submodules: true
persistCredentials: false
- task: DotNetCoreCLI@2
displayName: Restore
inputs:
command: restore
projects: '$(RestoreBuildProjects)'
2019-07-05 10:06:01 +00:00
enabled: false
- task: DotNetCoreCLI@2
displayName: Build
inputs:
projects: '$(RestoreBuildProjects)'
arguments: '--configuration $(BuildConfiguration)'
2019-07-05 10:06:01 +00:00
enabled: false
- task: DotNetCoreCLI@2
displayName: Test
inputs:
command: test
projects: '$(RestoreBuildProjects)'
arguments: '--configuration $(BuildConfiguration)'
enabled: false
2019-02-18 21:26:40 +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'
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'
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'
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'
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:
vmImage: ubuntu-latest
2019-02-19 01:17:57 +00:00
dependsOn: main_build
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
AssemblyFileName: Emby.Naming.dll
2019-02-19 01:17:57 +00:00
Controller:
NugetPackageName: Jellyfin.Controller
AssemblyFileName: MediaBrowser.Controller.dll
2019-02-19 01:17:57 +00:00
Model:
NugetPackageName: Jellyfin.Model
AssemblyFileName: MediaBrowser.Model.dll
2019-02-19 01:17:57 +00:00
Common:
NugetPackageName: Jellyfin.Common
AssemblyFileName: MediaBrowser.Common.dll
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
- task: CopyFiles@2
2019-07-05 11:03:34 +00:00
displayName: Copy Reference Assembly to current-release folder
inputs:
2019-07-05 10:10:57 +00:00
sourceFolder: $(System.ArtifactsDirectory)/current-artifacts # Optional
contents: '**/*.dll'
2019-07-05 10:10:57 +00:00
targetFolder: $(System.ArtifactsDirectory)/current-release
cleanTargetFolder: true # Optional
overWrite: true # Optional
flattenFolders: true # Optional
2019-02-19 01:17:57 +00:00
- task: DownloadGitHubRelease@0
2019-02-19 01:17:57 +00:00
displayName: Download ABI compatibility check tool from GitHub
inputs:
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'
destinationFolder: $(System.ArtifactsDirectory)/tools
2019-02-19 01:17:57 +00:00
cleanDestinationFolder: true
- task: CmdLine@2
displayName: Execute ABI compatibility check tool
inputs:
script: 'dotnet tools/CompatibilityCheckerCoreCLI.dll current-release/$(AssemblyFileName) new-release/$(AssemblyFileName)'
workingDirectory: $(System.ArtifactsDirectory) # Optional
#failOnStderr: false # Optional
2019-02-19 01:17:57 +00:00