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 branches: include: - master jobs: - job: main_build displayName: Main Build pool: vmImage: ubuntu-16.04 strategy: matrix: release: BuildConfiguration: Release debug: BuildConfiguration: Release steps: - checkout: self clean: false submodules: true persistCredentials: false - task: DotNetCoreCLI@2 displayName: Restore inputs: command: restore projects: '$(RestoreBuildProjects)' - task: DotNetCoreCLI@2 displayName: Build inputs: projects: '$(RestoreBuildProjects)' arguments: '--configuration $(BuildConfiguration)' - task: DotNetCoreCLI@2 displayName: Test inputs: command: test projects: '$(RestoreBuildProjects)' arguments: '--configuration $(BuildConfiguration)' enabled: false - task: DotNetCoreCLI@2 displayName: Publish inputs: command: publish publishWebProjects: false projects: '$(RestoreBuildProjects)' arguments: '--configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)' zipAfterPublish: true - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact' inputs: PathtoPublish: '$(build.artifactstagingdirectory)' artifactName: 'jellyfin-build-$(BuildConfiguration)' zipAfterPublish: false - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact Naming' condition: eq(variables['BuildConfiguration'], 'Release') inputs: PathtoPublish: '$(build.artifactstagingdirectory)/MediaBrowser.Naming.dll' artifactName: 'Jellyfin.Naming' zipAfterPublish: false - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact Controller' condition: eq(variables['BuildConfiguration'], 'Release') inputs: PathtoPublish: '$(build.artifactstagingdirectory)/MediaBrowser.Controller.dll' artifactName: 'Jellyfin.Controller' zipAfterPublish: false - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact Model' condition: eq(variables['BuildConfiguration'], 'Release') inputs: PathtoPublish: '$(build.artifactstagingdirectory)/MediaBrowser.Model.dll' artifactName: 'Jellyfin.Model' zipAfterPublish: false - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact Common' condition: eq(variables['BuildConfiguration'], 'Release') inputs: PathtoPublish: '$(build.artifactstagingdirectory)/MediaBrowser.Common.dll' artifactName: 'Jellyfin.Common' zipAfterPublish: false - job: dotnet_compat displayName: Compatibility Check pool: vmImage: ubuntu-16.04 dependsOn: main_build condition: succeeded() 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 steps: - checkout: none - task: NuGet@2 displayName: 'Download $(NugetPackageName)' inputs: command: custom arguments: 'install $(NugetPackageName) -OutputDirectory $(System.ArtifactsDirectory)/packages -ExcludeVersion -DirectDownload' - task: CopyFiles@2 displayName: Copy Nuget Assembly to release folder inputs: sourceFolder: $(System.ArtifactsDirectory)/packages/$(NugetPackageName) # Optional contents: '**/*.dll' targetFolder: $(System.ArtifactsDirectory)/current-release cleanTargetFolder: true # Optional overWrite: true # Optional flattenFolders: true # Optional - task: DownloadBuildArtifacts@0 displayName: Download the Assembly Build Artifact inputs: buildType: 'current' # Options: current, specific allowPartiallySucceededBuilds: false # Optional downloadType: 'single' # Options: single, specific artifactName: '$(NugetPackageName)' # Required when downloadType == Single downloadPath: '$(System.ArtifactsDirectory)/new-release' - task: DownloadGitHubReleases@0 displayName: Download ABI compatibility check tool from GitHub inputs: connection: GitHub (EraYaN) 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: '*-ci.zip' destinationFolder: $(System.ArtifactsDirectory)/tools cleanDestinationFolder: true - task: CmdLine@2 displayName: Execute ABI compatibility check tool inputs: script: 'tools/CompatibilityCheckerCoreCLI current-release/$(AssemblyFileName) new-release/$(AssemblyFileName)' workingDirectory: $(System.ArtifactsDirectory) # Optional #failOnStderr: false # Optional