diff --git a/README.md b/README.md index 26ee0ddba2..f3088d12ce 100644 --- a/README.md +++ b/README.md @@ -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** -| Platform | -| --------------------------------------- | -| [Windows User Installer][win-user] | -| [Windows System Installer][win-system] | -| [Windows ZIP][win-zip] | -| [macOS ZIP][osx-zip] | -| [Linux TAR.GZ][linux-zip] | -| [Linux RPM][linux-rpm] | -| [Linux DEB][linux-deb] | +|Platform |Type |Download | +| --------|-----------------|-------- | +|Windows |User Installer |[64 bit][win-user] | +| |System Installer |[64 bit][win-system] | +| |.zip |[64 bit][win-zip] | +|Linux |.tar.gz |[64 bit][linux-zip] | +| |.deb |[64 bit][linux-deb] | +| |.rpm |[64 bit][linux-rpm] | +|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. -## Try out the latest insiders build from `main`: -- [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) -- [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) -- [macOS ZIP (Intel Chip) - **Insiders build**](https://azuredatastudio-update.azurewebsites.net/latest/darwin/insider) -- [macOS ZIP (Apple Silicon) - **Insiders build**](https://azuredatastudio-update.azurewebsites.net/latest/darwin-arm64/insider) -- [Linux TAR.GZ - **Insiders build**](https://azuredatastudio-update.azurewebsites.net/latest/linux-x64/insider) +## Try out the latest insiders build from `main` branch: + +|Platform |Type |Download - Insiders Build | +| --------|-----------------|----------------------- | +|Windows |User Installer |[64 bit][in-win-user] [ARM][in-win-user-arm64] | +| |System Installer |[64 bit][in-win-system] [ARM][in-win-system-arm64] | +| |.zip |[64 bit][in-win-zip] [ARM][in-win-zip-arm64] | +|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. 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. 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 diff --git a/build/azure-pipelines/common/copyArtifacts.js b/build/azure-pipelines/common/copyArtifacts.js index c26923b7bf..c5cbae128c 100644 --- a/build/azure-pipelines/common/copyArtifacts.js +++ b/build/azure-pipelines/common/copyArtifacts.js @@ -12,6 +12,7 @@ const files = [ '.build/langpacks/**/*.vsix', '.build/extensions/**/*.vsix', '.build/win32-x64/**/*.{exe,zip}', + '.build/win32-arm64/**/*.{exe,zip}', '.build/linux/sha256hashes.txt', '.build/linux/deb/amd64/deb/*.deb', '.build/linux/rpm/x86_64/*.rpm', diff --git a/build/azure-pipelines/common/copyArtifacts.ts b/build/azure-pipelines/common/copyArtifacts.ts index d2c0e8e542..4ee6af065b 100644 --- a/build/azure-pipelines/common/copyArtifacts.ts +++ b/build/azure-pipelines/common/copyArtifacts.ts @@ -13,7 +13,8 @@ import * as fs from 'fs'; const files = [ '.build/langpacks/**/*.vsix', // langpacks '.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/deb/amd64/deb/*.deb', // linux debs '.build/linux/rpm/x86_64/*.rpm', // linux rpms diff --git a/build/azure-pipelines/sql-product-build.yml b/build/azure-pipelines/sql-product-build.yml index 15696e3a57..7a9849a914 100644 --- a/build/azure-pipelines/sql-product-build.yml +++ b/build/azure-pipelines/sql-product-build.yml @@ -106,17 +106,28 @@ stages: timeoutInMinutes: 90 - 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: vmImage: 'windows-2019' dependsOn: - Compile 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: - template: win32/sql-product-build-win32.yml timeoutInMinutes: 90 - # disable due to invalid machine pool (karlb 3/9/2022) # - job: Windows_Test # condition: and(succeeded(), eq(variables['VSCODE_BUILD_WIN32'], 'true')) diff --git a/build/azure-pipelines/win32/createDrop.ps1 b/build/azure-pipelines/win32/createDrop.ps1 index 3bdc98c80f..e1d54f149d 100644 --- a/build/azure-pipelines/win32/createDrop.ps1 +++ b/build/azure-pipelines/win32/createDrop.ps1 @@ -1,7 +1,7 @@ . build/azure-pipelines/win32/exec.ps1 $ErrorActionPreference = "Stop" -$Arch = "x64" +$Arch = $env:VSCODE_ARCH $Repo = "$(pwd)" $Root = "$Repo\.." diff --git a/build/azure-pipelines/win32/sql-product-build-win32.yml b/build/azure-pipelines/win32/sql-product-build-win32.yml index fb0b03527e..bc286fa305 100644 --- a/build/azure-pipelines/win32/sql-product-build-win32.yml +++ b/build/azure-pipelines/win32/sql-product-build-win32.yml @@ -48,7 +48,7 @@ steps: - powershell: | . build/azure-pipelines/win32/exec.ps1 $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 - task: Cache@2 @@ -69,6 +69,7 @@ steps: - powershell: | . build/azure-pipelines/win32/exec.ps1 $ErrorActionPreference = "Stop" + $env:npm_config_arch="$(VSCODE_ARCH)" $env:CHILD_CONCURRENCY="1" exec { yarn --frozen-lockfile } env: @@ -102,8 +103,8 @@ steps: . build/azure-pipelines/win32/exec.ps1 $ErrorActionPreference = "Stop" exec { yarn gulp "package-rebuild-extensions" } - exec { yarn gulp "vscode-win32-x64-min-ci" } - exec { yarn gulp "vscode-win32-x64-inno-updater" } + exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-min-ci" } + exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-inno-updater" } displayName: Build env: VSCODE_MIXIN_PASSWORD: $(github-distro-mixin-password) @@ -117,7 +118,7 @@ steps: vstsFeed: '2191dd5f-4aec-491b-ac50-568bbc331c8a' vstsFeedPackage: '2e355f03-a97e-499a-949b-f02d62b6160c' vstsPackageVersion: '*' - condition: and(succeeded(), eq(variables['VSCODE_QUALITY'], 'saw')) + condition: and(succeeded(), eq(variables['VSCODE_QUALITY'], 'saw'), ne(variables['VSCODE_ARCH'], 'arm64')) - powershell: | # Install TSGOps specific extensions @@ -130,7 +131,7 @@ steps: Move-Item $tempFilePath $zipFilePath Expand-Archive $zipFilePath -DestinationPath $adsExtensionPath 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 # . build/azure-pipelines/win32/exec.ps1 @@ -158,7 +159,7 @@ steps: displayName: 'Sign out code' inputs: 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' signConfigType: inlineSignParams inlineOperation: | @@ -212,9 +213,9 @@ steps: - powershell: | . build/azure-pipelines/win32/exec.ps1 $ErrorActionPreference = "Stop" - exec { yarn gulp "vscode-win32-x64-user-setup" } - exec { yarn gulp "vscode-win32-x64-system-setup" } - exec { yarn gulp "vscode-win32-x64-archive" } + exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-user-setup" } + exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-system-setup" } + exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-archive" } displayName: Archive & User & System setup - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1 diff --git a/build/azure-pipelines/win32/sql-publish.ps1 b/build/azure-pipelines/win32/sql-publish.ps1 index d10a921d02..049d0b0dda 100644 --- a/build/azure-pipelines/win32/sql-publish.ps1 +++ b/build/azure-pipelines/win32/sql-publish.ps1 @@ -8,32 +8,40 @@ Param( $env:AZURE_STORAGE_ACCESS_KEY_2 = $storageKey $env:AZURE_DOCUMENTDB_MASTERKEY = $documentDbKey -$ExeName = "AzureDataStudioSetup.exe" -$SystemExe = "$artifactsDir\win32-x64\system-setup\$ExeName" -$UserExe = "$artifactsDir\win32-x64\user-setup\$ExeName" -$UserExeName = "AzureDataStudioUserSetup.exe" -$ZipName = "azuredatastudio-win32-x64.zip" -$Zip = "$artifactsDir\win32-x64\archive\$ZipName" +$Flavors = "x64","arm64" +$FlavorSuffixes = "","-arm64" -$VersionJson = Get-Content -Raw -Path "$artifactsDir\version.json" | ConvertFrom-Json -$Version = $VersionJson.version -$Quality = $VersionJson.quality -$CommitId = $VersionJson.commit +For($i = 0; $i -lt $Flavors.Length; $i++) +{ + $Flavor = $Flavors[$i] + $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" -$SetupUploadName = "azuredatastudio-windows-setup-$Version" -$UserUploadName = "azuredatastudio-windows-user-setup-$Version" + $VersionJson = Get-Content -Raw -Path "$artifactsDir\version.json" | ConvertFrom-Json + $Version = $VersionJson.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")) { - $ZipUploadName = "$ZipUploadName-$Quality" - $SetupUploadName = "$SetupUploadName-$Quality" - $UserUploadName = "$UserUploadName-$Quality" + $assetPlatform = "win32-$Flavor" + + If (-NOT ($Quality -eq "stable")) { + $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 diff --git a/build/gulpfile.vscode.win32.js b/build/gulpfile.vscode.win32.js index 3794654d4f..70ddbe3880 100644 --- a/build/gulpfile.vscode.win32.js +++ b/build/gulpfile.vscode.win32.js @@ -104,7 +104,7 @@ function buildWin32Setup(arch, target) { IncompatibleTargetAppId: { 'ia32': product.win32AppId, 'x64': product.win32x64AppId, 'arm64': product.win32arm64AppId }[arch], IncompatibleArchAppId: { 'ia32': x64AppId, 'x64': ia32AppId, 'arm64': ia32AppId }[arch], 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], SourceDir: sourcePath, RepoDir: repoPath, diff --git a/product.json b/product.json index 866a4da719..0751fe326e 100644 --- a/product.json +++ b/product.json @@ -15,11 +15,11 @@ "win32NameVersion": "Azure Data Studio", "win32RegValueName": "azuredatastudio", "win32AppId": "{{760C8610-682F-4E9B-9C9C-4E1120308DF2}", - "win32arm64AppId": "{{D1ACE434-89C5-48D1-88D3-E2991DF85479}", + "win32arm64AppId": "{{476E9913-B59B-492B-A75A-9C2866AFF86D}", "win32x64AppId": "{{6591F69E-6588-4980-81ED-C8FCBD7EC4B8}", "win32UserAppId": "{{EA2AB3AA-446D-450F-9948-AE5768C1161A}", "win32x64UserAppId": "{{1F0FD1CE-9703-4734-8F50-5B5CEEDAE6B9}", - "win32arm64UserAppId": "{{3AEBF0C8-F733-4AD4-BADE-FDB816D53D7D}", + "win32arm64UserAppId": "{{9312E619-ABD1-458C-84FD-C5F6EA0839DA}", "win32AppUserModelId": "Microsoft.azuredatastudio", "win32ShellNameShort": "Azure Data Studio", "darwinBundleIdentifier": "com.azuredatastudio.oss",