Skip to content
代码片段 群组 项目
ci.yml 14.6 KB
更新 更旧
  • 了解如何忽略特定修订
  • #
    # See https://docs.microsoft.com/en-us/vsts/pipelines/yaml-schema for details on this file.
    #
    
    # Configure which branches trigger builds
    trigger:
      batch: true
      branches:
        include:
        - master
        - release/*
    
    # Run PR validation on all branches
    pr:
    
    variables:
    - name: DOTNET_SKIP_FIRST_TIME_EXPERIENCE
      value: true
    
    - name: _TeamName
      value:  AspNetCore
    - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
      - name: _BuildArgs
        value: /p:TeamName=$(_TeamName)
    
          /p:OfficialBuildId=$(Build.BuildNumber)
    
    - ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}:
      - name: _BuildArgs
        value: ''
    
    - template: jobs/default-build.yml
      parameters:
        jobName: Code_check
        jobDisplayName: Code check
        agentOs: Windows
        steps:
        - powershell: ./eng/scripts/CodeCheck.ps1 -ci
          displayName: Run eng/scripts/CodeCheck.ps1
    
    
    # Build Windows (x64/x86)
    - template: jobs/default-build.yml
      parameters:
        codeSign: true
        jobName: Windows_build
        jobDisplayName: "Build: Windows x64/x86"
        agentOs: Windows
    
        - script: "echo ##vso[build.addbuildtag]daily-build"
    
          condition: and(ne(variables['Build.Reason'], 'PullRequest'), notin(variables['DotNetFinalVersionKind'], 'release', 'prerelease'))
    
          displayName: 'Set CI tags'
        - script: "echo ##vso[build.addbuildtag]release-candidate"
    
          condition: and(ne(variables['Build.Reason'], 'PullRequest'), in(variables['DotNetFinalVersionKind'], 'release', 'prerelease'))
    
        # !!! NOTE !!! Some of these steps have disabled code signing.
        # This is intentional to workaround https://github.com/dotnet/arcade/issues/1957 which always re-submits for code-signing, even
        # if they have already been signed. This results in slower builds due to re-submitting the same .nupkg many times for signing.
        # The sign settings have been configured to
    
        - script: ./build.cmd
              -ci
    
              -arch x64
    
              -pack
              -all
              -buildNative
    
              /bl:artifacts/log/build.x64.binlog
              $(_BuildArgs)
    
        # TODO: make it possible to build for one Windows architecture at a time
        # This is going to actually build x86 native assets. See https://github.com/aspnet/AspNetCore/issues/7196
    
    
        - script: ./build.cmd
                -ci
    
                -arch x86
    
                -pack
                -all
                -buildNative
                -noBuildJava
    
                /p:OnlyPackPlatformSpecificPackages=true
    
                /bl:artifacts/log/build.x86.binlog
                $(_BuildArgs)
    
    
        # This is in a separate build step with -forceCoreMsbuild to workaround MAX_PATH limitations - https://github.com/Microsoft/msbuild/issues/53
    
    John Luo's avatar
    John Luo 已提交
        - script: .\src\SiteExtensions\build.cmd
                -ci
                -pack
                -noBuildDeps
                $(_BuildArgs)
          displayName: Build SiteExtension
    
        # This runs code-signing on all packages, zips, and jar files as defined in build/CodeSign.targets. If https://github.com/dotnet/arcade/issues/1957 is resolved,
        # consider running code-signing inline with the other previous steps.
        # Sign check is disabled because it is run in a separate step below, after installers are built.
    
        - script: ./build.cmd
                  -ci
    
                  -noBuild
                  -noRestore
    
                  -sign
                  /bl:artifacts/log/build.codesign.binlog
                  $(_BuildArgs)
    
        # Windows installers bundle both x86 and x64 assets
    
        - script: ./build.cmd
    
                -ci
                -sign
                -buildInstallers
                /bl:artifacts/log/installers.msbuild.binlog
                $(_BuildArgs)
          displayName: Build Installers
    
        - name: Windows_Logs
          path: artifacts/log/
    
          publishOnError: true
    
        - name: Windows_Packages
          path: artifacts/packages/
    
        - name: Windows_Symbols
          path: artifacts/symbols/
    
        - name: Windows_VSIX
          path: artifacts/VSSetup/
        - name: Windows_Manifests
          path: artifacts/manifests/
        - name: Windows_Installers
          path: artifacts/installers/
    
    # Build Windows ARM
    - template: jobs/default-build.yml
      parameters:
        codeSign: true
        jobName: Windows_arm_build
        jobDisplayName: "Build: Windows ARM"
        agentOs: Windows
    
        buildArgs:
          -arch arm
          -sign
          -pack
          -noBuildNodeJS
          -noBuildJava
    
          /p:OnlyPackPlatformSpecificPackages=true
    
          /bl:artifacts/log/build.win-arm.binlog
          $(_BuildArgs)
    
        installNodeJs: false
        installJdk: false
    
        artifacts:
        - name: Windows_arm_Packages
          path: artifacts/packages/
        - name: Windows_arm_Manifests
          path: artifacts/manifests/
        - name: Windows_arm_Installers
          path: artifacts/installers/
        - name: Windows_arm_Logs
    
    John Luo's avatar
    John Luo 已提交
          path: artifacts/log/
    
    
    # Build MacOS
    - template: jobs/default-build.yml
      parameters:
        jobName: MacOs_x64_build
        jobDisplayName: "Build: macOS"
        agentOs: macOs
    
        buildArgs:
          --pack
          --all
          --no-build-nodejs
    
          --no-build-java
    
          -p:OnlyPackPlatformSpecificPackages=true
          -bl:artifacts/log/build.macos.binlog
    
          $(_BuildArgs)
    
        artifacts:
        - name: MacOS_x64_Packages
          path: artifacts/packages/
        - name: MacOS_x64_Manifests
          path: artifacts/manifests/
        - name: MacOS_x64_Installers
          path: artifacts/installers/
        - name: MacOS_x64_Logs
    
    John Luo's avatar
    John Luo 已提交
          path: artifacts/log/
    
    - template: jobs/codesign-xplat.yml
      parameters:
        inputName: MacOS_x64
    
    # Build Linux x64
    - template: jobs/default-build.yml
      parameters:
        jobName: Linux_x64_build
        jobDisplayName: "Build: Linux x64"
        agentOs: Linux
    
        - script: ./build.sh
              --ci
    
              --arch x64
    
              --no-build-nodejs
              --no-build-java
    
              -p:OnlyPackPlatformSpecificPackages=true
              -bl:artifacts/log/build.linux-x64.binlog
    
              $(_BuildArgs)
    
          displayName: Run build.sh
    
            git clean -xfd src/**/obj/
    
              --build-installers \
    
              -p:OnlyPackPlatformSpecificPackages=true \
              -p:BuildRuntimeArchive=false \
              -p:LinuxInstallerType=deb \
              -bl:artifacts/log/build.deb.binlog \
    
              $(_BuildArgs)
    
          displayName: Build Debian installers
        - script: |
    
            git clean -xfd src/**/obj/
    
              --build-installers \
    
              -p:OnlyPackPlatformSpecificPackages=true \
              -p:BuildRuntimeArchive=false \
              -p:LinuxInstallerType=rpm \
              -bl:artifacts/log/build.rpm.binlog \
    
              $(_BuildArgs)
    
          displayName: Build RPM installers
        artifacts:
        - name: Linux_x64_Packages
          path: artifacts/packages/
        - name: Linux_x64_Manifests
          path: artifacts/manifests/
        - name: Linux_x64_Installers
          path: artifacts/installers/
        - name: Linux_x64_Logs
    
    John Luo's avatar
    John Luo 已提交
          path: artifacts/log/
    
    - template: jobs/codesign-xplat.yml
      parameters:
        inputName: Linux_x64
    
    # Build Linux ARM
    - template: jobs/default-build.yml
      parameters:
        jobName: Linux_arm_build
        jobDisplayName: "Build: Linux ARM"
        agentOs: Linux
    
        buildArgs:
          --arch arm
          --pack
          --all
    
          --no-build-nodejs
          --no-build-java
    
          -p:OnlyPackPlatformSpecificPackages=true
          -bl:artifacts/log/build.linux-arm.binlog
    
          $(_BuildArgs)
    
        artifacts:
        - name: Linux_arm_Packages
          path: artifacts/packages/
        - name: Linux_arm_Manifests
          path: artifacts/manifests/
        - name: Linux_arm_Installers
          path: artifacts/installers/
        - name: Linux_arm_Logs
    
    John Luo's avatar
    John Luo 已提交
          path: artifacts/log/
    
    - template: jobs/codesign-xplat.yml
      parameters:
        inputName: Linux_arm
    
    # Build Linux ARM64
    - template: jobs/default-build.yml
      parameters:
        jobName: Linux_arm64_build
        jobDisplayName: "Build: Linux ARM64"
        agentOs: Linux
    
        buildArgs:
          --arch arm64
          --all
          --pack
    
          --no-build-nodejs
          --no-build-java
    
          -p:OnlyPackPlatformSpecificPackages=true
          -bl:artifacts/log/build.arm64.binlog
    
          $(_BuildArgs)
    
        artifacts:
        - name: Linux_arm64_Packages
          path: artifacts/packages/
        - name: Linux_arm64_Manifests
          path: artifacts/manifests/
        - name: Linux_arm64_Installers
          path: artifacts/installers/
        - name: Linux_arm64_Logs
    
    John Luo's avatar
    John Luo 已提交
          path: artifacts/log/
    
    - template: jobs/codesign-xplat.yml
      parameters:
        inputName: Linux_arm64
    
    # Build Linux Musl x64
    - template: jobs/default-build.yml
      parameters:
        jobName: Linux_musl_x64_build
        jobDisplayName: "Build: Linux Musl x64"
        agentOs: Linux
        buildScript: ./dockerbuild.sh alpine
    
          --arch x64
          --os-name linux-musl
    
          --no-build-nodejs
          --no-build-java
    
          -p:OnlyPackPlatformSpecificPackages=true
          -bl:artifacts/log/build.musl.binlog
    
          $(_BuildArgs)
    
        artifacts:
        - name: Linux_musl_x64_Packages
          path: artifacts/packages/
        - name: Linux_musl_x64_Manifests
          path: artifacts/manifests/
        - name: Linux_musl_x64_Installers
          path: artifacts/installers/
        - name: Linux_musl_x64_Logs
    
    John Luo's avatar
    John Luo 已提交
          path: artifacts/log/
    
    - template: jobs/codesign-xplat.yml
      parameters:
        inputName: Linux_musl_x64
    
    
    # Build Linux Musl arm64
    - template: jobs/default-build.yml
      parameters:
        jobName: Linux_musl_arm64_build
        jobDisplayName: "Build: Linux Musl ARM64"
        agentOs: Linux
        buildScript: ./dockerbuild.sh ubuntu-alpine37
    
          --arch arm64
          --os-name linux-musl
    
          --no-build-nodejs
          --no-build-java
    
          -p:OnlyPackPlatformSpecificPackages=true
          -bl:artifacts/log/build.musl.binlog
    
          $(_BuildArgs)
    
        installNodeJs: false
        artifacts:
        - name: Linux_musl_arm64_Packages
          path: artifacts/packages/
        - name: Linux_musl_arm64_Manifests
          path: artifacts/manifests/
        - name: Linux_musl_arm64_Installers
          path: artifacts/installers/
        - name: Linux_musl_arm64_Logs
    
    John Luo's avatar
    John Luo 已提交
          path: artifacts/log/
    
          publishOnError: true
    - template: jobs/codesign-xplat.yml
      parameters:
        inputName: Linux_musl_arm64
    
    
        condition: ne(variables['SkipTests'], 'true')
        jobName: Windows_Test
        jobDisplayName: "Test: Windows Server 2016 x64"
    
        agentOs: Windows
    
        buildArgs: -all -pack -test -BuildNative "/p:SkipIISNewHandlerTests=true /p:SkipIISTests=true /p:SkipIISExpressTests=true /p:SkipIISNewShimTests=true /p:RunTemplateTests=false"
    
        - powershell: "& ./src/Servers/IIS/tools/UpdateIISExpressCertificate.ps1; & ./src/Servers/IIS/tools/update_schema.ps1"
    
          displayName: Setup IISExpress test certificates and schema
    
        - powershell: "& ./build.ps1 -CI -NoBuild -Test /p:RunFlakyTests=true"
          displayName: Run Flaky Tests
          continueOnError: true
    
        artifacts:
        - name: Windows_Test_Logs
    
    John Luo's avatar
    John Luo 已提交
          path: artifacts/log/
    
          publishOnError: true
    
        - name: Windows_Test_Results
          path: artifacts/TestResults/
          publishOnError: true
    
    - template: jobs/default-build.yml
      parameters:
        condition: ne(variables['SkipTests'], 'true')
        jobName: Windows_Templates_Test
        jobDisplayName: "Test: Templates - Windows Server 2016 x64"
        agentOs: Windows
    
        steps:
        - script: ./build.cmd -ci -all -pack
    
          displayName: Build Repo
    
        - script: ./src/ProjectTemplates/build.cmd -ci -pack -NoRestore -NoBuilddeps "/p:RunTemplateTests=true /bl:artifacts/log/template.pack.binlog"
          displayName: Pack Templates
        - script: ./src/ProjectTemplates/build.cmd -ci -test -NoRestore -NoBuild -NoBuilddeps "/p:RunTemplateTests=true /bl:artifacts/log/template.test.binlog"
          displayName: Test Templates
    
        artifacts:
        - name: Windows_Test_Templates_Logs
    
    John Luo's avatar
    John Luo 已提交
          path: artifacts/log/
    
        - name: Windows_Test_Templates_Results
          path: artifacts/TestResults/
          publishOnError: true
    
    - template: jobs/default-build.yml
    
        condition: ne(variables['SkipTests'], 'true')
        jobName: MacOs_Test
        jobDisplayName: "Test: macOS 10.13"
    
        buildArgs: --all --test "/p:RunTemplateTests=false"
    
        beforeBuild:
        - bash: "./eng/scripts/install-nginx-mac.sh"
          displayName: Installing Nginx
    
        - bash: ./build.sh --ci --pack --no-build --no-restore --no-build-deps "/bl:artifacts/log/packages.pack.binlog"
          displayName: Pack Packages (for Template tests)
        - bash: ./src/ProjectTemplates/build.sh --ci --pack --no-restore --no-build-deps "/bl:artifacts/log/template.pack.binlog"
          displayName: Pack Templates (for Template tests)
    
        - bash: ./build.sh --no-build --ci --test -p:RunFlakyTests=true
          displayName: Run Flaky Tests
          continueOnError: true
    
        artifacts:
        - name: MacOS_Test_Logs
    
    John Luo's avatar
    John Luo 已提交
          path: artifacts/log/
    
          publishOnError: true
    
        - name: MacOS_Test_Results
          path: artifacts/TestResults/
          publishOnError: true
    
    - template: jobs/default-build.yml
    
        condition: ne(variables['SkipTests'], 'true')
        jobName: Linux_Test
        jobDisplayName: "Test: Ubuntu 16.04 x64"
    
        buildArgs: --all --test "/p:RunTemplateTests=false"
    
        beforeBuild:
        - bash: "./eng/scripts/install-nginx-linux.sh"
          displayName: Installing Nginx
    
        - bash: "echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p"
          displayName: Increase inotify limit
    
        - bash: ./build.sh --ci --pack --no-build --no-restore --no-build-deps "/bl:artifacts/log/packages.pack.binlog"
          displayName: Pack Packages (for Template tests)
        - bash: ./src/ProjectTemplates/build.sh --ci --pack --no-restore --no-build-deps "/bl:artifacts/log/template.pack.binlog"
          displayName: Pack Templates (for Template tests)
    
        - bash: ./build.sh --no-build --ci --test -p:RunFlakyTests=true
          displayName: Run Flaky Tests
          continueOnError: true
    
        artifacts:
        - name: Linux_Test_Logs
    
    John Luo's avatar
    John Luo 已提交
          path: artifacts/log/
    
          publishOnError: true
    
        - name: Linux_Test_Results
          path: artifacts/TestResults/
          publishOnError: true