add native arm64 builds for Windows (#21196)

This commit is contained in:
Alan Ren
2022-11-10 23:13:18 -08:00
committed by GitHub
parent d5246092a5
commit 0a48fcbfaa
9 changed files with 104 additions and 66 deletions

View File

@@ -8,27 +8,51 @@ Azure Data Studio is a data management tool that enables you to work with SQL Se
## **Download the latest Azure Data Studio release** ## **Download the latest Azure Data Studio release**
| Platform | |Platform |Type |Download |
| --------------------------------------- | | --------|-----------------|-------- |
| [Windows User Installer][win-user] | |Windows |User Installer |[64 bit][win-user] |
| [Windows System Installer][win-system] | | |System Installer |[64 bit][win-system] |
| [Windows ZIP][win-zip] | | |.zip |[64 bit][win-zip] |
| [macOS ZIP][osx-zip] | |Linux |.tar.gz |[64 bit][linux-zip] |
| [Linux TAR.GZ][linux-zip] | | |.deb |[64 bit][linux-deb] |
| [Linux RPM][linux-rpm] | | |.rpm |[64 bit][linux-rpm] |
| [Linux DEB][linux-deb] | |Mac |.zip |[Intel Chip][osx-zip] |
[win-user]: https://go.microsoft.com/fwlink/?linkid=2204567
[win-system]: https://go.microsoft.com/fwlink/?linkid=2204568
[win-zip]: https://go.microsoft.com/fwlink/?linkid=2204772
[osx-zip]: https://go.microsoft.com/fwlink/?linkid=2204569
[linux-zip]: https://go.microsoft.com/fwlink/?linkid=2204773
[linux-rpm]: https://go.microsoft.com/fwlink/?linkid=2204774
[linux-deb]: https://go.microsoft.com/fwlink/?linkid=2204570
Go to our [download page](https://aka.ms/getazuredatastudio) for more specific instructions. Go to our [download page](https://aka.ms/getazuredatastudio) for more specific instructions.
## Try out the latest insiders build from `main`: ## Try out the latest insiders build from `main` branch:
- [Windows User Installer - **Insiders build**](https://azuredatastudio-update.azurewebsites.net/latest/win32-x64-user/insider)
- [Windows System Installer - **Insiders build**](https://azuredatastudio-update.azurewebsites.net/latest/win32-x64/insider) |Platform |Type |Download - Insiders Build |
- [Windows ZIP - **Insiders build**](https://azuredatastudio-update.azurewebsites.net/latest/win32-x64-archive/insider) | --------|-----------------|----------------------- |
- [macOS ZIP (Universal) - **Insiders build**](https://azuredatastudio-update.azurewebsites.net/latest/darwin-universal/insider) |Windows |User Installer |[64 bit][in-win-user] [ARM][in-win-user-arm64] |
- [macOS ZIP (Intel Chip) - **Insiders build**](https://azuredatastudio-update.azurewebsites.net/latest/darwin/insider) | |System Installer |[64 bit][in-win-system] [ARM][in-win-system-arm64] |
- [macOS ZIP (Apple Silicon) - **Insiders build**](https://azuredatastudio-update.azurewebsites.net/latest/darwin-arm64/insider) | |.zip |[64 bit][in-win-zip] [ARM][in-win-zip-arm64] |
- [Linux TAR.GZ - **Insiders build**](https://azuredatastudio-update.azurewebsites.net/latest/linux-x64/insider) |Linux |.tar.gz |[64 bit][in-linux-zip] |
| |.deb |[64 bit][in-linux-deb] |
| |.rpm |[64 bit][in-linux-rpm] |
|Mac |.zip |[Universal][in-osx-universal] [Intel Chip][in-osx-zip] [Apple Silicon][in-osx-arm64] |
[in-win-user]: https://azuredatastudio-update.azurewebsites.net/latest/win32-x64-user/insider
[in-win-system]: https://azuredatastudio-update.azurewebsites.net/latest/win32-x64/insider
[in-win-zip]: https://azuredatastudio-update.azurewebsites.net/latest/win32-x64-archive/insider
[in-win-user-arm64]: https://azuredatastudio-update.azurewebsites.net/latest/win32-arm64-user/insider
[in-win-system-arm64]: https://azuredatastudio-update.azurewebsites.net/latest/win32-arm64/insider
[in-win-zip-arm64]: https://azuredatastudio-update.azurewebsites.net/latest/win32-arm64-archive/insider
[in-linux-zip]:https://azuredatastudio-update.azurewebsites.net/latest/linux-x64/insider
[in-linux-deb]:https://azuredatastudio-update.azurewebsites.net/latest/linux-deb-x64/insider
[in-linux-rpm]:https://azuredatastudio-update.azurewebsites.net/latest/linux-rpm-x64/insider
[in-osx-universal]: https://azuredatastudio-update.azurewebsites.net/latest/darwin-universal/insider
[in-osx-zip]: https://azuredatastudio-update.azurewebsites.net/latest/darwin/insider
[in-osx-arm64]: https://azuredatastudio-update.azurewebsites.net/latest/darwin-arm64/insider
See the [change log](https://github.com/Microsoft/azuredatastudio/blob/main/CHANGELOG.md) for additional details of what's in this release. See the [change log](https://github.com/Microsoft/azuredatastudio/blob/main/CHANGELOG.md) for additional details of what's in this release.
Go to our [download page](https://aka.ms/getazuredatastudio) for more specific instructions. Go to our [download page](https://aka.ms/getazuredatastudio) for more specific instructions.
@@ -132,11 +156,3 @@ And of course, we'd like to thank the authors of all upstream dependencies. Ple
Copyright (c) Microsoft Corporation. All rights reserved. Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the [Source EULA](LICENSE.txt). Licensed under the [Source EULA](LICENSE.txt).
[win-user]: https://go.microsoft.com/fwlink/?linkid=2204567
[win-system]: https://go.microsoft.com/fwlink/?linkid=2204568
[win-zip]: https://go.microsoft.com/fwlink/?linkid=2204772
[osx-zip]: https://go.microsoft.com/fwlink/?linkid=2204569
[linux-zip]: https://go.microsoft.com/fwlink/?linkid=2204773
[linux-rpm]: https://go.microsoft.com/fwlink/?linkid=2204774
[linux-deb]: https://go.microsoft.com/fwlink/?linkid=2204570

View File

@@ -12,6 +12,7 @@ const files = [
'.build/langpacks/**/*.vsix', '.build/langpacks/**/*.vsix',
'.build/extensions/**/*.vsix', '.build/extensions/**/*.vsix',
'.build/win32-x64/**/*.{exe,zip}', '.build/win32-x64/**/*.{exe,zip}',
'.build/win32-arm64/**/*.{exe,zip}',
'.build/linux/sha256hashes.txt', '.build/linux/sha256hashes.txt',
'.build/linux/deb/amd64/deb/*.deb', '.build/linux/deb/amd64/deb/*.deb',
'.build/linux/rpm/x86_64/*.rpm', '.build/linux/rpm/x86_64/*.rpm',

View File

@@ -13,7 +13,8 @@ import * as fs from 'fs';
const files = [ const files = [
'.build/langpacks/**/*.vsix', // langpacks '.build/langpacks/**/*.vsix', // langpacks
'.build/extensions/**/*.vsix', // external extensions '.build/extensions/**/*.vsix', // external extensions
'.build/win32-x64/**/*.{exe,zip}', // windows binaries '.build/win32-x64/**/*.{exe,zip}', // windows x64 binaries
'.build/win32-arm64/**/*.{exe,zip}', // windows arm64 binaries
'.build/linux/sha256hashes.txt', // linux hashes '.build/linux/sha256hashes.txt', // linux hashes
'.build/linux/deb/amd64/deb/*.deb', // linux debs '.build/linux/deb/amd64/deb/*.deb', // linux debs
'.build/linux/rpm/x86_64/*.rpm', // linux rpms '.build/linux/rpm/x86_64/*.rpm', // linux rpms

View File

@@ -106,17 +106,28 @@ stages:
timeoutInMinutes: 90 timeoutInMinutes: 90
- stage: Windows - stage: Windows
condition: and(succeeded(), eq(variables['VSCODE_BUILD_WIN32'], true)) condition: and(succeeded(), or(eq(variables['VSCODE_BUILD_WIN32'], true), eq(variables['VSCODE_BUILD_WIN32_ARM64'], true)))
pool: pool:
vmImage: 'windows-2019' vmImage: 'windows-2019'
dependsOn: dependsOn:
- Compile - Compile
jobs: jobs:
- job: Windows - job: Windows_x64
variables:
VSCODE_ARCH: x64
steps:
- template: win32/sql-product-build-win32.yml
condition: and(succeeded(), eq(variables['VSCODE_BUILD_WIN32'], 'true'))
timeoutInMinutes: 90
- job: Windows_ARM64
variables:
VSCODE_ARCH: arm64
RUN_TESTS: false # Do not run tests for arm64 build
condition: and(succeeded(), eq(variables['VSCODE_BUILD_WIN32_ARM64'], 'true'))
steps: steps:
- template: win32/sql-product-build-win32.yml - template: win32/sql-product-build-win32.yml
timeoutInMinutes: 90 timeoutInMinutes: 90
# disable due to invalid machine pool (karlb 3/9/2022) # disable due to invalid machine pool (karlb 3/9/2022)
# - job: Windows_Test # - job: Windows_Test
# condition: and(succeeded(), eq(variables['VSCODE_BUILD_WIN32'], 'true')) # condition: and(succeeded(), eq(variables['VSCODE_BUILD_WIN32'], 'true'))

View File

@@ -1,7 +1,7 @@
. build/azure-pipelines/win32/exec.ps1 . build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
$Arch = "x64" $Arch = $env:VSCODE_ARCH
$Repo = "$(pwd)" $Repo = "$(pwd)"
$Root = "$Repo\.." $Root = "$Repo\.."

View File

@@ -48,7 +48,7 @@ steps:
- powershell: | - powershell: |
. build/azure-pipelines/win32/exec.ps1 . build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
exec { node build/azure-pipelines/common/sql-computeNodeModulesCacheKey.js > .build/yarnlockhash } exec { node build/azure-pipelines/common/sql-computeNodeModulesCacheKey.js $(VSCODE_ARCH) > .build/yarnlockhash }
displayName: Prepare yarn cache key displayName: Prepare yarn cache key
- task: Cache@2 - task: Cache@2
@@ -69,6 +69,7 @@ steps:
- powershell: | - powershell: |
. build/azure-pipelines/win32/exec.ps1 . build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
$env:npm_config_arch="$(VSCODE_ARCH)"
$env:CHILD_CONCURRENCY="1" $env:CHILD_CONCURRENCY="1"
exec { yarn --frozen-lockfile } exec { yarn --frozen-lockfile }
env: env:
@@ -102,8 +103,8 @@ steps:
. build/azure-pipelines/win32/exec.ps1 . build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
exec { yarn gulp "package-rebuild-extensions" } exec { yarn gulp "package-rebuild-extensions" }
exec { yarn gulp "vscode-win32-x64-min-ci" } exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-min-ci" }
exec { yarn gulp "vscode-win32-x64-inno-updater" } exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-inno-updater" }
displayName: Build displayName: Build
env: env:
VSCODE_MIXIN_PASSWORD: $(github-distro-mixin-password) VSCODE_MIXIN_PASSWORD: $(github-distro-mixin-password)
@@ -117,7 +118,7 @@ steps:
vstsFeed: '2191dd5f-4aec-491b-ac50-568bbc331c8a' vstsFeed: '2191dd5f-4aec-491b-ac50-568bbc331c8a'
vstsFeedPackage: '2e355f03-a97e-499a-949b-f02d62b6160c' vstsFeedPackage: '2e355f03-a97e-499a-949b-f02d62b6160c'
vstsPackageVersion: '*' vstsPackageVersion: '*'
condition: and(succeeded(), eq(variables['VSCODE_QUALITY'], 'saw')) condition: and(succeeded(), eq(variables['VSCODE_QUALITY'], 'saw'), ne(variables['VSCODE_ARCH'], 'arm64'))
- powershell: | - powershell: |
# Install TSGOps specific extensions # Install TSGOps specific extensions
@@ -130,7 +131,7 @@ steps:
Move-Item $tempFilePath $zipFilePath Move-Item $tempFilePath $zipFilePath
Expand-Archive $zipFilePath -DestinationPath $adsExtensionPath Expand-Archive $zipFilePath -DestinationPath $adsExtensionPath
displayName: Install SAW Extensions displayName: Install SAW Extensions
condition: and(succeeded(), eq(variables['VSCODE_QUALITY'], 'saw')) condition: and(succeeded(), eq(variables['VSCODE_QUALITY'], 'saw'), ne(variables['VSCODE_ARCH'], 'arm64'))
# - powershell: | @anthonydresser unit tests timeout never existing the node process # - powershell: | @anthonydresser unit tests timeout never existing the node process
# . build/azure-pipelines/win32/exec.ps1 # . build/azure-pipelines/win32/exec.ps1
@@ -158,7 +159,7 @@ steps:
displayName: 'Sign out code' displayName: 'Sign out code'
inputs: inputs:
ConnectedServiceName: 'Code Signing' ConnectedServiceName: 'Code Signing'
FolderPath: '$(agent.builddirectory)/azuredatastudio-win32-x64' FolderPath: '$(agent.builddirectory)/azuredatastudio-win32-$(VSCODE_ARCH)'
Pattern: '*.exe,*.node,resources/app/node_modules.asar.unpacked/*.dll,swiftshader/*.dll,d3dcompiler_47.dll,vulkan-1.dll,libGLESv2.dll,ffmpeg.dll,libEGL.dll,Microsoft.SqlTools.Hosting.dll,Microsoft.SqlTools.ResourceProvider.Core.dll,Microsoft.SqlTools.ResourceProvider.DefaultImpl.dll,MicrosoftSqlToolsCredentials.dll,MicrosoftSqlToolsServiceLayer.dll,Newtonsoft.Json.dll,SqlSerializationService.dll,SqlToolsResourceProviderService.dll,Microsoft.SqlServer.*.dll,Microsoft.Data.Tools.Sql.BatchParser.dll' Pattern: '*.exe,*.node,resources/app/node_modules.asar.unpacked/*.dll,swiftshader/*.dll,d3dcompiler_47.dll,vulkan-1.dll,libGLESv2.dll,ffmpeg.dll,libEGL.dll,Microsoft.SqlTools.Hosting.dll,Microsoft.SqlTools.ResourceProvider.Core.dll,Microsoft.SqlTools.ResourceProvider.DefaultImpl.dll,MicrosoftSqlToolsCredentials.dll,MicrosoftSqlToolsServiceLayer.dll,Newtonsoft.Json.dll,SqlSerializationService.dll,SqlToolsResourceProviderService.dll,Microsoft.SqlServer.*.dll,Microsoft.Data.Tools.Sql.BatchParser.dll'
signConfigType: inlineSignParams signConfigType: inlineSignParams
inlineOperation: | inlineOperation: |
@@ -212,9 +213,9 @@ steps:
- powershell: | - powershell: |
. build/azure-pipelines/win32/exec.ps1 . build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
exec { yarn gulp "vscode-win32-x64-user-setup" } exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-user-setup" }
exec { yarn gulp "vscode-win32-x64-system-setup" } exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-system-setup" }
exec { yarn gulp "vscode-win32-x64-archive" } exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-archive" }
displayName: Archive & User & System setup displayName: Archive & User & System setup
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1 - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1

View File

@@ -8,32 +8,40 @@ Param(
$env:AZURE_STORAGE_ACCESS_KEY_2 = $storageKey $env:AZURE_STORAGE_ACCESS_KEY_2 = $storageKey
$env:AZURE_DOCUMENTDB_MASTERKEY = $documentDbKey $env:AZURE_DOCUMENTDB_MASTERKEY = $documentDbKey
$ExeName = "AzureDataStudioSetup.exe" $Flavors = "x64","arm64"
$SystemExe = "$artifactsDir\win32-x64\system-setup\$ExeName" $FlavorSuffixes = "","-arm64"
$UserExe = "$artifactsDir\win32-x64\user-setup\$ExeName"
$UserExeName = "AzureDataStudioUserSetup.exe"
$ZipName = "azuredatastudio-win32-x64.zip"
$Zip = "$artifactsDir\win32-x64\archive\$ZipName"
$VersionJson = Get-Content -Raw -Path "$artifactsDir\version.json" | ConvertFrom-Json For($i = 0; $i -lt $Flavors.Length; $i++)
$Version = $VersionJson.version {
$Quality = $VersionJson.quality $Flavor = $Flavors[$i]
$CommitId = $VersionJson.commit $FlavorSuffix = $FlavorSuffixes[$i]
$ExeName = "AzureDataStudioSetup.exe"
$SystemExe = "$artifactsDir\win32-$Flavor\system-setup\$ExeName"
$UserExe = "$artifactsDir\win32-$Flavor\user-setup\$ExeName"
$UserExeName = "AzureDataStudioUserSetup.exe"
$ZipName = "azuredatastudio-win32-$Flavor.zip"
$Zip = "$artifactsDir\win32-$Flavor\archive\$ZipName"
$ZipUploadName = "azuredatastudio-windows-$Version" $VersionJson = Get-Content -Raw -Path "$artifactsDir\version.json" | ConvertFrom-Json
$SetupUploadName = "azuredatastudio-windows-setup-$Version" $Version = $VersionJson.version
$UserUploadName = "azuredatastudio-windows-user-setup-$Version" $Quality = $VersionJson.quality
$CommitId = $VersionJson.commit
$assetPlatform = "win32-x64" $ZipUploadName = "azuredatastudio-windows$FlavorSuffix-$Version"
$SetupUploadName = "azuredatastudio-windows$FlavorSuffix-setup-$Version"
$UserUploadName = "azuredatastudio-windows$FlavorSuffix-user-setup-$Version"
If (-NOT ($Quality -eq "stable")) { $assetPlatform = "win32-$Flavor"
$ZipUploadName = "$ZipUploadName-$Quality"
$SetupUploadName = "$SetupUploadName-$Quality" If (-NOT ($Quality -eq "stable")) {
$UserUploadName = "$UserUploadName-$Quality" $ZipUploadName = "$ZipUploadName-$Quality"
$SetupUploadName = "$SetupUploadName-$Quality"
$UserUploadName = "$UserUploadName-$Quality"
}
node $sourcesDir/build/azure-pipelines/common/publish.js $Quality "$assetPlatform-archive" archive "$ZipUploadName.zip" $Version true $Zip $CommitId
node $sourcesDir/build/azure-pipelines/common/publish.js $Quality "$assetPlatform" setup "$SetupUploadName.exe" $Version true $SystemExe $CommitId
node $sourcesDir/build/azure-pipelines/common/publish.js $Quality "$assetPlatform-user" setup "$UserUploadName.exe" $Version true $UserExe $CommitId
} }
node $sourcesDir/build/azure-pipelines/common/publish.js $Quality "$assetPlatform-archive" archive "$ZipUploadName.zip" $Version true $Zip $CommitId
node $sourcesDir/build/azure-pipelines/common/publish.js $Quality "$assetPlatform" setup "$SetupUploadName.exe" $Version true $SystemExe $CommitId
node $sourcesDir/build/azure-pipelines/common/publish.js $Quality "$assetPlatform-user" setup "$UserUploadName.exe" $Version true $UserExe $CommitId

View File

@@ -104,7 +104,7 @@ function buildWin32Setup(arch, target) {
IncompatibleTargetAppId: { 'ia32': product.win32AppId, 'x64': product.win32x64AppId, 'arm64': product.win32arm64AppId }[arch], IncompatibleTargetAppId: { 'ia32': product.win32AppId, 'x64': product.win32x64AppId, 'arm64': product.win32arm64AppId }[arch],
IncompatibleArchAppId: { 'ia32': x64AppId, 'x64': ia32AppId, 'arm64': ia32AppId }[arch], IncompatibleArchAppId: { 'ia32': x64AppId, 'x64': ia32AppId, 'arm64': ia32AppId }[arch],
AppUserId: product.win32AppUserModelId, AppUserId: product.win32AppUserModelId,
ArchitecturesAllowed: { 'ia32': '', 'x64': 'x64', 'arm64': 'arm64' }[arch], ArchitecturesAllowed: { 'ia32': '', 'x64': 'x64', 'arm64': 'arm64 x64' }[arch], //{{SQL CARBON EDIT}} - we still have x64 binaries in SqlToolsService, need to allow x64 binaries for arm64 arch.
ArchitecturesInstallIn64BitMode: { 'ia32': '', 'x64': 'x64', 'arm64': 'arm64' }[arch], ArchitecturesInstallIn64BitMode: { 'ia32': '', 'x64': 'x64', 'arm64': 'arm64' }[arch],
SourceDir: sourcePath, SourceDir: sourcePath,
RepoDir: repoPath, RepoDir: repoPath,

View File

@@ -15,11 +15,11 @@
"win32NameVersion": "Azure Data Studio", "win32NameVersion": "Azure Data Studio",
"win32RegValueName": "azuredatastudio", "win32RegValueName": "azuredatastudio",
"win32AppId": "{{760C8610-682F-4E9B-9C9C-4E1120308DF2}", "win32AppId": "{{760C8610-682F-4E9B-9C9C-4E1120308DF2}",
"win32arm64AppId": "{{D1ACE434-89C5-48D1-88D3-E2991DF85479}", "win32arm64AppId": "{{476E9913-B59B-492B-A75A-9C2866AFF86D}",
"win32x64AppId": "{{6591F69E-6588-4980-81ED-C8FCBD7EC4B8}", "win32x64AppId": "{{6591F69E-6588-4980-81ED-C8FCBD7EC4B8}",
"win32UserAppId": "{{EA2AB3AA-446D-450F-9948-AE5768C1161A}", "win32UserAppId": "{{EA2AB3AA-446D-450F-9948-AE5768C1161A}",
"win32x64UserAppId": "{{1F0FD1CE-9703-4734-8F50-5B5CEEDAE6B9}", "win32x64UserAppId": "{{1F0FD1CE-9703-4734-8F50-5B5CEEDAE6B9}",
"win32arm64UserAppId": "{{3AEBF0C8-F733-4AD4-BADE-FDB816D53D7D}", "win32arm64UserAppId": "{{9312E619-ABD1-458C-84FD-C5F6EA0839DA}",
"win32AppUserModelId": "Microsoft.azuredatastudio", "win32AppUserModelId": "Microsoft.azuredatastudio",
"win32ShellNameShort": "Azure Data Studio", "win32ShellNameShort": "Azure Data Studio",
"darwinBundleIdentifier": "com.azuredatastudio.oss", "darwinBundleIdentifier": "com.azuredatastudio.oss",