Skip to content

Add installer build/test to the runtime.yml pipeline #705

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Dec 11, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions eng/pipelines/common/clone-checkout-bundle-step.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
steps:
- checkout: none
clean: true

- download: current
artifact: Checkout_bundle
displayName: Download Checkout.bundle

- script: |
$(setScriptToEchoAndFailOnNonZero)
git clone $(Pipeline.Workspace)/Checkout_bundle/Checkout.bundle .
git remote set-url origin $(Build.Repository.Uri)
displayName: Clone the repository from Checkout.bundle
2 changes: 2 additions & 0 deletions eng/pipelines/common/platform-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,8 @@ jobs:
managedTestBuildOsGroup: OSX
${{ insert }}: ${{ parameters.jobParameters }}

# WebAssembly

- ${{ if containsValue(parameters.platforms, 'WebAssembly_wasm') }}:
- template: xplat-setup.yml
parameters:
Expand Down
3 changes: 3 additions & 0 deletions eng/pipelines/common/variables.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
variables:
- name: isOfficialBuild
value: ${{ and(ne(variables['System.TeamProject'], 'public'), notIn(variables['Build.Reason'], 'PullRequest')) }}
9 changes: 7 additions & 2 deletions eng/pipelines/common/xplat-setup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ jobs:
value: '\'
- name: _msbuildCommand
value: powershell -ExecutionPolicy ByPass -NoProfile eng\common\msbuild.ps1 -warnaserror:0 -ci
- name: setScriptToEchoAndFailOnNonZero
value: ''

- ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
- name: archiveExtension
Expand All @@ -39,7 +41,10 @@ jobs:
value: '/'
- name: _msbuildCommand
value: ./eng/common/msbuild.sh --warnaserror false --ci

# Set the bash script to display each command, and stop if any command exits nonzero.
- name: setScriptToEchoAndFailOnNonZero
value: 'set -xe'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't we need separate Windows vs. Linux versions here?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have them, it's just a no-op right now on Win a few lines up:

- name: setScriptToEchoAndFailOnNonZero
  value: ''

Don't know if it's possible to do this (or necessary) in batch.


- ${{ if ne(parameters.jobParameters.crossrootfsDir, '') }}:
# This is only required for cross builds.
- name: ROOTFS_DIR
Expand All @@ -48,6 +53,7 @@ jobs:
osGroup: ${{ parameters.osGroup }}
osSubgroup: ${{ parameters.osSubgroup }}
archType: ${{ parameters.archType }}
platform: ${{ parameters.platform }}

${{ if ne(parameters.container, '') }}:
${{ if eq(parameters.container.registry, 'mcr') }}:
Expand Down Expand Up @@ -94,4 +100,3 @@ jobs:
${{ if ne(parameters.helixQueuesTemplate, '') }}:
jobTemplate: ${{ parameters.jobTemplate }}
jobParameters: ${{ parameters.jobParameters }}
platform: ${{ parameters.platform }}
12 changes: 1 addition & 11 deletions eng/pipelines/coreclr/templates/xplat-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -121,16 +121,6 @@ jobs:
- ${{insert}}: ${{ variable }}

steps:
- checkout: none
clean: true

- download: current
artifact: Checkout_bundle
displayName: Download Checkout.bundle

- script: |
git clone $(Pipeline.Workspace)/Checkout_bundle/Checkout.bundle .
git remote set-url origin $(Build.Repository.Uri)
displayName: Clone the repository from Checkout.bundle
- template: /eng/pipelines/common/clone-checkout-bundle-step.yml

- ${{ parameters.steps }}
230 changes: 17 additions & 213 deletions eng/pipelines/installer/azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,216 +44,20 @@ pr:

name: $(Date:yyyyMMdd)$(Rev:.r)

variables:
- name: TeamName
value: dotnet-core-acquisition
# Skip Running CI tests
- name: SkipTests
value: false
# Set Official Build Id
- name: OfficialBuildId
value: $(Build.BuildNumber)

# Set the target blob feed for package publish during official and validation builds.
- name: _DotNetArtifactsCategory
value: .NETCore
- name: _DotNetValidationArtifactsCategory
value: .NETCoreValidation

# Produce test-signed build for PR and Public builds
- ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}:
- name: SignType
value: test

# Set up non-PR build from internal project
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- name: SignType
value: $[ coalesce(variables.OfficialSignType, 'real') ]
# Values for SDLValidationParameters
- group: core-setup-sdl-validation

- name: pipelinesPath
value: /eng/pipelines/installer
- name: buildScriptFileName
value: installer

stages:
- stage: Build
jobs:
# -------- Build Bash legs (Linux and FreeBSD) --------
- template: ${{ variables['pipelinesPath'] }}/jobs/bash-build.yml
parameters:
crossBuild: true
name: Linux_Arm
dockerImage: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-14.04-23cacb0-20190923200213
additionalRunArgs: -e ROOTFS_DIR=/crossrootfs/arm
portableBuild: true
skipTests: true
targetArchitecture: arm

- template: ${{ variables['pipelinesPath'] }}/jobs/bash-build.yml
parameters:
crossBuild: true
name: Linux_Arm64
dockerImage: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-arm64-cfdd435-20190923200213
additionalRunArgs: -e ROOTFS_DIR=/crossrootfs/arm64
portableBuild: true
skipTests: true
targetArchitecture: arm64

# # Tizen build only for PR build
# - ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
# - template: ${{ variables['pipelinesPath'] }}/jobs/bash-build.yml
# parameters:
# additionalMSBuildArgs: /p:OverridePackageSource=https:%2F%2Ftizen.myget.org/F/dotnet-core/api/v3/index.json /p:OutputRid=tizen.5.0.0-armel
# additionalRunArgs: -e ROOTFS_DIR=/crossrootfs/armel.tizen.build
# crossBuild: true
# name: Linux_ArmRel_Tizen
# disableCrossgen: true
# dockerImage: tizendotnet/dotnet-buildtools-prereqs:ubuntu-16.04-cross-e435274-20180426002255-tizen-rootfs-5.0m1
# portableBuild: false
# skipTests: true
# targetArchitecture: armel

- template: ${{ variables['pipelinesPath'] }}/jobs/bash-build.yml
parameters:
additionalMSBuildArgs: /p:OutputRid=linux-musl-arm64
crossBuild: true
name: Linux_Arm64_Alpine37
dockerImage: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-arm64-alpine-406629a-20190923200213
additionalRunArgs: -e ROOTFS_DIR=/crossrootfs/arm64
portableBuild: false
skipTests: true
targetArchitecture: arm64

- template: ${{ variables['pipelinesPath'] }}/jobs/bash-build.yml
parameters:
additionalMSBuildArgs: /p:OutputRid=linux-musl-x64
name: Linux_x64_Alpine39
dockerImage: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.9-WithNode-0fc54a3-20190918214015
portableBuild: false
targetArchitecture: x64

- template: ${{ variables['pipelinesPath'] }}/jobs/bash-build.yml
parameters:
name: Linux_x64_glibc
dockerImage: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-50f0d02-20190918214028
packageDistroList:
- image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-14.04-debpkg-e5cf912-20175003025046
imageRid: ubuntu.14.04
rids: []
- image: mcr.microsoft.com/dotnet-buildtools/prereqs:rhel-7-rpmpkg-c982313-20174116044113
imageRid: rhel.7
rids:
- centos.7
- fedora.27
- opensuse.42
- oraclelinux.7
- sles.12
portableBuild: true
targetArchitecture: x64

# -------- Build OSX (macOS) leg --------
- template: ${{ variables['pipelinesPath'] }}/jobs/osx-build.yml
parameters:
name: OSX

# -------- Build Windows legs --------
# Windows Arm
- template: ${{ variables['pipelinesPath'] }}/jobs/windows-build.yml
parameters:
name: Windows_Arm
skipTests: true
targetArchitecture: arm

# Windows Arm64
- template: ${{ variables['pipelinesPath'] }}/jobs/windows-build.yml
parameters:
name: Windows_Arm64
skipTests: true
targetArchitecture: arm64

# Windows x64
- template: ${{ variables['pipelinesPath'] }}/jobs/windows-build.yml
parameters:
name: Windows_x64
publishRidAgnosticPackages: true
targetArchitecture: x64

# Windows x86
- template: ${{ variables['pipelinesPath'] }}/jobs/windows-build.yml
parameters:
name: Windows_x86
targetArchitecture: x86

- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- stage: PrepareForPublish
displayName: Prepare for Publish
dependsOn: Build
jobs:
# Prep artifacts: sign them and upload pipeline artifacts expected by stages-based publishing.
- template: ${{ variables['pipelinesPath'] }}/jobs/prepare-signed-artifacts.yml
parameters:
PublishRidAgnosticPackagesFromJobName: Windows_x64
# Publish to Build Asset Registry in order to generate the ReleaseConfigs artifact.
- template: /eng/common/templates/job/publish-build-assets.yml
parameters:
publishUsingPipelines: true
dependsOn: PrepareSignedArtifacts
pool:
name: NetCoreInternal-Pool
queue: buildpool.windows.10.amd64.vs2017

- template: ${{ variables['pipelinesPath'] }}/stages/publish.yml
parameters:
pipelinesPath: ${{ variables['pipelinesPath'] }}
# Publish channel configuration. The publish template wraps Arcade publishing and adds some
# extras that aren't implemented in Arcade yet.
#
# - dependsOn: <ID of the Arcade stage that finalization should run after>
# channel:
# name: <Name of this channel, for logging and readability>
# bar: <Name of the Arcade variable that contains the ID of this channel in BAR>
# storage: <Name of the Latest channel to publish to in dotnetcli blob storage>
dependsOnPublishStages:

- dependsOn: NetCore_Release30_Publish
channel:
name: .NET Core 3 Release
bar: PublicRelease_30_Channel_Id
storage: release/3.0-preview9
public: true
- dependsOn: NetCore_30_Internal_Servicing_Publishing
channel:
name: .NET Core 3 Internal Servicing
bar: InternalServicing_30_Channel_Id
storage: internal/release/3.0
public: false

- dependsOn: NetCore_Dev31_Publish
channel:
name: .NET Core 3.1 Dev
bar: PublicDevRelease_31_Channel_Id
storage: release/3.1
public: true

- dependsOn: NetCore_Release31_Publish
channel:
name: .NET Core 3.1 Release
bar: PublicRelease_31_Channel_Id
storage: release/3.1-preview1
public: true

- dependsOn: NetCore_Dev5_Publish
channel:
name: .NET Core 5 Dev
bar: NetCore_5_Dev_Channel_Id
storage: master
public: true

- dependsOn: PVR_Publish
channel:
name: .NET Tools - Validation
bar: NetCore_Tools_Validation_Channel_Id
storage: dev/validation
public: true
jobs:
#
# Checkout repository
#
- template: /eng/pipelines/common/checkout-job.yml

#
# Build and Test
#
- template: /eng/pipelines/installer/installer-matrix.yml
parameters:
strategy:
matrix:
debug:
_BuildConfig: Debug
release:
_BuildConfig: Release
Loading