Răsfoiți Sursa

[azure-pipelines] use template for the build jobs

Mainly to let the Test jobs depends on BuildWindows64 specifically instead of both 32/64-bit Windows builds.
Andy Li 6 ani în urmă
părinte
comite
5ab0a16d85

+ 16 - 180
azure-pipelines.yml

@@ -8,187 +8,23 @@ variables:
 stages:
   - stage: BuildAndTest
     jobs:
-      - job: BuildLinux
-        pool:
-          vmImage: 'ubuntu-16.04'
-        variables:
-          OPAMYES: 1
-          ADD_REVISION: 1
-        steps:
-          - checkout: self
-            submodules: recursive
-          - script: |
-              set -ex
-              sudo add-apt-repository ppa:avsm/ppa -y # provides newer version of OCaml and OPAM
-              sudo apt-get update -qqy
-              sudo apt-get install -qqy ocaml-nox camlp4-extra opam libpcre3-dev zlib1g-dev libgtk2.0-dev ninja-build
-            displayName: Install dependencies
-          - script: |
-              set -ex
-              unset MACHINE RELEASE SYSTEM VERSION # https://marc.info/?l=gentoo-commits&m=155026142713994
-              mkdir $HOME/neko
-              pushd $HOME/neko
-              git clone --recursive https://github.com/HaxeFoundation/neko.git .
-              cmake . -DSTATIC_DEPS=all -G Ninja
-              ninja download_static_deps || ninja download_static_deps || ninja download_static_deps
-              ninja
-              sudo ninja install
-              popd
-            displayName: Install Neko
-          - script: |
-              set -ex
-              opam init
-              opam update
-              opam pin add haxe . --no-action
-              opam install haxe --deps-only
-              opam list
-              ocamlopt -v
-            displayName: Install OCaml libraries
-          - script: |
-              set -ex
-              opam config exec -- make -s STATICLINK=1 libs
-              opam config exec -- make -s STATICLINK=1 prebuild
-              opam config exec -- make -s -j`nproc` STATICLINK=1 haxe
-              opam config exec -- make -s haxelib
-              make -s package_bin
-              ls -l out
-              ldd -v ./haxe
-              ldd -v ./haxelib
-            displayName: Build Haxe
-          - task: PublishPipelineArtifact@0
-            inputs:
-              artifactName: 'linuxBinaries'
-              targetPath: out
-          - script: |
-              set -ex
-              make -s xmldoc
-              cat >extra/doc/info.json <<EOL
-                {
-                  "commit": "$(Build.SourceVersion)",
-                  "branch": "$(Build.SourceBranchName)"
-                }
-              EOL
-            displayName: Build xmldoc
-          - task: PublishPipelineArtifact@0
-            inputs:
-              artifactName: 'xmldoc'
-              targetPath: extra/doc
+      - template: extra/azure-pipelines/build-linux.yml
+        parameters:
+          name: BuildLinux
 
-      - job: BuildMac
-        pool:
-          vmImage: 'macOS-10.13'
-        variables:
-          OPAMYES: 1
-          ADD_REVISION: 1
-        steps:
-          - checkout: self
-            submodules: recursive
-          - script: |
-              set -ex
-              brew update
-              brew bundle --file=tests/Brewfile --no-upgrade
-            displayName: Install dependencies
-          - script: |
-              set -ex
-              mkdir $HOME/neko
-              pushd $HOME/neko
-              git clone --recursive https://github.com/HaxeFoundation/neko.git .
-              cmake . -DSTATIC_DEPS=all -G Ninja
-              ninja download_static_deps || ninja download_static_deps || ninja download_static_deps
-              ninja -j 4
-              sudo ninja install
-              popd
-            displayName: Install Neko
-          - script: |
-              set -ex
-              opam init
-              opam update
-              opam pin add haxe . --no-action
-              opam install haxe --deps-only
-              opam list
-              ocamlopt -v
-            displayName: Install OCaml libraries
-          - script: |
-              set -ex
-              opam config exec -- make -s STATICLINK=1 "LIB_PARAMS=/usr/local/opt/zlib/lib/libz.a /usr/local/lib/libpcre.a" libs
-              opam config exec -- make -s STATICLINK=1 "LIB_PARAMS=/usr/local/opt/zlib/lib/libz.a /usr/local/lib/libpcre.a" prebuild
-              opam config exec -- make -s -j`sysctl -n hw.ncpu` STATICLINK=1 "LIB_PARAMS=/usr/local/opt/zlib/lib/libz.a /usr/local/lib/libpcre.a" haxe
-              opam config exec -- make -s haxelib
-              make -s package_bin package_installer_mac
-              ls -l out
-              otool -L ./haxe
-              otool -L ./haxelib
-            displayName: Build Haxe
-          - task: PublishPipelineArtifact@0
-            inputs:
-              artifactName: 'macBinaries'
-              targetPath: out
+      - template: extra/azure-pipelines/build-mac.yml
+        parameters:
+          name: BuildMac
 
-      - job: BuildWindows
-        pool:
-          vmImage: 'windows-2019'
-        variables:
-          OPAMYES: 1
-          ADD_REVISION: 1
-          CYG_MIRROR: http://mirrors.kernel.org/sourceware/cygwin/
-        strategy:
-          matrix:
-            x64:
-              ARCH: 64
-              MINGW_ARCH: x86_64
-              CYGWIN_SETUP: https://cygwin.com/setup-x86_64.exe
-              CYG_ROOT: C:/cygwin64
-            x86:
-              ARCH: 32
-              MINGW_ARCH: i686
-              CYGWIN_SETUP: https://cygwin.com/setup-x86.exe
-              CYG_ROOT: C:/cygwin
-        steps:
-          - checkout: self
-            submodules: recursive
-          - powershell: |
-              Set-PSDebug -Trace 1
-              choco install --no-progress nsis.portable --version 3.02 -y
-              choco install --no-progress curl wget 7zip.portable -y
-            displayName: Install dependencies
-          - powershell: |
-              Set-PSDebug -Trace 1
-              choco install --no-progress neko --prerelease --ignore-dependencies -s 'https://ci.appveyor.com/nuget/neko' -y
-              neko -version
-              Set-PSDebug -Trace 0
-              Write-Host "##vso[task.setvariable variable=NEKOPATH]C:/ProgramData/chocolatey/lib/neko"
-            displayName: Install Neko
-          - powershell: |
-              Set-PSDebug -Trace 1
-              curl.exe -fsSL -o cygwin-setup.exe --retry 3 $(CYGWIN_SETUP)
-              Start-Process -FilePath "cygwin-setup.exe" -ArgumentList "-B -q -R $(CYG_ROOT) -l C:/tmp -s $(CYG_MIRROR) -P default -P make -P git -P zlib-devel -P rsync -P patch -P diffutils -P curl -P unzip -P tar -P m4 -P perl -P libpcre-devel -P mingw64-$(MINGW_ARCH)-zlib -P mingw64-$(MINGW_ARCH)-gcc-core -P mingw64-$(MINGW_ARCH)-pcre" -Wait
-              curl.exe -fsSL -o "opam.tar.xz" --retry 3 https://github.com/fdopen/opam-repository-mingw/releases/download/0.0.0.2/opam$(ARCH).tar.xz
-              & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'echo "$OLDPWD"')
-              & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && tar -xf opam.tar.xz')
-              & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && bash opam$(ARCH)/install.sh')
-              & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'opam init mingw "https://github.com/fdopen/opam-repository-mingw.git#opam2" --comp 4.07.0+mingw$(ARCH)c --switch 4.07.0+mingw$(ARCH)c --auto-setup --yes 2>&1')
-              & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'opam update --yes 2>&1')
-              & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam pin add haxe . --kind=path --no-action --yes 2>&1')
-              & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'opam install haxe --deps-only --yes 2>&1')
-              & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'opam list')
-              & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'ocamlopt -v')
-            displayName: Install OCaml and OCaml libraries
-          - powershell: Write-Host "##vso[task.prependpath]${env:CYG_ROOT}/usr/$(MINGW_ARCH)-w64-mingw32/sys-root/mingw/bin"
-            displayName: Expose mingw dll files
-          - powershell: |
-              Set-PSDebug -Trace 1
-              & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -s -f Makefile.win libs prebuild 2>&1')
-              & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -s -f Makefile.win -j`nproc` haxe 2>&1')
-              & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -s -f Makefile.win haxelib 2>&1')
-              & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -f Makefile.win echo_package_files package_bin package_installer_win package_choco 2>&1')
-              dir out
-              & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && cygcheck ./haxe.exe')
-              & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && cygcheck ./haxelib.exe')
-            displayName: Build Haxe
-          - task: PublishPipelineArtifact@0
-            inputs:
-              artifactName: 'win$(ARCH)Binaries'
-              targetPath: out
+      - template: extra/azure-pipelines/build-windows.yml
+        parameters:
+          name: BuildWindows64
+          arch: '64'
+
+      - template: extra/azure-pipelines/build-windows.yml
+        parameters:
+          name: BuildWindows32
+          arch: '32'
 
       - job: TestLinux
         dependsOn: BuildLinux
@@ -331,7 +167,7 @@ stages:
             displayName: Test
 
       - job: TestWindows64
-        dependsOn: BuildWindows
+        dependsOn: BuildWindows64
         pool:
           vmImage: 'windows-2019'
         variables:

+ 70 - 0
extra/azure-pipelines/build-linux.yml

@@ -0,0 +1,70 @@
+parameters:
+  name: 'BuildLinux'
+  vmImage: 'ubuntu-16.04'
+
+jobs:
+  - job: ${{ parameters.name }}
+    pool:
+      vmImage: ${{ parameters.vmImage }}
+    variables:
+      OPAMYES: 1
+      ADD_REVISION: 1
+    steps:
+      - checkout: self
+        submodules: recursive
+      - script: |
+          set -ex
+          sudo add-apt-repository ppa:avsm/ppa -y # provides newer version of OCaml and OPAM
+          sudo apt-get update -qqy
+          sudo apt-get install -qqy ocaml-nox camlp4-extra opam libpcre3-dev zlib1g-dev libgtk2.0-dev ninja-build
+        displayName: Install dependencies
+      - script: |
+          set -ex
+          unset MACHINE RELEASE SYSTEM VERSION # https://marc.info/?l=gentoo-commits&m=155026142713994
+          mkdir $HOME/neko
+          pushd $HOME/neko
+          git clone --recursive https://github.com/HaxeFoundation/neko.git .
+          cmake . -DSTATIC_DEPS=all -G Ninja
+          ninja download_static_deps || ninja download_static_deps || ninja download_static_deps
+          ninja
+          sudo ninja install
+          popd
+        displayName: Install Neko
+      - script: |
+          set -ex
+          opam init
+          opam update
+          opam pin add haxe . --no-action
+          opam install haxe --deps-only
+          opam list
+          ocamlopt -v
+        displayName: Install OCaml libraries
+      - script: |
+          set -ex
+          opam config exec -- make -s STATICLINK=1 libs
+          opam config exec -- make -s STATICLINK=1 prebuild
+          opam config exec -- make -s -j`nproc` STATICLINK=1 haxe
+          opam config exec -- make -s haxelib
+          make -s package_bin
+          ls -l out
+          ldd -v ./haxe
+          ldd -v ./haxelib
+        displayName: Build Haxe
+      - task: PublishPipelineArtifact@0
+        inputs:
+          artifactName: 'linuxBinaries'
+          targetPath: out
+      - script: |
+          set -ex
+          make -s xmldoc
+          cat >extra/doc/info.json <<EOL
+            {
+              "commit": "$(Build.SourceVersion)",
+              "branch": "$(Build.SourceBranchName)"
+            }
+          EOL
+        displayName: Build xmldoc
+      - task: PublishPipelineArtifact@0
+        inputs:
+          artifactName: 'xmldoc'
+          targetPath: extra/doc

+ 54 - 0
extra/azure-pipelines/build-mac.yml

@@ -0,0 +1,54 @@
+parameters:
+  name: 'BuildMac'
+  vmImage: 'macOS-10.13'
+
+jobs:
+  - job: ${{ parameters.name }}
+    pool:
+      vmImage: ${{ parameters.vmImage }}
+    variables:
+      OPAMYES: 1
+      ADD_REVISION: 1
+    steps:
+      - checkout: self
+        submodules: recursive
+      - script: |
+          set -ex
+          brew update
+          brew bundle --file=tests/Brewfile --no-upgrade
+        displayName: Install dependencies
+      - script: |
+          set -ex
+          mkdir $HOME/neko
+          pushd $HOME/neko
+          git clone --recursive https://github.com/HaxeFoundation/neko.git .
+          cmake . -DSTATIC_DEPS=all -G Ninja
+          ninja download_static_deps || ninja download_static_deps || ninja download_static_deps
+          ninja -j 4
+          sudo ninja install
+          popd
+        displayName: Install Neko
+      - script: |
+          set -ex
+          opam init
+          opam update
+          opam pin add haxe . --no-action
+          opam install haxe --deps-only
+          opam list
+          ocamlopt -v
+        displayName: Install OCaml libraries
+      - script: |
+          set -ex
+          opam config exec -- make -s STATICLINK=1 "LIB_PARAMS=/usr/local/opt/zlib/lib/libz.a /usr/local/lib/libpcre.a" libs
+          opam config exec -- make -s STATICLINK=1 "LIB_PARAMS=/usr/local/opt/zlib/lib/libz.a /usr/local/lib/libpcre.a" prebuild
+          opam config exec -- make -s -j`sysctl -n hw.ncpu` STATICLINK=1 "LIB_PARAMS=/usr/local/opt/zlib/lib/libz.a /usr/local/lib/libpcre.a" haxe
+          opam config exec -- make -s haxelib
+          make -s package_bin package_installer_mac
+          ls -l out
+          otool -L ./haxe
+          otool -L ./haxelib
+        displayName: Build Haxe
+      - task: PublishPipelineArtifact@0
+        inputs:
+          artifactName: 'macBinaries'
+          targetPath: out

+ 69 - 0
extra/azure-pipelines/build-windows.yml

@@ -0,0 +1,69 @@
+parameters:
+  name: 'BuildWindows'
+  vmImage: 'windows-2019'
+  arch: '64' # or '32'
+
+jobs:
+  - job: ${{ parameters.name }}
+    pool:
+      vmImage: ${{ parameters.vmImage }}
+    variables:
+      OPAMYES: 1
+      ADD_REVISION: 1
+      CYG_MIRROR: http://mirrors.kernel.org/sourceware/cygwin/
+      ${{ if eq(parameters.arch, '64') }}:
+        ARCH: 64
+        MINGW_ARCH: x86_64
+        CYGWIN_SETUP: https://cygwin.com/setup-x86_64.exe
+        CYG_ROOT: C:/cygwin64
+      ${{ if eq(parameters.arch, '32') }}:
+        ARCH: 32
+        MINGW_ARCH: i686
+        CYGWIN_SETUP: https://cygwin.com/setup-x86.exe
+        CYG_ROOT: C:/cygwin
+    steps:
+      - checkout: self
+        submodules: recursive
+      - powershell: |
+          Set-PSDebug -Trace 1
+          choco install --no-progress nsis.portable --version 3.02 -y
+          choco install --no-progress curl wget 7zip.portable -y
+        displayName: Install dependencies
+      - powershell: |
+          Set-PSDebug -Trace 1
+          choco install --no-progress neko --prerelease --ignore-dependencies -s 'https://ci.appveyor.com/nuget/neko' -y
+          neko -version
+          Set-PSDebug -Trace 0
+          Write-Host "##vso[task.setvariable variable=NEKOPATH]C:/ProgramData/chocolatey/lib/neko"
+        displayName: Install Neko
+      - powershell: |
+          Set-PSDebug -Trace 1
+          curl.exe -fsSL -o cygwin-setup.exe --retry 3 $(CYGWIN_SETUP)
+          Start-Process -FilePath "cygwin-setup.exe" -ArgumentList "-B -q -R $(CYG_ROOT) -l C:/tmp -s $(CYG_MIRROR) -P default -P make -P git -P zlib-devel -P rsync -P patch -P diffutils -P curl -P unzip -P tar -P m4 -P perl -P libpcre-devel -P mingw64-$(MINGW_ARCH)-zlib -P mingw64-$(MINGW_ARCH)-gcc-core -P mingw64-$(MINGW_ARCH)-pcre" -Wait
+          curl.exe -fsSL -o "opam.tar.xz" --retry 3 https://github.com/fdopen/opam-repository-mingw/releases/download/0.0.0.2/opam$(ARCH).tar.xz
+          & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'echo "$OLDPWD"')
+          & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && tar -xf opam.tar.xz')
+          & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && bash opam$(ARCH)/install.sh')
+          & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'opam init mingw "https://github.com/fdopen/opam-repository-mingw.git#opam2" --comp 4.07.0+mingw$(ARCH)c --switch 4.07.0+mingw$(ARCH)c --auto-setup --yes 2>&1')
+          & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'opam update --yes 2>&1')
+          & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam pin add haxe . --kind=path --no-action --yes 2>&1')
+          & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'opam install haxe --deps-only --yes 2>&1')
+          & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'opam list')
+          & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'ocamlopt -v')
+        displayName: Install OCaml and OCaml libraries
+      - powershell: Write-Host "##vso[task.prependpath]${env:CYG_ROOT}/usr/$(MINGW_ARCH)-w64-mingw32/sys-root/mingw/bin"
+        displayName: Expose mingw dll files
+      - powershell: |
+          Set-PSDebug -Trace 1
+          & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -s -f Makefile.win libs prebuild 2>&1')
+          & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -s -f Makefile.win -j`nproc` haxe 2>&1')
+          & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -s -f Makefile.win haxelib 2>&1')
+          & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -f Makefile.win echo_package_files package_bin package_installer_win package_choco 2>&1')
+          dir out
+          & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && cygcheck ./haxe.exe')
+          & "$(CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && cygcheck ./haxelib.exe')
+        displayName: Build Haxe
+      - task: PublishPipelineArtifact@0
+        inputs:
+          artifactName: 'win$(ARCH)Binaries'
+          targetPath: out