From 7bbcb455c0b6590d3e0e52948657de74b11bb3b6 Mon Sep 17 00:00:00 2001 From: Erwin de Haan Date: Tue, 19 Feb 2019 02:17:57 +0100 Subject: [PATCH] Added compat checking to YAML --- .azure/azure-pipelines.yml | 135 +++++++++++++++++++++++++++++++------ 1 file changed, 116 insertions(+), 19 deletions(-) diff --git a/.azure/azure-pipelines.yml b/.azure/azure-pipelines.yml index 3b48664956..057534608e 100644 --- a/.azure/azure-pipelines.yml +++ b/.azure/azure-pipelines.yml @@ -1,19 +1,10 @@ -name: Build - -resources: - repositories: - - repository: self - type: github - name: EraYaN/jellyfin - -pool: - vmImage: ubuntu-16.04 +name: $(Date:yyyyMMdd).$(Rev:.r) variables: -- name: TestProjects - value: '' -- name: RestoreBuildProjects - value: 'Jellyfin.Server/Jellyfin.Server.csproj' + - name: TestProjects + value: 'Jellyfin.Server.Tests/Jellyfin.Server.Tests.csproj' + - name: RestoreBuildProjects + value: 'Jellyfin.Server/Jellyfin.Server.csproj' pr: autoCancel: true @@ -22,12 +13,19 @@ trigger: batch: true branches: include: - - master - -#Your build pipeline references the ‘BuildConfiguration’ variable, which you’ve selected to be settable at queue time. Create or edit the build pipeline for this YAML file, define the variable on the Variables tab, and then select the option to make it settable at queue time. See https://go.microsoft.com/fwlink/?linkid=865971 + - master jobs: - - job: Build + - job: main_build + displayName: Main Build + pool: + vmImage: ubuntu-16.04 + strategy: + matrix: + release: + BuildConfiguration: Release + debug: + BuildConfiguration: Release steps: - checkout: self clean: false @@ -67,5 +65,104 @@ jobs: displayName: 'Publish Artifact' inputs: PathtoPublish: '$(build.artifactstagingdirectory)' - artifactName: 'build-$(BuildConfiguration)' + 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: success() + strategy: + matrix: + Naming: + NugetPackageName: Jellyfin.Naming + AssemblyName: Emby.Naming.dll + Controller: + NugetPackageName: Jellyfin.Controller + AssemblyName: MediaBrowser.Controller.dll + Model: + NugetPackageName: Jellyfin.Model + AssemblyName: MediaBrowser.Model.dll + Common: + NugetPackageName: Jellyfin.Common + AssemblyName: 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 + +