소스 검색

Added compat checking to YAML

Erwin de Haan 6 년 전
부모
커밋
7bbcb455c0
1개의 변경된 파일116개의 추가작업 그리고 19개의 파일을 삭제
  1. 116 19
      .azure/azure-pipelines.yml

+ 116 - 19
.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
+
+