338 lines
11 KiB
YAML
338 lines
11 KiB
YAML
pr: none
|
|
|
|
schedules:
|
|
- cron: "0 5 * * Mon-Fri"
|
|
displayName: Mon-Fri at 7:00
|
|
branches:
|
|
include:
|
|
- main
|
|
|
|
parameters:
|
|
- name: VSCODE_QUALITY
|
|
displayName: Quality
|
|
type: string
|
|
default: insider
|
|
values:
|
|
- exploration
|
|
- insider
|
|
- stable
|
|
- name: ENABLE_TERRAPIN
|
|
displayName: "Enable Terrapin"
|
|
type: boolean
|
|
default: true
|
|
- name: VSCODE_BUILD_WIN32
|
|
displayName: "🎯 Windows x64"
|
|
type: boolean
|
|
default: true
|
|
- name: VSCODE_BUILD_WIN32_32BIT
|
|
displayName: "🎯 Windows ia32"
|
|
type: boolean
|
|
default: true
|
|
- name: VSCODE_BUILD_WIN32_ARM64
|
|
displayName: "🎯 Windows arm64"
|
|
type: boolean
|
|
default: true
|
|
- name: VSCODE_BUILD_LINUX
|
|
displayName: "🎯 Linux x64"
|
|
type: boolean
|
|
default: true
|
|
- name: VSCODE_BUILD_LINUX_ARM64
|
|
displayName: "🎯 Linux arm64"
|
|
type: boolean
|
|
default: true
|
|
- name: VSCODE_BUILD_LINUX_ARMHF
|
|
displayName: "🎯 Linux armhf"
|
|
type: boolean
|
|
default: true
|
|
- name: VSCODE_BUILD_LINUX_ALPINE
|
|
displayName: "🎯 Alpine Linux"
|
|
type: boolean
|
|
default: true
|
|
- name: VSCODE_BUILD_MACOS
|
|
displayName: "🎯 macOS x64"
|
|
type: boolean
|
|
default: true
|
|
- name: VSCODE_BUILD_MACOS_ARM64
|
|
displayName: "🎯 macOS arm64"
|
|
type: boolean
|
|
default: true
|
|
- name: VSCODE_BUILD_MACOS_UNIVERSAL
|
|
displayName: "🎯 macOS universal"
|
|
type: boolean
|
|
default: true
|
|
- name: VSCODE_BUILD_WEB
|
|
displayName: "🎯 Web"
|
|
type: boolean
|
|
default: true
|
|
- name: VSCODE_PUBLISH
|
|
displayName: "Publish to builds.code.visualstudio.com"
|
|
type: boolean
|
|
default: true
|
|
- name: VSCODE_RELEASE
|
|
displayName: "Release build if successful"
|
|
type: boolean
|
|
default: false
|
|
- name: VSCODE_COMPILE_ONLY
|
|
displayName: "Run Compile stage exclusively"
|
|
type: boolean
|
|
default: false
|
|
- name: VSCODE_STEP_ON_IT
|
|
displayName: "Skip tests"
|
|
type: boolean
|
|
default: false
|
|
|
|
variables:
|
|
- name: ENABLE_TERRAPIN
|
|
value: ${{ eq(parameters.ENABLE_TERRAPIN, true) }}
|
|
- name: VSCODE_QUALITY
|
|
value: ${{ parameters.VSCODE_QUALITY }}
|
|
- name: VSCODE_BUILD_STAGE_WINDOWS
|
|
value: ${{ or(eq(parameters.VSCODE_BUILD_WIN32, true), eq(parameters.VSCODE_BUILD_WIN32_32BIT, true), eq(parameters.VSCODE_BUILD_WIN32_ARM64, true)) }}
|
|
- name: VSCODE_BUILD_STAGE_LINUX
|
|
value: ${{ or(eq(parameters.VSCODE_BUILD_LINUX, true), eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true), eq(parameters.VSCODE_BUILD_LINUX_ALPINE, true), eq(parameters.VSCODE_BUILD_WEB, true)) }}
|
|
- name: VSCODE_BUILD_STAGE_MACOS
|
|
value: ${{ or(eq(parameters.VSCODE_BUILD_MACOS, true), eq(parameters.VSCODE_BUILD_MACOS_ARM64, true)) }}
|
|
- name: VSCODE_CIBUILD
|
|
value: ${{ in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI') }}
|
|
- name: VSCODE_PUBLISH
|
|
value: ${{ and(eq(parameters.VSCODE_PUBLISH, true), eq(variables.VSCODE_CIBUILD, false)) }}
|
|
- name: VSCODE_SCHEDULEDBUILD
|
|
value: ${{ eq(variables['Build.Reason'], 'Schedule') }}
|
|
- name: VSCODE_STEP_ON_IT
|
|
value: ${{ eq(parameters.VSCODE_STEP_ON_IT, true) }}
|
|
- name: VSCODE_BUILD_MACOS_UNIVERSAL
|
|
value: ${{ and(eq(variables['VSCODE_PUBLISH'], true), eq(parameters.VSCODE_BUILD_MACOS, true), eq(parameters.VSCODE_BUILD_MACOS_ARM64, true), eq(parameters.VSCODE_BUILD_MACOS_UNIVERSAL, true)) }}
|
|
|
|
resources:
|
|
containers:
|
|
- container: vscode-x64
|
|
image: vscodehub.azurecr.io/vscode-linux-build-agent:bionic-x64
|
|
endpoint: VSCodeHub
|
|
options: --user 0:0
|
|
- container: vscode-arm64
|
|
image: vscodehub.azurecr.io/vscode-linux-build-agent:stretch-arm64
|
|
endpoint: VSCodeHub
|
|
- container: vscode-armhf
|
|
image: vscodehub.azurecr.io/vscode-linux-build-agent:stretch-armhf
|
|
endpoint: VSCodeHub
|
|
- container: snapcraft
|
|
image: snapcore/snapcraft:stable
|
|
|
|
stages:
|
|
- stage: Compile
|
|
jobs:
|
|
- job: Compile
|
|
pool: compile
|
|
variables:
|
|
VSCODE_ARCH: x64
|
|
steps:
|
|
- template: product-compile.yml
|
|
|
|
- ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_WINDOWS'], true)) }}:
|
|
- stage: Windows
|
|
dependsOn:
|
|
- Compile
|
|
pool:
|
|
vmImage: VS2017-Win2016
|
|
jobs:
|
|
|
|
- ${{ if eq(parameters.VSCODE_BUILD_WIN32, true) }}:
|
|
- job: Windows
|
|
timeoutInMinutes: 90
|
|
variables:
|
|
VSCODE_ARCH: x64
|
|
steps:
|
|
- template: win32/product-build-win32.yml
|
|
|
|
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_WIN32_32BIT, true)) }}:
|
|
- job: Windows32
|
|
timeoutInMinutes: 90
|
|
variables:
|
|
VSCODE_ARCH: ia32
|
|
steps:
|
|
- template: win32/product-build-win32.yml
|
|
|
|
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_WIN32_ARM64, true)) }}:
|
|
- job: WindowsARM64
|
|
timeoutInMinutes: 90
|
|
variables:
|
|
VSCODE_ARCH: arm64
|
|
steps:
|
|
- template: win32/product-build-win32.yml
|
|
|
|
- ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_LINUX'], true)) }}:
|
|
- stage: Linux
|
|
dependsOn:
|
|
- Compile
|
|
pool:
|
|
vmImage: "Ubuntu-18.04"
|
|
jobs:
|
|
|
|
- ${{ if eq(parameters.VSCODE_BUILD_LINUX, true) }}:
|
|
- job: Linux
|
|
container: vscode-x64
|
|
variables:
|
|
VSCODE_ARCH: x64
|
|
NPM_ARCH: x64
|
|
steps:
|
|
- template: linux/product-build-linux.yml
|
|
|
|
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX, true)) }}:
|
|
- job: LinuxSnap
|
|
dependsOn:
|
|
- Linux
|
|
container: snapcraft
|
|
variables:
|
|
VSCODE_ARCH: x64
|
|
steps:
|
|
- template: linux/snap-build-linux.yml
|
|
|
|
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true)) }}:
|
|
- job: LinuxArmhf
|
|
container: vscode-armhf
|
|
variables:
|
|
VSCODE_ARCH: armhf
|
|
NPM_ARCH: armv7l
|
|
steps:
|
|
- template: linux/product-build-linux.yml
|
|
|
|
# TODO@joaomoreno: We don't ship ARM snaps for now
|
|
- ${{ if and(false, eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true)) }}:
|
|
- job: LinuxSnapArmhf
|
|
dependsOn:
|
|
- LinuxArmhf
|
|
container: snapcraft
|
|
variables:
|
|
VSCODE_ARCH: armhf
|
|
steps:
|
|
- template: linux/snap-build-linux.yml
|
|
|
|
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true)) }}:
|
|
- job: LinuxArm64
|
|
container: vscode-arm64
|
|
variables:
|
|
VSCODE_ARCH: arm64
|
|
NPM_ARCH: arm64
|
|
steps:
|
|
- template: linux/product-build-linux.yml
|
|
|
|
# TODO@joaomoreno: We don't ship ARM snaps for now
|
|
- ${{ if and(false, eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true)) }}:
|
|
- job: LinuxSnapArm64
|
|
dependsOn:
|
|
- LinuxArm64
|
|
container: snapcraft
|
|
variables:
|
|
VSCODE_ARCH: arm64
|
|
steps:
|
|
- template: linux/snap-build-linux.yml
|
|
|
|
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ALPINE, true)) }}:
|
|
- job: LinuxAlpine
|
|
steps:
|
|
- template: linux/product-build-alpine.yml
|
|
|
|
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_WEB, true)) }}:
|
|
- job: LinuxWeb
|
|
variables:
|
|
VSCODE_ARCH: x64
|
|
steps:
|
|
- template: web/product-build-web.yml
|
|
|
|
- ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_MACOS'], true)) }}:
|
|
- stage: macOS
|
|
dependsOn:
|
|
- Compile
|
|
pool:
|
|
vmImage: macOS-latest
|
|
jobs:
|
|
|
|
- ${{ if eq(parameters.VSCODE_BUILD_MACOS, true) }}:
|
|
- job: macOS
|
|
timeoutInMinutes: 90
|
|
variables:
|
|
VSCODE_ARCH: x64
|
|
steps:
|
|
- template: darwin/product-build-darwin.yml
|
|
- ${{ if ne(variables['VSCODE_PUBLISH'], 'false') }}:
|
|
- job: macOSSign
|
|
dependsOn:
|
|
- macOS
|
|
timeoutInMinutes: 90
|
|
variables:
|
|
VSCODE_ARCH: x64
|
|
steps:
|
|
- template: darwin/product-build-darwin-sign.yml
|
|
|
|
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_MACOS_ARM64, true)) }}:
|
|
- job: macOSARM64
|
|
timeoutInMinutes: 90
|
|
variables:
|
|
VSCODE_ARCH: arm64
|
|
steps:
|
|
- template: darwin/product-build-darwin.yml
|
|
- ${{ if ne(variables['VSCODE_PUBLISH'], 'false') }}:
|
|
- job: macOSARM64Sign
|
|
dependsOn:
|
|
- macOSARM64
|
|
timeoutInMinutes: 90
|
|
variables:
|
|
VSCODE_ARCH: arm64
|
|
steps:
|
|
- template: darwin/product-build-darwin-sign.yml
|
|
|
|
- ${{ if eq(variables['VSCODE_BUILD_MACOS_UNIVERSAL'], true) }}:
|
|
- job: macOSUniversal
|
|
dependsOn:
|
|
- macOS
|
|
- macOSARM64
|
|
timeoutInMinutes: 90
|
|
variables:
|
|
VSCODE_ARCH: universal
|
|
steps:
|
|
- template: darwin/product-build-darwin.yml
|
|
- ${{ if ne(variables['VSCODE_PUBLISH'], 'false') }}:
|
|
- job: macOSUniversalSign
|
|
dependsOn:
|
|
- macOSUniversal
|
|
timeoutInMinutes: 90
|
|
variables:
|
|
VSCODE_ARCH: universal
|
|
steps:
|
|
- template: darwin/product-build-darwin-sign.yml
|
|
|
|
- ${{ if and(eq(variables['VSCODE_PUBLISH'], true), eq(parameters.VSCODE_COMPILE_ONLY, false)) }}:
|
|
- stage: Mooncake
|
|
dependsOn:
|
|
- ${{ if eq(variables['VSCODE_BUILD_STAGE_WINDOWS'], true) }}:
|
|
- Windows
|
|
- ${{ if eq(variables['VSCODE_BUILD_STAGE_LINUX'], true) }}:
|
|
- Linux
|
|
- ${{ if eq(variables['VSCODE_BUILD_STAGE_MACOS'], true) }}:
|
|
- macOS
|
|
condition: succeededOrFailed()
|
|
pool:
|
|
vmImage: "Ubuntu-18.04"
|
|
jobs:
|
|
- job: SyncMooncake
|
|
displayName: Sync Mooncake
|
|
steps:
|
|
- template: sync-mooncake.yml
|
|
|
|
- ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), or(eq(parameters.VSCODE_RELEASE, true), and(in(parameters.VSCODE_QUALITY, 'insider', 'exploration'), eq(variables['VSCODE_SCHEDULEDBUILD'], true)))) }}:
|
|
- stage: Release
|
|
dependsOn:
|
|
- ${{ if eq(variables['VSCODE_BUILD_STAGE_WINDOWS'], true) }}:
|
|
- Windows
|
|
- ${{ if eq(variables['VSCODE_BUILD_STAGE_LINUX'], true) }}:
|
|
- Linux
|
|
- ${{ if eq(variables['VSCODE_BUILD_STAGE_MACOS'], true) }}:
|
|
- macOS
|
|
pool:
|
|
vmImage: "Ubuntu-18.04"
|
|
jobs:
|
|
- job: ReleaseBuild
|
|
displayName: Release Build
|
|
steps:
|
|
- template: release.yml
|