Initial global build PR pipeline (#986)
authorTomáš Rylek <trylek@microsoft.com>
Fri, 20 Dec 2019 18:34:22 +0000 (19:34 +0100)
committerGitHub <noreply@github.com>
Fri, 20 Dec 2019 18:34:22 +0000 (19:34 +0100)
Fixes: #951

* Fix OSX build dependencies and container use per Santiago's advice

* Comment the purpose of the new pipeline per Jared's PR feedback

* Prune unused parameters of global-build-job

* Fix variable propagation

eng/pipelines/common/global-build-job.yml [new file with mode: 0644]
eng/pipelines/global-build.yml [new file with mode: 0644]

diff --git a/eng/pipelines/common/global-build-job.yml b/eng/pipelines/common/global-build-job.yml
new file mode 100644 (file)
index 0000000..4c47bc5
--- /dev/null
@@ -0,0 +1,39 @@
+parameters:
+  buildConfig: ''
+  archType: ''
+  osGroup: ''
+  osSubgroup: ''
+  container: ''
+  variables: {}
+  timeoutInMinutes: ''
+  pool: ''
+
+jobs:
+- template: /eng/common/templates/job/job.yml
+  parameters:
+    name: ${{ format('runtime_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
+    displayName: ${{ format('Runtime Build {0}{1} {2} {3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
+    dependsOn: checkout
+    pool: ${{ parameters.pool }}
+    container: ${{ parameters.container }}
+    timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
+    variables: ${{ parameters.variables }}
+
+    steps:
+    - ${{ if eq(parameters.osGroup, 'OSX') }}:
+      - script: |
+          $(setScriptToEchoAndFailOnNonZero) 
+          brew install pkgconfig icu4c openssl
+          brew link --force icu4c
+          ln -s /usr/local/opt/openssl/lib/pkgconfig/libcrypto.pc /usr/local/lib/pkgconfig/
+          ln -s /usr/local/opt/openssl/lib/pkgconfig/libssl.pc /usr/local/lib/pkgconfig/
+          ln -s /usr/local/opt/openssl/lib/pkgconfig/openssl.pc /usr/local/lib/pkgconfig/
+        displayName: Install Build Dependencies
+
+    - template: /eng/pipelines/common/clone-checkout-bundle-step.yml
+
+    # Build
+    - script: |
+        $(setScriptToEchoAndFailOnNonZero)
+        $(Build.SourcesDirectory)$(dir)build$(scriptExt) -c ${{ parameters.buildConfig }}
+      displayName: Build product
diff --git a/eng/pipelines/global-build.yml b/eng/pipelines/global-build.yml
new file mode 100644 (file)
index 0000000..57d5e3c
--- /dev/null
@@ -0,0 +1,60 @@
+# The purpose of this pipeline is to exercise local developer workflow in the consolidated
+# runtime repo. In particular, it is supposed to run the root "build" script just like any
+# normal developer normally would and monitor regressions w.r.t. this fundamental scenario.
+
+trigger: none
+
+pr:
+  branches:
+    include:
+    - master
+    - release/*.*
+  paths:
+    include:
+    - '*'
+    - docs/manpages/*
+    - eng/pipelines/global-build.yml
+    exclude:
+    - docs/*
+    - eng/pipelines/coreclr/*.*
+    - eng/pipelines/libraries/*.*
+    - eng/pipelines/installer/*.*
+    - eng/pipelines/*.*
+    - CODE-OF-CONDUCT.md
+    - CONTRIBUTING.md
+    - LICENSE.TXT
+    - PATENTS.TXT
+    - README.md
+    - SECURITY.md
+    - THIRD-PARTY-NOTICES.TXT
+
+jobs:
+#
+# Checkout repository
+#
+- template: /eng/pipelines/common/checkout-job.yml
+
+#
+# Build the combined runtime repo
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+  parameters:
+    jobTemplate: /eng/pipelines/common/global-build-job.yml
+    buildConfig: release
+    platforms:
+    - Windows_NT_x86
+    - OSX_x64
+    jobParameters:
+      testGroup: innerloop
+
+#
+# Build the combined runtime repo
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+  parameters:
+    jobTemplate: /eng/pipelines/common/global-build-job.yml
+    buildConfig: debug
+    platforms:
+    - Linux_x64
+    jobParameters:
+      testGroup: innerloop