Compare commits

...

535 Commits

Author SHA1 Message Date
Karl Burtram
661384637d Port fix for vscode issue 160827 to release/1.40 (#21466)
* port fix for vscode issue 160827 (#21457)

* Update build version

Co-authored-by: Hai Cao <hacao@microsoft.com>
2022-12-21 11:01:44 -08:00
Charles Gagnon
dc838c7bf5 Update changelog for 1.40.1 release (#21297) (#21299)
(cherry picked from commit 8d13d4054a)
2022-11-23 09:38:23 -08:00
Charles Gagnon
3a32679ab5 Update SMO to 4.3.1.2 (#21292)
* Update SMO to 4.3.1.2

* vBump
2022-11-22 09:16:10 -08:00
Lucy Zhang
3fbaa3de93 Fix headers being exported twice from notebooks (#21195) (#21201)
* fix headers being exported twice

* simplify

* fix test
2022-11-10 22:04:01 -08:00
Cory Rivera
ad1c91e3ec Bring back old editor resolving logic to fix saving in notebooks. (#21186) (#21200) 2022-11-10 14:16:58 -08:00
Aasim Khan
a20b3a5d27 Updating id generation logic to avoid substring overlaps (#21181) (#21188) 2022-11-10 13:42:17 -08:00
Cheena Malhotra
59d32e8e89 Fix custom option support in CMS + update providername in provided profile (#21185) 2022-11-10 12:19:38 -08:00
Karl Burtram
dfa72add10 Fix casing on execution plan command titles (#21170) (#21172) 2022-11-08 19:24:35 -08:00
Hai Cao
de8eb2c98e bump STS (#21168) 2022-11-08 16:17:17 -08:00
Karl Burtram
ec073def25 Port VS Code issue 149177 (#21153) (#21159) 2022-11-08 13:04:04 -08:00
Alex Ma
d8279f1a7c Langpack source files update for November release (main branch PR) (#21147) (#21149)
* updated localized XLFS

* update to langpack source files
2022-11-08 10:40:52 -08:00
Alex Ma
9c55574ddd Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20221107163900168. (#21128) (#21137)
Co-authored-by: Alex Hsu <csigs@users.noreply.github.com>
2022-11-07 16:26:39 -08:00
Alex Hsu
c2c1365aff Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20221106163734472. (#21123) 2022-11-07 08:26:04 -08:00
Alex Hsu
8a01c6073e Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20221105154251329. (#21118) 2022-11-07 08:25:39 -08:00
Charles Gagnon
8be87a905a Revert gulp-rename (#21117)
* Revert gulp-rename

* revert gulp task change

* revert localization task
2022-11-05 09:40:24 -07:00
Lewis Sanchez
a864993e60 Extension unit tests should continue on error (#21099)
* Extension unit tests continue on error

* Fix script syntax issue.

* Block syntax issue

* Remove condition expression

* Brings back condition for sql product build linux yml

* Comment out condition in ci.yml

* Adds continue on error clause to ci.yml extension unit tests

* Adds condition to extension unit tests step in ci.yml

* Adds run extension unit test case for fail on error

* Adds fail on error case to Run Extension Unit Tests script

* Explicitly states continue on error false.

* Format adjustment to yml file

* Changes default state to fail on error

* Update .github/workflows/ci.yml

Co-authored-by: Charles Gagnon <chgagnon@microsoft.com>

* Update build/azure-pipelines/linux/sql-product-build-linux.yml

Co-authored-by: Charles Gagnon <chgagnon@microsoft.com>

* Update build/azure-pipelines/linux/sql-product-build-linux.yml

Co-authored-by: Charles Gagnon <chgagnon@microsoft.com>

* Brings back original comment.

Co-authored-by: Charles Gagnon <chgagnon@microsoft.com>
2022-11-04 21:11:14 -07:00
Cory Rivera
facd317b4d Create untitled notebook names in core code rather than in the notebook extension (#21111) 2022-11-04 19:31:55 -07:00
Barbara Valdez
a618ef983a Display tables in html (#20640) 2022-11-04 19:00:19 -07:00
Cory Rivera
5487d26c37 Fix typo in quickInput folder name (#21116) 2022-11-04 18:46:46 -07:00
Alex Ma
103591fcaa [Loc] xlf update 11-4-2022 (#21115) 2022-11-04 17:13:00 -07:00
Cheena Malhotra
a1f5b403db Send telemetry action event when user selects 'Enable Trust Server Certificate' (#21113) 2022-11-04 17:05:32 -07:00
Aasim Khan
00b797b4f3 Adding keyboard shortcuts for column resizing in slickgrid (#21100)
* Adding column resize keyboard shortcuts in slickgrid

* Switching to standard keyboard evt

* Adding comment for the functionality

* Cleaning up code and adding more comments

* Using quick input to get column resize width

* Adding check for negative sizes

* Fixing some stuff
2022-11-04 16:15:04 -07:00
Alan Ren
e98f2e2745 update data protocol client to latest (#21109)
* update data protocol client to latest

* yarn.lock
2022-11-04 13:34:32 -07:00
Candice Ye
6ab25a6a56 Bump to 1.7.0 for nov release (#21107)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-11-04 12:58:34 -07:00
Barbara Valdez
efe56eba8c Notebook scrolling to search result instead of selected cell (#20580)
* do not scroll to current result if there's other cell active

Co-authored-by: Charles Gagnon <chgagnon@microsoft.com>
2022-11-04 11:05:26 -07:00
Lewis Sanchez
f8b7c32030 Centers selected node found by the expensive operation widget (#21103) 2022-11-04 10:34:25 -07:00
Alex Hsu
1159301483 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20221104153859163. (#21105) 2022-11-04 09:27:55 -07:00
Hai Cao
222afe12c1 Encryption welcome dialog followup (#21101) 2022-11-03 20:16:16 -07:00
Alex Ma
25b0e07366 [Loc] update to azurecore and sql xlfs (#21102) 2022-11-03 17:04:34 -07:00
Karl Burtram
f1cb925543 Fix open file on drop-n-drop (#21006) 2022-11-03 13:40:42 -07:00
Alan Ren
5f16251ca7 fix resource deployment notebooks (#21096) 2022-11-03 13:12:07 -07:00
Kim Santiago
d268b9948b Add a few tests for projectController (#21083) 2022-11-03 13:02:53 -07:00
Alan Ren
f23b578c8f vbump sts (#21094) 2022-11-03 11:37:58 -07:00
Cheena Malhotra
85fad2360c Fix tenant Id design for Azure accounts (#21086) 2022-11-03 11:04:37 -07:00
Cory Rivera
90d0310523 Use Existing Install option by default when setting up python on Mac and Linux. (#21093) 2022-11-03 11:01:18 -07:00
Charles Gagnon
ec03b3f4aa vBump extensions with updates to 1DS key (#21092)
* vBump extensions with updates to 1DS key

* Add import

* sql-assessment
2022-11-03 10:05:35 -07:00
Charles Gagnon
fb05c4304e Switch to 1DS endpoint (#20769)
* Update to 1DS client

* remove product config

* Update ai keys

* use our own event prefix

* re-enable telemetry

* Update distro and remove default enableTelemetry

* distro

* Remove asimovKey references

* add comment

* distro

* distro

* distro

* add files that break precommit hook

* cleanup/fixes

* distro

* distro + event prefix update

* distro

* more
2022-11-03 08:45:06 -07:00
Lewis Sanchez
ca78491238 Bumps azdataGraph version to 0.0.56 (#21089)
* Bumps azdataGraph version to 0.0.56

* Removed warning popup since widget only contains avail metrics
2022-11-03 08:16:20 -07:00
Alex Ma
580f53d851 [Loc] XLF update for 11-2-2022 (#21090) 2022-11-02 21:30:24 -07:00
Christopher Suh
e87995527b Removed localization from error messages (#21085)
* removed localization from error messages

* use logger

* localize message displayed to user
2022-11-02 18:17:59 -07:00
Alan Ren
dc5f7854a2 remove preview flag (#21087) 2022-11-02 16:51:44 -07:00
Aasim Khan
355c750fce Removed plan tree as default for screen reader mode (#21082) 2022-11-02 15:30:56 -07:00
Aasim Khan
4823a76833 Adding screen reader optimized mode to slickgrid (#21069) 2022-11-02 15:11:16 -07:00
Candice Ye
f6dbe7539c Change primaryEndpoints to primary (#21079)
* Status update for miaa structure

* Added examples in comments

* Changed primaryEndpoint to primary

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-11-02 14:06:56 -07:00
Alex Ma
64f40a56d8 Add more memory to watch extensions, (#21080) 2022-11-02 13:56:37 -07:00
James Wong
93184f11af Add hostname column in all the view (#21044)
* add hostname in profiler

* add hostname in all profiler view
2022-11-02 12:56:52 -07:00
Lucy Zhang
fe5cfe40d8 remove extra scrollbars (#21071) 2022-11-02 10:06:27 -07:00
Cheena Malhotra
012ab51208 Fix instability when canceling editing connection (#21068) 2022-11-02 10:05:13 -07:00
Cheena Malhotra
b35942ad80 Fix account names to display UTF8 characters (#21070) 2022-11-02 10:04:50 -07:00
Alex Ma
9693c2f466 Added recovery after invalid cell edit for adding a new cell. (#20333)
* Added recovery after invalid cell edit for adding a new cell.

* added updates to lastClickedCell
2022-11-02 09:42:32 -07:00
Alex Ma
8a51bc91b4 Add loading spinner for connection tree element refresh (#20621)
* added loading status to tree elements during refresh

* added message

* added lambda function

* added async

* moved addtraits to below null check

* Added debug lines for now

* added wip stack

* moved loading icon logic to inside tree item code

* added dispose logic

* Added comment explaining actions

* removed reference to NodeJs Timeout

* added showLoading status to Tree creation utils

* fixed spaces

* removed unnecessary space

* removed unnecessary timer for more responsive results

* removed call in connectionTreeActions test

* added fix to test

* stick to refresh only

* added 100 ms timeout

* added request comment
2022-11-02 09:42:06 -07:00
Alex Ma
bb701c4fcf added fix to localization task (#21063) 2022-11-02 09:41:30 -07:00
Charles Gagnon
649b23e6c8 Add mark.js and jquery typings (#21066) 2022-11-02 09:18:03 -07:00
Alan Ren
9d921e4efc vbump extensions (#21065)
* vbump after the new service downloader change

* webpack import extension

* undo webpack
2022-11-01 21:55:50 -07:00
Candice Ye
3ecea1af34 Status dictionary update for MIAA (#21050)
* Status update for miaa structure

* Added examples in comments

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-11-01 14:58:27 -07:00
Lewis Sanchez
3295add69a Updates @xmldom/xmldom package version from 0.8.3 to 0.8.4 (#21061) 2022-11-01 13:54:48 -07:00
brian-harris
742c18b97b validation integration WIP 10/24 (#21059) 2022-11-01 12:19:15 -07:00
Cheena Malhotra
ccb0c86b22 Update STS to v4.3.0.45 (#21057) 2022-11-01 12:03:18 -07:00
Charles Gagnon
05841fc0d6 Cleanup encryption dialog (#21058)
* Cleanup encryption dialog

* reorder
2022-11-01 11:43:04 -07:00
Cheena Malhotra
a967e90d4c Add dashboard navigation to database when connected to a database (#21056) 2022-11-01 10:57:11 -07:00
Cheena Malhotra
d9fb09912f Fix compilation error with Notification Error Dialog (#21054)
Make openerService optional
2022-11-01 10:30:09 -07:00
Cheena Malhotra
f5a3a9ad8c Update error dialog to include instructions text for SSL cert validation failure (#21036) 2022-11-01 09:59:50 -07:00
Cheena Malhotra
1de199dbd6 Fix zoom reset behavior when adding new connection (#21040) 2022-11-01 09:53:58 -07:00
Hai Cao
7ee9a22f03 add Encryption related welcome msg (#21048) 2022-11-01 09:42:16 -07:00
Cheena Malhotra
bb24eb29c5 Fix issue with SQL Database Projects unable to connect due to default encryption (#21010) 2022-11-01 09:26:37 -07:00
Barbara Valdez
2d5c168182 Update @vscode/ripgrep path (#21052) 2022-11-01 08:29:25 -07:00
junierch
a9cc71b877 Add Hyperscale as service tier for SqlDB (#20574)
Feature approved.
2022-11-01 11:10:57 -04:00
Kim Santiago
bd7d44ad31 Add image tag dropdown for publish to docker in ADS (#21029)
* add image tag dropdown to publish dialog

* cleanup

* add filtering and move default tag to the first in the dropdown

* fix test
2022-10-31 18:02:03 -07:00
Cheena Malhotra
0ac83852c7 Update to latest STS release (#21047) 2022-10-31 15:07:28 -07:00
Karl Burtram
e0e333c35f Fix lost results on query editor save (#21043)
* Fix lost results on query editor save

* Fix typos
2022-10-31 14:51:12 -07:00
Charles Gagnon
4ade808695 Re-enable extension media building (#21041)
* Re-enable extension media building

* Fix build
2022-10-31 10:25:56 -07:00
Barbara Valdez
275a772496 Reimplement drag and drop with the new interface (#21037)
* re enable drag and drop in book tree view
2022-10-31 10:12:23 -07:00
Cheena Malhotra
68b91089db Fix population of username/password on loading saved profile (#21039) 2022-10-28 22:41:59 -07:00
Cheena Malhotra
f3fcaa21da Show Trust server certificate on dialog and fix bool select-box defaults (#21020) 2022-10-28 19:43:43 -07:00
Aasim Khan
998b528680 Fixing schema compare checkbox column functions (#21025)
* Fixing select checkbox event and data state changes

* Only subscribing to event when check all is present

* converting object to map

* logic cleanup
2022-10-28 18:15:48 -07:00
Cheena Malhotra
0bfb220538 Fix bug where username/password values not clearing. (#21033) 2022-10-28 17:14:40 -07:00
Raymond Truong
0dc8e18230 [SQL Migration] Consume more detailed migration states (#20490)
* WIP

* Add new states

* Missed a few spots

* Update logic

* Update DatabaseMigrationProperties

* Test: add mocks

* Update a few more references

* Fix warnings

* Remove mocks

* Update cutover logic

* Address PR feedback
2022-10-28 17:14:12 -07:00
Cory Rivera
f4711d3c9c Remove unused ClientSession members. (#21031) 2022-10-28 15:37:59 -07:00
Cory Rivera
82adcc0f20 Fix issues with loading aliased kernels in notebooks (#21018) 2022-10-28 13:22:52 -07:00
Alex Hsu
5fdb20f79c Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20221027153832889. (#21014)
Co-authored-by: Karl Burtram <karlb@microsoft.com>
2022-10-28 13:17:22 -07:00
Alex Hsu
a6589d6393 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20221028153820878. (#21028) 2022-10-28 13:13:14 -07:00
Hai Cao
e28c3894f6 Fix settings referring to VS Code (#21019)
* update VS Code to ADS in settings

* update github extension setting from VS Code to ADS

* update description of github extension
2022-10-28 13:01:58 -07:00
Raymond Truong
a734c9d244 [SQL Migration] Misc UI improvements (#20723)
* Add TrustServerCertificate to request body

* Preselect all dbs for migration

* Make disabled checkbox not auto selected

* Clarify assessment results in card

* Fix incorrect number of dbs ready for migration without issues to MI

* Fix SQL DB assessment results incorrectly greying out dbs with MI blocking issues

* Revert "Clarify assessment results in card"

This reverts commit e8b83f3c19a20ba29133aaa68c4644b04d4154fe.

* Revert "Fix incorrect number of dbs ready for migration without issues to MI"

This reverts commit d4e10875d132dd218d95be91ae7d46672e247706.

* Revert "Fix SQL DB assessment results incorrectly greying out dbs with MI blocking issues"

This reverts commit e2a7dcd7352d1c215052a2f6f3f6130fc710eff8.

* Add new fields

* Fix null reference exception in SKU rec with save and close

* Remove unused files

* Warnings for in progress migrations in list view

* Fix unscrollable assessment results

* Fix updating SKU parameters before recommendations are ready

* Remove checksum info box

* Address PR feedback
2022-10-28 10:59:53 -07:00
Aasim Khan
968f4c7aa4 Fixing result grid plans not opening execution plan editor. (#21022) 2022-10-28 10:28:54 -07:00
Karl Burtram
ab946e1b3d Update to latest Electron 17 (#21015) 2022-10-28 10:27:21 -07:00
Charles Gagnon
9ea5a66c52 Fix embedded images not rendering (#21021) 2022-10-27 22:59:03 -07:00
Cory Rivera
5f6eed12c2 Re-enable .NET Interactive in Ipynb notebooks (#21002) 2022-10-27 13:49:37 -07:00
junierch
facdb2b0ae Junierch/db list migration (#20751)
* remove Last Backup colum on assessment db list.

* column cleanup

* using sqlutils

* typo fixed

* Typo fixed

* use providerid from connection
2022-10-27 15:37:20 -04:00
Sakshi Sharma
cc8afa97d0 Update test names from "Electron" to "Core " (#20917)
* Update test naming convention from Electron to Core to avoid confusions

* Added comments

* Fix comment placement

* Remove CARBON EDIT from sql-* files
2022-10-27 11:08:26 -07:00
Aasim Khan
512eba5675 Remove preview checks from ep (#21008) 2022-10-27 10:05:16 -07:00
Hai Cao
540ebd6f7f remove "New File..." from File menu (#20999)
* remove New File... from File menu

* doc
2022-10-27 09:45:37 -07:00
Charles Gagnon
8534b12ee5 Fix extension gallery engine version check (#21000)
* Fix extension gallery engine version check

* disable extension scanner tests

* edit tag
2022-10-26 22:46:03 -07:00
Charles Gagnon
39e9018b7c Add/update providerConnectionInfo.getOptionsKey tests (#21001) 2022-10-26 22:45:40 -07:00
Aasim Khan
1743c7ea13 Fixes: (#21004)
1. Navigation info announcement when user enter graph
2. Allowing users to expand/collapse button
3. Tooltips shown only when enter is pressed
2022-10-26 22:16:36 -07:00
Alex Hsu
fae8ffbe25 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20221017153540816. (#20860)
Co-authored-by: Karl Burtram <karlb@microsoft.com>
2022-10-26 19:34:14 -07:00
Alex Hsu
2c388b2e0b Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20221016153845711. (#20859) 2022-10-26 19:30:12 -07:00
Alex Hsu
15a9567326 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20221015154310234. (#20858) 2022-10-26 19:29:31 -07:00
Alan Ren
e691263956 fix the contrast rate issue of couple view icons in activity bar (#21003)
* fix connections and notebooks view icon issue

* update name

* remove css reference
2022-10-26 19:27:42 -07:00
Cheena Malhotra
4b4c5d8ffe Change back to existing identity design (#20991) 2022-10-26 16:44:29 -07:00
Hai Cao
88cc7b333e Remove unstable test step from win32 product build (#20996) 2022-10-26 15:20:13 -07:00
Hai Cao
ef29f3d693 Restore the SQL Server 2019 notebook download (#20979)
* Restore the SQL Server 2019 notebook download

* try updating task

* add SQL CARBON EDIT

Co-authored-by: Karl Burtram <karlb@microsoft.com>
2022-10-26 12:12:23 -07:00
Kim Santiago
15b7c814f6 Remove preview from 2022 in sql projects (#20940)
* remove preview from 2022 in sql projects

* update new project baselines

* update system dacpac tests

* fix other 150 system dacpac test checks
2022-10-26 09:11:28 -07:00
Cheena Malhotra
b13e0cf615 Fix get Modal value validation (#20976) 2022-10-26 08:10:53 -07:00
Charles Gagnon
d5cf088ba7 Remove preview flag from query history (#20975) 2022-10-25 15:53:14 -07:00
Charles Gagnon
1ffb71f73a Update SQL grammar (#20970) 2022-10-25 12:55:32 -07:00
Alan Ren
c811303570 bring back welcome page (#20969) 2022-10-25 12:35:32 -07:00
Cheena Malhotra
987aed3b92 Add custom option support on Connection dialog + move Encrypt to connection dialog (#20959) 2022-10-25 12:19:40 -07:00
Cheena Malhotra
44d03085ad Bump STS to bring MDS 5 support along with other changes (#20966) 2022-10-25 11:05:17 -07:00
Aasim Khan
4d5e9adbc1 Adding option to sort columns using F3 key in SlickGrid. (#20897) 2022-10-25 08:22:31 -07:00
Christopher Suh
ab958a2724 quick draft PR for not throwing when looking for a chunked password (#150402) (#20956)
* quick draft PR for not throwing when looking for a chunked password

* update comment with more info

Co-authored-by: Ian Huff <ianhuff@Ians-MacBook-Pro.local>

Co-authored-by: Ian Huff <ianhu@microsoft.com>
Co-authored-by: Ian Huff <ianhuff@Ians-MacBook-Pro.local>
2022-10-24 17:48:06 -07:00
Charles Gagnon
31bfc2fc94 Add accessibility information to query history items (#20958)
* Add accessibility information to query history items

* bump version
2022-10-24 17:29:59 -07:00
Charles Gagnon
5032685162 Notebook cleanup (#20954) 2022-10-24 15:32:42 -07:00
Charles Gagnon
a64a33e091 ModeService to LanguageService var names (#20949) 2022-10-24 13:57:03 -07:00
Karl Burtram
de9dd34275 Fix Notebook language ids (#20938) 2022-10-24 13:56:10 -07:00
Kim Santiago
5d896cd8cd update schema compare azdata dependency to 1.40.0 (#20944) 2022-10-24 13:31:29 -07:00
Alan Ren
42d2c6d656 Fix disabled state for debug toolbar icons (#149172) (#20942)
* Use opacity for disable debug toolbar icons

* Update action bar disabled foreground styles

Co-authored-by: David Dossett <ddossett@microsoft.com>
2022-10-24 12:19:19 -07:00
Alan Ren
c48dccc1a2 fix designer grid sizing issue (#20939) 2022-10-24 10:43:50 -07:00
Karl Burtram
7f0dd5ac1d Load angular prior to loader.js (#20934)
* Load angular prior to loader.js

* Bump distro
2022-10-24 09:00:55 -07:00
Cheena Malhotra
de3683dd01 Fix status badge (#20930) 2022-10-22 16:16:34 -07:00
Karl Burtram
f4837c416f Fix module load issue in azurecore (#20929) 2022-10-22 11:41:17 -07:00
Karl Burtram
d95dcb1905 Disable failing integration tests (#20928)
* Disable failing integration tests

* Disable flakey test case for investigation
2022-10-22 10:04:57 -07:00
Karl Burtram
39f8bc46ef Reenable integration tests (#20926) 2022-10-22 01:26:43 -07:00
Karl Burtram
350e94abfe Revert "Update packages to fix CG alerts (#20922)" (#20927)
This reverts commit 97c070be13.
2022-10-22 01:26:33 -07:00
Karl Burtram
5a7ae8a3d0 Reenable disabled tests post VSCode refresh (#20899)
* Reenable disabled tests

* Extension unit test updates

* Turn off data workspace tests on Linux

* Keep integration and smoke tests disabled
2022-10-21 21:40:52 -07:00
Alan Ren
3e1f2b0d9d set svgmin option (#20923)
* disable removeViewBox option

* add comment
2022-10-21 21:20:51 -07:00
Sakshi Sharma
97c070be13 Update packages to fix CG alerts (#20922)
* Update packages to fix CG alerts

* Reverting version bump for vscode-universal-bundler because of build break
2022-10-21 18:03:49 -07:00
Aasim Khan
84305c32c0 Adding accessible tooltips and tooltip based alerts (#20912) 2022-10-21 14:28:27 -07:00
Karl Burtram
daf81cc9e7 Fix extension load issues on insider build (#20920) 2022-10-21 14:07:22 -07:00
Karl Burtram
c42620d7d6 Revert mixin script to fix insiders build (#20918)
* Revert mixin script

* Create a sql specific mixin file
2022-10-21 14:07:10 -07:00
Sakshi Sharma
2a2ac74032 Cleanup generated test files and folders for Sql DB projects (#20862)
* Cleanup generated test files and folders

* Add await to fix tests
2022-10-21 13:00:03 -07:00
Kim Santiago
8acda681b4 move publish to docker quickpick code to its own file (#20871) 2022-10-21 11:09:51 -07:00
Cheena Malhotra
0abb8da026 Fix Edit Connection behavior that affects multiple areas working with edited connection (#20907) 2022-10-21 11:03:10 -07:00
Sakshi Sharma
5398339af9 Update playwright version from 1.21.0 to 1.26.0 (#20900)
* Bump jpeg-js version from 0.4.3 to 0.4.4

* Update playwright version in package.json

* Update version to 1.26.0 to match vscode
2022-10-21 10:04:08 -07:00
James Wong
533e1ec1b9 add hostname in profiler (#20909) 2022-10-20 19:33:39 -07:00
Alan Ren
5c8644b94b fix the server action icon's size issue (#20906)
* fix the server action icon's size issue

* move the css styles to sql folder
2022-10-20 19:31:47 -07:00
Barbara Valdez
1ac141b381 remove smooth behavior from scroll for code cells (#20905) 2022-10-20 17:14:52 -07:00
Aasim Khan
5942980300 Adding missing stream icons for execution plan (#20896) 2022-10-20 15:24:30 -07:00
Aasim Khan
e6b36cec0f Changing tree grid toggle icon color when the cell is selected (#20868)
* Changing toggle color when selected

* Using styles to support chevron coloring

* Adding escape to fix hygiene issues

* Fixing hygiene error
2022-10-20 13:53:28 -07:00
Karl Burtram
d5bb8276ce Revert source map publishing for build break (#20887) 2022-10-20 00:12:51 -07:00
Karl Burtram
21462e382d Fix publish types CI task (#20888) 2022-10-19 23:02:48 -07:00
Karl Burtram
318bfe62ee Fix CI build breaks (#20884)
* Fix CI build breaks

* Update filters
2022-10-19 21:47:49 -07:00
Aasim Khan
d5c63f4bfb Fixing aria bug (#20872) 2022-10-19 19:39:46 -07:00
Karl Burtram
8a3d08f0de Merge vscode 1.67 (#20883)
* Fix initial build breaks from 1.67 merge (#2514)

* Update yarn lock files

* Update build scripts

* Fix tsconfig

* Build breaks

* WIP

* Update yarn lock files

* Misc breaks

* Updates to package.json

* Breaks

* Update yarn

* Fix breaks

* Breaks

* Build breaks

* Breaks

* Breaks

* Breaks

* Breaks

* Breaks

* Missing file

* Breaks

* Breaks

* Breaks

* Breaks

* Breaks

* Fix several runtime breaks (#2515)

* Missing files

* Runtime breaks

* Fix proxy ordering issue

* Remove commented code

* Fix breaks with opening query editor

* Fix post merge break

* Updates related to setup build and other breaks (#2516)

* Fix bundle build issues

* Update distro

* Fix distro merge and update build JS files

* Disable pipeline steps

* Remove stats call

* Update license name

* Make new RPM dependencies a warning

* Fix extension manager version checks

* Update JS file

* Fix a few runtime breaks

* Fixes

* Fix runtime issues

* Fix build breaks

* Update notebook tests (part 1)

* Fix broken tests

* Linting errors

* Fix hygiene

* Disable lint rules

* Bump distro

* Turn off smoke tests

* Disable integration tests

* Remove failing "activate" test

* Remove failed test assertion

* Disable other broken test

* Disable query history tests

* Disable extension unit tests

* Disable failing tasks
2022-10-19 19:13:18 -07:00
Cory Rivera
33c6daaea1 Correctly route notebook serialization requests to SQL Tools Service. (#20874) 2022-10-19 15:37:41 -07:00
brian-harris
14cbe09a20 hotfix sql-migration extension for release to PROD, remove usage of unreleased ads enum (#20879)
* remove enum and vbump hotfix

* add update comments
2022-10-19 14:31:59 -07:00
Alan Ren
adc908c04b additional variable for macOS arm64 jobs (#20875)
* additional flag for macos arm64

* simplify

* more
2022-10-19 09:26:41 -07:00
Kim Santiago
0f46b3ef9b update vscode-mssql.d.ts to match the one in vscode-mssql (#20861)
* update vscode-mssql.d.ts to match the one in vscode-mssql

* format file
2022-10-17 13:54:49 -07:00
Kim Santiago
5106a08ea3 Add include permissions option for create project from db in vscode (#20845)
* add quickpick for include permissions option

* update vscode-mssql.d.ts

* add const

* undo whitespace change
2022-10-17 11:18:42 -07:00
Cheena Malhotra
4c565b31bc Update crates for windows builds (#20853) 2022-10-16 22:40:59 -07:00
Alan Ren
484fbe836d fix select top 1000 issue for Synapse (#20857) 2022-10-15 10:40:29 -07:00
Alan Ren
5d731fe0ad table cell selection improvement (#20854)
* Support SHIFT key for table cell selection

* fix for mac

* PR comment
2022-10-14 19:44:14 -07:00
Alex Ma
a773be1bba [Loc] update to xlfs (#20856) 2022-10-14 17:00:23 -07:00
Lewis Sanchez
f51e5c370b Registers all disposable items for query execution plans (#20851) 2022-10-14 14:50:25 -07:00
Alex Hsu
55c453700d Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20221014154854270. (#20850) 2022-10-14 09:56:17 -07:00
Charles Gagnon
f75472f410 Add comment (#20849)
(cherry picked from commit 63e06f6b0973e87f10d2ea9af0228d92c0d0ab12)
2022-10-13 21:42:50 -07:00
Charles Gagnon
f001adc6d6 Disable Kusto & Azure Monitor during smoke tests (#20847) 2022-10-13 21:11:12 -07:00
Raymond Truong
9712d54096 [SQL Migration] Update server name query (#20848)
* Update server name query

* Escape quotes
2022-10-13 20:18:33 -07:00
brian-harris
fb04db8c24 target database mapping and selection bug (#20840)
* target database mapping and selection bug

* bump version to 1.1.0 for sql db release
2022-10-13 18:36:56 -07:00
brian-harris
d5742bbd54 fix bugs in navigation validation (#20844)
* fix bugs in navigation validation

* fix sql db tutorial link, convert doc links
2022-10-13 18:36:25 -07:00
Cheena Malhotra
80bdc3d6be Remove deprecated "Asynchronous Processing" connection property (#20830) 2022-10-13 17:00:51 -07:00
Alan Ren
23dfe62742 show error when scripting fails (#20843) 2022-10-13 16:55:40 -07:00
Benjamin Russell
38eb0c8429 Export to Markdown (#20661)
* Give saveAsExcel its own config options

* Wired up correctly

* Merge conflicts

* PR comments 1

Co-authored-by: Ben Russell <russellben@microsoft.com>
2022-10-13 16:08:21 -07:00
Lucy Zhang
bee1c6be44 mark failing tests as unstable (#20841) 2022-10-13 15:32:41 -07:00
Charles Gagnon
7665d12ecc Bump query history version (#20842) 2022-10-13 14:14:41 -07:00
Cory Rivera
806580fe44 Use SQL kernel as default when opening a notebook with an unknown provider (#20828) 2022-10-13 12:38:43 -07:00
Kim Santiago
00800db506 Add include permissions option to create project from db dialog (#20823)
* add import permissions option to create project from db dialog

* change 'import' to 'include'

* update azdata dependency version

* update STS to 4.3.0.37

* fix test
2022-10-13 11:01:37 -07:00
Alex Hsu
ed2a503c1b Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20221013153919124. (#20836) 2022-10-13 09:56:36 -07:00
dependabot[bot]
8072251fbc Bump @xmldom/xmldom in /extensions/sql-database-projects (#20816)
Bumps [@xmldom/xmldom](https://github.com/xmldom/xmldom) from 0.8.2 to 0.8.3.
- [Release notes](https://github.com/xmldom/xmldom/releases)
- [Changelog](https://github.com/xmldom/xmldom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/xmldom/xmldom/compare/0.8.2...0.8.3)

---
updated-dependencies:
- dependency-name: "@xmldom/xmldom"
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-13 09:05:07 -07:00
Alan Ren
684556b1ff fix job name (#20832) 2022-10-12 20:18:56 -07:00
Alan Ren
ecd2134f63 more control over the release step condition (#20820)
* more control over the release step condition

* update comment

* update comments

* new implementation

* update comments
2022-10-12 20:13:02 -07:00
Alan Ren
359e9657c5 avoid unnecessary connections in azure view (#20817)
* avoid unnecessary connections in azure view

* pr comments
2022-10-12 20:00:09 -07:00
Lewis Sanchez
51d5f07c77 Updates azdataGraph version from 0.0.45 to 0.0.46 (#20827) 2022-10-12 17:38:58 -07:00
Alex Ma
8ae1e1630a [Loc] added changes for executionPlan strings (#20829) 2022-10-12 17:00:21 -07:00
Alan Ren
d4552cf176 make the json regex better (#20826)
* make the json regex better

* comment
2022-10-12 16:26:32 -07:00
Lewis Sanchez
61fb5db66c Adds titles to execution plan widget combo boxes (#20815)
* Adds titles to execution plan widget combo boxes

* Renames const and title
2022-10-12 16:03:02 -07:00
Lewis Sanchez
e24068baaa Fixes resize bug affecting the find node widget (#20824) 2022-10-12 14:52:08 -07:00
Cory Rivera
acc9780f04 Update kernels dropdown after installing a notebook extension (#20759) 2022-10-12 14:44:31 -07:00
brian-harris
03fcaf837c fix caching issue with connection profile (#20739) 2022-10-12 09:45:31 -07:00
Lewis Sanchez
636efa841d Fixes same title for reverse alphabetical properties button (#20813) 2022-10-11 20:40:46 -07:00
Kim Santiago
1f1ea1ab59 fix sql projects vscode extension not activating because of not finding azdata (#20814) 2022-10-11 16:22:38 -07:00
Charles Gagnon
3005d5435f Add preview features enabled flag to issue reporter info (#20808)
* Add preview features enabled flag to issue reporter info

* fix tests

* fix key
2022-10-11 15:46:32 -07:00
Charles Gagnon
22a2bce55e Query history telemetry fixes (#20812) 2022-10-11 15:46:05 -07:00
Alan Ren
e05afc3cf9 consistent output file naming (#20811) 2022-10-11 14:12:37 -07:00
Jamie Magee
1a347f0eeb Add $schema to cgmanifest.json (#20493) 2022-10-11 13:26:44 -07:00
Cheena Malhotra
8bc5730fe3 Resolve conflict in Loc file auto-commit (#20809) 2022-10-11 12:42:10 -07:00
Alan Ren
ee2905d372 Add Apple Silicon build and Universal build for macOS (#20776)
* use stages

* fix indention

* add jobs section

* fix error

* indention

* arm64 for macos

* other stages not run

* fix container

* fix

* fix stage

* skip tests

* variable

* dependency

* fix name error

* sts

* const

* fall back to x64

* pass in variable

* universal flavor

* fix universal

* fix path

* remove

* special processing

* return on error

* copy instead of move

* restore sts

* release

* fix error

* Fix readme

* remove commented code

* add comments

* add issue

* update comment

* pr comments

* delete universal yml

* update the generated js file
2022-10-10 19:02:56 -07:00
Alex Ma
bd8e9ec0f0 [Loc] small update to loc (#20798) 2022-10-10 16:37:35 -07:00
Lewis Sanchez
5ec1d3a8e6 Adds add execution plan button and context menu to the bottom half of the plan comparison screen (#20770)
* Adds context menu option placeholder plan container

* Adds context menu and button to add execution plan to placeholder

* Minor clean up

* Replaces taskbar with button to add execution plans

* Removes unneeded CSS styling.

* Adjusts button type to secondary
2022-10-10 14:53:27 -07:00
Charles Gagnon
d76ccab65c Handle unsupported providers when launching from command line (#20793) 2022-10-10 13:04:53 -07:00
Charles Gagnon
93008b51c4 Directly install missing provider extensions (#20771)
* Directly install missing provider extensions

* Update interface
2022-10-10 13:04:07 -07:00
Barbara Valdez
5d63f0d229 remove smooth behavior (#20794) 2022-10-10 11:48:09 -07:00
Alex Hsu
910e37dfce Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20221010154033643. (#20791)
Co-authored-by: Alex Ma <alma1@microsoft.com>
2022-10-10 09:26:58 -07:00
Alex Hsu
13d9f5b82a Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20221009154223734. (#20774) 2022-10-10 09:17:47 -07:00
Alex Ma
711203ac40 [Loc] update to sql XLF for 10/7/2022 (#20772) 2022-10-07 16:31:25 -07:00
Alex Hsu
676f5f390c Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20221007153957789. (#20766) 2022-10-07 13:48:53 -07:00
Aasim Khan
9f5ee32825 Adding new filter icon (#20762) 2022-10-06 21:34:21 -07:00
Lewis Sanchez
00ff3ac50f Add functionality to expand and collapse all property rows. (#20746)
* Adds ability to expand and collapse all property rows

* Removes duplicate collapse/expand all logic

* Code review changes

* Removes unnecessary enum

* Updates comment

* Code review changes

* Code review changes

* Minor clean up

* Renames expand/collapse method

* Corrects collapse all action IDs and labels
2022-10-06 20:47:20 -07:00
Alex Ma
5b07fbef2a [Loc] SQL xlf update (#20761) 2022-10-06 16:10:58 -07:00
Aasim Khan
3a8cdd8440 Updating integration test script and adding additional logging. (#20710)
* killing all sub proc

* Updating file to match vscode

* Adding addtional logging

* Removing inaccurate echo
2022-10-06 16:05:56 -07:00
Raymond Truong
d746aa0fba Fix incorrect instance level warnings showing for SQL DB/MI (#20758) 2022-10-06 14:13:36 -07:00
Lewis Sanchez
f046129515 Adds not equal operator and expands unequal collapsed header rows (#20737)
* Adds not equal operator and expands unequal collapsed prop rows

* Minor clean up.
2022-10-06 13:45:04 -07:00
Alex Hsu
454fb1d6a5 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20221006154842359. (#20752) 2022-10-06 10:37:10 -07:00
brian-harris
7c6effb9cc Revert "remove Last Backup colum on assessment db list. (#20728)" (#20745)
This reverts commit ee386e7382.
2022-10-06 12:59:47 -04:00
Charles Gagnon
cf03516d2d Bump engine version for query-history (#20755) 2022-10-06 09:38:21 -07:00
Lewis Sanchez
65a3bd7491 Shows not equal operator when comparing non-null props to null props (#20740) 2022-10-05 18:49:06 -07:00
Lewis Sanchez
6ea75bb538 Removes summary section from plan comparison properties view (#20735) 2022-10-05 18:48:53 -07:00
junierch
ee386e7382 remove Last Backup colum on assessment db list. (#20728)
* remove Last Backup colum on assessment db list.

* column cleanup
2022-10-05 18:37:36 -07:00
Alex Ma
f59ed49b2a [Loc] sql and sql-migration xlf updates (#20744) 2022-10-05 17:18:41 -07:00
Raymond Truong
5da4f449d4 [SQL Migration] Fix assessment UI issues (#20733)
* Clarify assessment results in card

* Fix incorrect number of dbs ready for migration without issues to MI

* Fix SQL DB assessment results incorrectly greying out dbs with MI blocking issues

* Update error banner for blocked databases

* Reword error message
2022-10-05 16:57:49 -07:00
Kim Santiago
1e89df8955 add 160 system dacpacs and update Azure master dacpac (#20732) 2022-10-05 14:57:03 -07:00
Charles Gagnon
7b05194e77 Add app quality to extension API (#20731)
* Add app quality to extension API

* Comment

* Special case rc1 to stable
2022-10-05 14:42:23 -07:00
Benjamin Russell
29daa72ef1 Give saveAsExcel its own config options (#20647)
Co-authored-by: Ben Russell <russellben@microsoft.com>
2022-10-05 09:40:00 -07:00
Charles Gagnon
60c1c8a89f Update ads-extension-telemetry to 1.3.1 (#20724)
* Update ads-extension-telemetry to 1.3.0

* fix
2022-10-04 23:06:53 -07:00
Alex Ma
08341c70fd [Loc] removed missing string in sql.xlf (#20725) 2022-10-04 16:54:10 -07:00
Charles Gagnon
7ebcb21879 Add query history telemetry (#20722)
* Add query history telemetry

* Update property name

* Only send on success

* Update name
2022-10-04 15:43:38 -07:00
Alex Ma
f511536a0f [Loc] first xlf update of the day for 10-4 (#20721) 2022-10-04 11:07:36 -07:00
Alan Ren
2df3f1a161 Remove preview flag for table designer (#20720)
* remove the preview flag for table designer feature

* sqlproj
2022-10-04 10:58:44 -07:00
Alex Hsu
102888b964 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20221004153807318. (#20719) 2022-10-04 09:40:09 -07:00
Alex Hsu
6ef99bea69 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20221002155335272. (#20706)
Co-authored-by: Alex Ma <alma1@microsoft.com>
2022-10-04 09:39:39 -07:00
Alex Hsu
9fc285dd09 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20221001154740767. (#20704) 2022-10-04 09:31:23 -07:00
Lewis Sanchez
5e48cb99e1 Fixes bug around sorting equal and unequal properties (#20702)
* Fixes bug around sorting equal and unequal properties

* Uses deepClone to deepCopy objects

* Code review changes

Co-authored-by: Charles Gagnon <chgagnon@microsoft.com>
2022-10-03 23:10:45 -07:00
Alan Ren
16721cac00 fix web build (#20718)
* add logging

* new version with more logging

* fix downloader

* update more extensions

Co-authored-by: Charles Gagnon <chgagnon@microsoft.com>
2022-10-03 19:34:04 -07:00
brian-harris
66bb40c627 remove preview from sql db target references (#20690)
* remove preview from sql db target references

* update "Azure recommendations" label

* handle missing target tables
2022-10-03 18:39:43 -07:00
Charles Gagnon
3df9985aff Add loading text to query history view (#20717)
* Add max entries to query history

* Update query history README

* Add loading text to query history view

* add comment
2022-10-03 18:21:40 -07:00
Charles Gagnon
266326252a Update Query History README (#20716)
* Add max entries to query history

* Update query history README
2022-10-03 16:19:02 -07:00
Charles Gagnon
dd0e8fed2e Fix query history context item (#20714) 2022-10-03 16:07:44 -07:00
Charles Gagnon
6322a37152 Add max entries to query history (#20715) 2022-10-03 15:42:44 -07:00
Charles Gagnon
4bd2befefe Use ADS name for telemetry log (#20713) 2022-10-03 14:07:46 -07:00
Lewis Sanchez
f521d7cc63 Query Execution Plan Expensive Operator Highlighting (#20579)
* Boilerplate for new context menu options

* Enables checkmarks for expensive operator context menu actions

* Updates azdataGraph version to 0.0.44

* Adds clearing logic to actions and retrieves additional info from nodes

* Removes unnecessary actions that aren't supported by other providers

* Finishes setting up the rest of the context menu actions

* Corrects context menu action label

* Defines new widget type for finding expensive operations

* Adds TODO for class icon name

* Creates action to open the expensive operation widget

* Adds escape and enter key shortcuts to findExpensiveOperation widget

* Styles find expensive operation widget

* Corrects class name for finding expensive operator action

* Corrects import statement.

* Code clean up

* Bumps azdataGraph version to 0.0.45

* Adds an info box for when a metric doesn't find any nodes

* Adds label to find expensive operator widget

* Invokes dispose when widget controller removes widget

* Implements disposable in all execution plan widgets.

* Adds off action to clear highlighting

* Adds a default setting and default prompt for highlighting metric

* Fixes not all code paths return error

* Removes shortcut key from text for widget actions

* Adds enum description

* Removes added dictionary type, and renames class name

* Removes unnecessary null checks

* Removes cost metric dictionary and adds corresponding properties

* Code review changes

* Removes incorrectly implemented key down event for widget.

* Renames widget and action class names for highlighting expensive ops

* File rename

* Cleans up labels to better reflect highlight action

* Removes hardcoded button width style and sets it to auto

* More clean up

* Clean up import statement

* Code review changes

* Drop down list only shows available metrics

* Updates highlight expensive operation icon

* Update STS version
2022-10-03 12:32:39 -07:00
Christopher Suh
d0cab10cc9 revert redirect uri bc it is not used by us (#20705) 2022-10-03 02:03:21 -04:00
Alan Ren
1df976d79d upgrade service downloader (#20703)
* use new service downloader

* update other extensions

* fix errors
2022-10-02 20:30:53 -07:00
Charles Gagnon
85dc506a3c Add AuthenticationType enum to typings (#20699)
* Add AuthenticationType enum to typings

* fix

* const

* Add comments

* fix comment

* remove unused
2022-09-30 16:49:36 -07:00
Charles Gagnon
d6d75d8817 Add query history persistence (#20700)
* initial

* Fix and revert secret storage changes

* persist to file

* Add debounce and write on dispose

* Fix run

* No ext dependencies and show warning message

* Remove test stuff

* comments

* Fix tests and console logs
2022-09-30 16:48:55 -07:00
Cheena Malhotra
3aa416df6d Fix default SQL Login prompts in SQL Servers under Azure Tree (#20689) 2022-09-30 12:31:34 -07:00
Alex Hsu
60d49511bc Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220930154803138. (#20698) 2022-09-30 11:07:28 -07:00
Aasim Khan
2a9c0a6935 Fixing filter stylings (#20685) 2022-09-30 10:00:13 -07:00
Christopher Suh
2a3e41e821 Update redirect-uri to localhost (#20692)
* wip

* change clientId

* change redirect-uri to localhost

* change clientId to staging env

* wip, using ppe endpoint

* management-preview

* change back management endpoint

* localhost/redirect

* wip

* route redirect

* change back to prod endpoints/clientId

* add error handling
2022-09-30 11:59:53 -04:00
Alan Ren
98320584a2 fix typos (#20695) 2022-09-29 20:58:11 -07:00
Alex Ma
337cadaf95 [Loc] added sql xlf update (#20694) 2022-09-29 16:31:03 -07:00
Lewis Sanchez
7c83739c25 Reorganized Execution Plan Comparison Properties View (#20673)
* Adds summary view to comparison properties view

* Equal rows are collapsed at the bottom of the properties view window

* Variable rename

* Variable rename

* Adds row header for equal properties.

* Adds middle column with diff icon to comparison properties table

* Resolves hygiene issue

* Code review changes

* Fixes undefined error bug

* Adds styles to less than and greater than codicon's

* Changes equivalent properties collapsed header

* Removes unnecessary check

* Integrates alphabetical and importance sorting to equivalency sorting
2022-09-29 13:53:10 -07:00
Hai Cao
69517b5ae0 bump STS to bring in table designer fixes (#20686) 2022-09-29 11:13:06 -07:00
Alex Hsu
c77caa343e Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220929154610286. (#20691) 2022-09-29 10:24:01 -07:00
Christopher Suh
791443ddb7 Improve the tenant logging (#20688)
* added tenant response logging

* add headers to logging

* throw error after tenant response failure
2022-09-28 22:27:02 -07:00
Alex Hsu
36dabcbd96 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220928153802150. (#20683) 2022-09-28 15:48:50 -07:00
Maddy
2214711445 add unstable tag (#20684) 2022-09-28 14:17:46 -07:00
Charles Gagnon
603ae9b94c Fix queryDocument.connect (#20682)
* Fix queryEditor.connect

* Remove decorator

* undo

* fix test

* Use connectionProfile for comparison

* remove unused

* Remove helper method
2022-09-28 11:28:58 -07:00
Aasim Khan
02697105f5 Fixing row selection and styling in select column (#20670) 2022-09-27 15:55:55 -07:00
Alex Ma
8ea0e34751 [Loc] sql-migration update (#20681) 2022-09-27 15:36:17 -07:00
Charles Gagnon
187c4ab3c9 Bump sqlops-dataprotocolclient to 1.30 (#20680)
* Bump sqlops-dataprotocolclient to 1.30

* Undo import/liveshare
2022-09-27 15:13:04 -07:00
brian-harris
72dfd3821f add sql db related content to dashboard and readme (#20674)
* add sql db scenario to dashboard with links

* adding more SQL DB updates
2022-09-27 10:27:27 -07:00
Alan Ren
54c2fe6899 remove duplicate code (#20664)
* remove dupe code

* fix step name

* fix errors

* comment out arc

* fix timeout issue

* fix typo

* update name
2022-09-26 17:48:59 -07:00
Alex Ma
9fcdbce819 [Loc] update to sql-migration xlfs (#20672) 2022-09-26 14:46:16 -07:00
brian-harris
d2fbda362c Dev/brih/feature/public preview sql db (#20644)
* sql db preview updates

* update readme release notes
2022-09-26 12:50:04 -07:00
Alex Hsu
11fbf5f147 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220926153737001. (#20667)
Co-authored-by: Alex Ma <alma1@microsoft.com>
2022-09-26 10:05:24 -07:00
Alex Hsu
4d178ea916 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220925153838700. (#20666) 2022-09-26 09:53:12 -07:00
Charles Gagnon
7367ffe7af Update SsmsMin to latest from SSMS 19 (#20663) 2022-09-23 17:39:03 -07:00
Alex Ma
0a8a93321b [Loc] update to execution plan (#20662) 2022-09-23 16:17:55 -07:00
Aasim Khan
fd8993134f Execution Plan Filtering and UI improvements (#20631)
* Fixing execution plan stuff

* Adding filter to top operations

* Flipped custom zoom icon

* changing keys

* Moving constants to a file

* Search properties

* Making logic concise
2022-09-23 12:57:30 -07:00
Charles Gagnon
c7eefb28cb Fix null ref error in terminal service (#20656) 2022-09-23 12:22:13 -07:00
Alex Hsu
d047a8f84c Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220923153849880. (#20655) 2022-09-23 09:30:56 -07:00
Alan Ren
508df59dfd test invert option (#20649) 2022-09-22 18:19:00 -07:00
Aasim Khan
37636012da Fixing Slick Grid accessibility bugs. (#20514)
* some alignment fixes

* Redesigning slickgrid checkbox plugin

* Reverting original plugin to main state

* Fixing css

* Reverting file

* Removing extra whitespace

* Adding title

* Removing older plugin

* vbumping slick grid

* Pushing other vbumps

* Adding more targeted css selectors
2022-09-22 14:25:19 -07:00
Alex Ma
f0b04faba4 [Loc] sql xlf update 9-21-2022 (#20641) 2022-09-21 15:41:27 -07:00
Alan Ren
0e21258fe8 introduce unstable smoke test suite (#20639)
* allow mark tests as unstable

* fix

* fix invert

* stable and whole test suite

* docs and mark test cases as unstable

* a couple more unstable test cases
2022-09-21 13:09:06 -07:00
Lewis Sanchez
12c5aa0f80 Fixes incorrect operation label when plans are oriented vertically and node selection changes. (#20630)
* Fixes incorrect label when plans are vertical

* Code review changes.

* Adds helper methods to get localized strings

* Helper functions moved to module level

* Renames fields from top and bottom to primary and secondary
2022-09-21 10:40:09 -07:00
Alex Hsu
5a795e6993 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220921153837925. (#20635) 2022-09-21 09:55:43 -07:00
Alan Ren
0bae5f82d5 reorder pk columns (#20624) 2022-09-20 10:02:43 -07:00
易良
4b05b90b27 fix: typos (#20625) 2022-09-20 09:33:53 -07:00
Alex Ma
6d6280244d added collapse all (#20623) 2022-09-19 17:03:29 -07:00
Charles Gagnon
509e4b0509 Move legacy tree from vs to sql (#20622)
* Move legacy tree from vs to sql

* fix tests

* exemption

* Fix lint
2022-09-19 15:19:40 -07:00
Charles Gagnon
dd253b4e98 Finish strict null azurecore (#20619)
* Finish strict null azurecore

* one last
2022-09-19 14:29:42 -07:00
Sakshi Sharma
c6f3996ec7 Set target platform for db projects from server metadata: mssql vscode extension (#20607)
* Set target platform for mssql vscode extension- create project from db feature

* Addressed comments

* Address comment to add EngineEdition information in vscode-mssql.d.ts
2022-09-19 10:50:55 -07:00
Alex Hsu
76115dba1d Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220917155636544. (#20618) 2022-09-19 09:33:51 -07:00
Hai Cao
bdec59fbfb bump STS to support table rename in designer (#20616) 2022-09-16 16:13:29 -07:00
Charles Gagnon
5f8cefc45c Promote some Azure account API typings (#20615) 2022-09-16 11:44:33 -07:00
Charles Gagnon
c2c16c99e8 More Azure strict nulls (#20614) 2022-09-16 11:43:24 -07:00
Charles Gagnon
2a3d0bcde5 AzureResource utils strict nulls (#20609)
* AzureResource utils strict nulls

* quotes
2022-09-16 08:52:45 -07:00
Alex Ma
87a1f40fa3 [Loc] mssql update 9-15-2022 (#20612) 2022-09-15 17:33:45 -07:00
Alan Ren
cddfc7fd92 table designer perf improvement - add user setting for preload db model (#20608)
* add user setting for preload db model

* vbump sts

* more description
2022-09-15 14:25:36 -07:00
Alex Ma
08a9527314 Replace FQDN for Sql Synapse Servers (#20581)
* WIP work on rest call

* moved check to resourceTreeDataProviderBase

* some cleanup

* added working check

* placeholder, using filter function in resourceTreeDataProviderBase

* added connectivityEndpoints

* added kind filter

* fixed minor bits

* added wip changes

* added working queries

* added synapse to getSqlServers

* added override

* massive overhaul

* added property check

* made changes

* added clarifying comments

* added comment fixes

* remove async
2022-09-15 14:24:11 -07:00
Alex Hsu
acb22987fa Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220915154141156. (#20610) 2022-09-15 09:41:42 -07:00
Kim Santiago
edc11d519d add logging for data workspace extension (#20601)
* add logging for data workspace extension

* Addressing comments

* adding back getProjectsInWorkspace() in constructor

* Add more logging in activate()
2022-09-14 11:06:41 -07:00
Alex Hsu
a53fdb8bca Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220914154740040. (#20605) 2022-09-14 10:16:02 -07:00
Charles Gagnon
356f793078 Simplify IAzureResourceTreeDataProvider (#20591) 2022-09-14 10:07:30 -07:00
Barbara Valdez
6c7d4a2f6b disable v2 tests temporarily (#20603) 2022-09-13 20:45:12 -07:00
Alex Ma
620a84f92b [Loc] Removed strings for arc (#20602) 2022-09-13 16:41:46 -07:00
Alan Ren
b25b591994 dashboard refresh fix (#20596) 2022-09-12 20:34:02 -07:00
Aasim Khan
3f6f6ed07b Changing property header row styling for execution plan properties (#20594) 2022-09-12 17:20:16 -07:00
Candice Ye
46cf166c8c Small bug fix + version bump to 1.6.0 (#20595)
* Removed Node Configuration text

* Bump to 1.6.0

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-09-12 17:17:49 -07:00
Alex Ma
21b6e7d73a [Loc] update to xlfs for 9-12-2022 (#20597) 2022-09-12 16:50:23 -07:00
Charles Gagnon
63aeb606bf azureAuth.ts strict nulls (#20583)
* azureAuth.ts strict nulls

* fix test compile
2022-09-12 14:44:31 -07:00
Vasu Bhog
a4f023f5b9 Update README.md (#20592)
* Update README.md

added event mocking tip
2022-09-12 14:06:59 -07:00
Barbara Valdez
7e4e8e728f Skip failing book tests (#20590) 2022-09-12 12:01:16 -07:00
Alan Ren
6015c8e2f4 handle unsupported connections in OE/Recent connections view (#20588)
* handle unknown provider in OE

* more update

* add comment

* test
2022-09-12 11:48:08 -07:00
Alex Hsu
b5408495b9 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220912153837684. (#20587)
Co-authored-by: Alex Ma <alma1@microsoft.com>
2022-09-12 09:38:35 -07:00
Alex Hsu
c9ef54fac4 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220911154112401. (#20586) 2022-09-12 09:29:06 -07:00
Alex Hsu
3909cc9ab7 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220910155317318. (#20585) 2022-09-12 09:28:44 -07:00
Alex Ma
3d91cddfb1 [Loc] changes made to xlfs (#20582) 2022-09-09 16:56:36 -07:00
Alex Hsu
a1ff8eceb1 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220909153729714. (#20575) 2022-09-09 15:43:44 -07:00
Alan Ren
be8bf7fcdc handle unsupported connection provider (#20577)
* handle unknown connection provider

* fix error
2022-09-09 14:14:33 -07:00
Candice Ye
b9cb3de85b Bug bash fixes to Azure Arc PostgreSQL (#20568)
* Added username field to PG and removed defaultvalue for port

* Disabled system username for miaa. Added username to pg create notebook.

* Block system for pg username

* Remove sql username from pg create

* Add service type

* bump version for preview

* Add dev use label

* Changed postgres icon

* Fixed PG create page not displaying. Wrong type

* Fixed service type

* changed naming for admin usernames sql and pg

* sql and pg dev use fix

* Move port under service type and make storage class not required

* Fixed regex to include things like sa1 system1

* Made storage class params optional

* Added placeholder text and changed PG admin username label

* Remove backups

* Removed postgres hardcoded username in connectionstring

* Remove more postgres username hardcoded

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-09-09 11:49:27 -07:00
Sakshi Sharma
a6920ca601 Set target platform for database project from the server metadata (#20558)
* Set target platform for database project from the server metadata

* Addressed comments
2022-09-09 09:12:12 -07:00
Alan Ren
1f6482490c handle default auth type (#20572)
* handle default auth type

* comments
2022-09-09 08:59:53 -07:00
Jordan Hays
982c242301 Remove irrelevant context menu options from ledger objects in OE (#20571)
* fixing icons for new ledger object SubTypes

* removing irrelevant context menu options from ledger objects in OE

* aligning LedgerDropped subtype context key specifically with the Table NodeType context key
2022-09-09 08:50:57 -07:00
Charles Gagnon
06c8e3d7a8 Fix relative links in azdata.*.d.ts (#20569) 2022-09-08 16:19:39 -07:00
Charles Gagnon
63ef3b9c51 Add doc comments for TreeItem API (#20567) 2022-09-08 11:50:05 -07:00
Hai Cao
40b2c1e74e [Table Designer] Support hash index and column store index (#20562) 2022-09-08 11:39:36 -07:00
Raymond Truong
f38077069c [SQL Migration] Update README and fix package version (#20556)
* Update readme and package version

* Fix typos
2022-09-08 10:23:13 -07:00
Charles Gagnon
415c769d60 Don't use localized folder for azure tokens (#20559) 2022-09-08 09:54:52 -07:00
Charles Gagnon
649c98c016 ServerInfoContextKey instead of MssqlNodeContextKey for OE items (#20563)
* ServerInfoContextKey instead of MssqlNodeContextKey for OE items

* add comment
2022-09-08 09:32:20 -07:00
Alex Hsu
08d639438f Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220908153814093. (#20565) 2022-09-08 09:28:55 -07:00
Alex Ma
f2ae61d2b2 [Loc] updates to xlfs for 9-7-2022 (#20561) 2022-09-07 16:52:16 -07:00
Charles Gagnon
aa0f1e88e8 Show warning about upcoming BDC deprecation (#20549) 2022-09-07 14:53:07 -07:00
Charles Gagnon
56fcb43c35 Fix more azurecore strict nulls (#20547) 2022-09-07 13:05:16 -07:00
Alan Ren
a7c552aefc expose the maxCharsToStore setting (#20554)
* add a setting for query execution

* comments

* fix typo
2022-09-07 13:00:32 -07:00
rishky-msft
5c620264c4 Adding azure resource provider for mysql flexible server (#20529) 2022-09-07 22:24:18 +05:30
Alex Ma
cbd3cccf68 [Loc] update to sql-database-projects xlf (#20550) 2022-09-06 14:48:59 -07:00
Charles Gagnon
8319f89b84 AzureAccountProvider & AzureAccountProviderService strict nulls (#20543) 2022-09-06 10:48:32 -07:00
Charles Gagnon
7ec3506f5f Strict null check SimpleTokenCache (#20542) 2022-09-06 10:48:17 -07:00
Alex Hsu
d0917ef023 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220905153821003. (#20541) 2022-09-06 09:46:33 -07:00
Alex Hsu
bf50fab179 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220903154829706. (#20540) 2022-09-06 09:46:22 -07:00
Alan Ren
6d4fc1d98c user confirmation (#20538) 2022-09-02 17:36:30 -07:00
Alex Hsu
fa858da1a6 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220902153839952. (#20536) 2022-09-02 10:39:44 -07:00
Alex Ma
e5a03679b9 [Loc] update to Azurecore xlf (#20535) 2022-09-01 17:08:23 -07:00
Kim Santiago
7c34c4bdc0 add config option for Microsoft.Build.Sql version used to build legacy sql projects (#20532)
* add config option for Microsoft.Build.Sql version used to build legacy sql projects

* addressing comments
2022-09-01 17:05:26 -07:00
Alex Hsu
508d76b646 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220901153516789. (#20531) 2022-09-01 10:51:55 -07:00
Sakshi Sharma
4150113eff Fix Scmp dialog not presenting Folder Structure option for Projects as target (#20528) 2022-09-01 10:33:26 -07:00
Sakshi Sharma
5e8ebe2340 Update default .NET installation for Linux (#20521)
* Update default .NET installation for Linux

* Fix error

* Address comments
2022-09-01 10:29:14 -07:00
Cheena Malhotra
a8a235bded Fix to not prompt user when token acquisition fails for stale user accounts. (#20516) 2022-08-31 17:26:40 -07:00
Alex Ma
186b89f371 [Loc] sql updates 8-31-2022 (#20527) 2022-08-31 16:07:26 -07:00
Kim Santiago
fda2c37531 the fix open in designer menu item is not available after script is updated with newly added create table statements (#20522)
* make open in designer available after a script is updated with a new create table statement

* uppercase
2022-08-31 15:39:53 -07:00
Charles Gagnon
c738f9dfe9 Further update to ConnectionInfoSummary typings (#20525)
* Update connection info typings

* more updates
2022-08-31 14:19:18 -07:00
Kim Santiago
8926c4f605 Remove sql project build dependency on STS (#20447)
* download Microsoft.Build.Sql sdk and extract

* cleanup extracted folder and nuget

* add constants

* cleanup

* remove package-lock.json

* making outputChannel required and some cleanup

* only download if the files aren't already there

* Add todo

* add try catches

* addressing comments
2022-08-31 14:04:06 -07:00
Cheena Malhotra
eedf6e01c3 Update account dropdown content to include tenant Id (#20515) 2022-08-31 13:15:36 -07:00
Kim Santiago
83043dadcc move checking if a file contains a create table statement to utils (#20512) 2022-08-31 10:21:30 -07:00
Aasim Khan
010fe91921 Adding image support to list view (#20449) 2022-08-31 09:02:40 -07:00
Alex Ma
3fc3c106bb [Loc] update to sql-migration (#20513) 2022-08-30 17:12:00 -07:00
Alex Ma
39a020b8c4 Proposed update to connectioninfo documentation (#20511) 2022-08-30 16:52:58 -07:00
Charles Gagnon
96b38a3caf Don't run publish typings for hotfixes (#20510) 2022-08-30 16:30:07 -07:00
Raymond Truong
60900ff809 Fix broken 'Create new' DMS dialog (#20507)
* Fix broken 'Create new' DMS dialog

* Update string
2022-08-30 15:03:58 -07:00
Karl Burtram
5fb989f28e Update fwlinks in 1.39.1 (#20509) 2022-08-30 14:14:14 -07:00
Karl Burtram
3154113f34 Update changelog for 1.39.1 release (#20506) 2022-08-30 14:01:10 -07:00
Benjin Dubishar
1474990ef6 vbump (#20480) 2022-08-30 13:29:23 -07:00
Alex Hsu
79b0b3c6c0 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220830154019353. (#20501) 2022-08-30 12:54:44 -07:00
Karl Burtram
5266041243 Bumps STS to pick async revert (#20489) 2022-08-29 11:47:04 -07:00
Alex Hsu
9128f865ee Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220829153730357. (#20487) 2022-08-29 10:08:11 -07:00
Alex Hsu
3a05ebc4e1 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220827153851014. (#20485) 2022-08-29 10:07:59 -07:00
Charles Gagnon
a78a158acd Add saved files to recently opened (#20470) 2022-08-29 09:04:59 -07:00
Candice Ye
96b7335cdd Fixed PG update (#20484)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-08-28 17:00:32 -07:00
Alex Ma
aba0d249a1 [Loc] updates to arc and sql-migration (#20481) 2022-08-26 15:46:06 -07:00
Raymond Truong
bfcbd60d24 [SQL Migration] SKU recommendation improvements + SQL DB integration bug fixes (#20174)
* WIP - show error message for failed SKU recommendation

* WIP - run query to get correct instance name

* WIP - integrate elastic model recommendation

* Remove private endpoint restriction text

* Add feature switch for elastic recommendation

* Clean up

* Clean up

* Misc UI fixes

* Update package.json with updated azdata dependency

* Remove unused lines

* Fix broken next button

* Vbump extension to 1.0.6

* Update SQL DB card to show number of recommendations for correct model
2022-08-26 14:06:33 -07:00
Candice Ye
bd0c4cdb51 Changing Postgres Hyperscale to Postgres Azure Arc in ADS (#20445)
* Hard code enginer ver to 14 and remove extension from wizard field and notebook

* Removed hyperscale text from everywhere but links

* Made PostgreSQL into PostgreSQL server and other text changes. Removed worker nodes

* Removed coordinator node text

* Removed worker nodes from compute + storage. Changed az arc-server to server-arc. postgresParameters.ts may need

* Removed tabs for extensions, coord nodes, worker nodes, resource health, diagnose and solve

* Removed node configuation and pg version from overview and properties. Edited arialabels

* Change server group nodes to server

* Removed type from overview table and aded Preview tags

* Removed info bubble and added padding to top of title

* Removed checkbox from PG create wizard. Added link and text

* Remove engine version

* Changed naming conventions

* Removed coord and server group from variables

* Removed properties

* Removed Server table, admin username, reset password

* Removed function from notebook

* Change wording

* bump version

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-08-26 13:24:48 -07:00
Alex Hsu
04ca5fbe42 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220826153720064. (#20479) 2022-08-26 09:40:25 -07:00
Alex Hsu
84d1afea4e Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220825232731513. (#20477) 2022-08-25 17:19:40 -07:00
Kim Santiago
06a3bf6718 Handle output path and configuration in .sqlproj (#20426)
* Revert "Revert "Fix sql projects not using OutputPath in sqlproj for publishing (#19987)" (#20127)"

This reverts commit dc7522c661.

* read configuration from sqlproj

* Add more tests

* use last OutputPath in sqlproj
2022-08-25 10:25:12 -07:00
Alan Ren
f86d02e753 handle edit and save race condition (#20462)
* handle edit and save race condition

* handle more race condition scenarios

* fix error
2022-08-25 08:10:23 -07:00
Raymond Truong
b7a633be25 [SQL Migration] Revert dependency on new Azure Core API changes (#20469)
* Remove references to getProviderMetadataForAccount

* Fix broken next button

* Clean up

* Adding to other PR instead - Revert "Clean up"

This reverts commit 410e136c0d1dcc24b38697791801fe3b90b1ecd4.

* Adding to other PR instead - Revert "Fix broken next button"

This reverts commit 748f75daf1594694e618f946c8026cb3256c58a9.
2022-08-24 22:59:29 -07:00
Alex Ma
f62b2d68a4 [Loc] update to schema-compare (#20471) 2022-08-24 16:27:29 -07:00
Kim Santiago
2e2fa7bf10 vbump schema compare and sql database projects (#20464) 2022-08-24 15:02:16 -07:00
Charles Gagnon
6e7e2f4c1e Bump query-history to 0.5.0 (#20465) 2022-08-24 14:46:05 -07:00
Charles Gagnon
4a512a35c4 Add azurecore code owners (#20457) 2022-08-24 13:10:54 -07:00
Charles Gagnon
cf335ccc30 Bump file-type (#20456) 2022-08-24 12:19:38 -07:00
Aasim Khan
7857e5946f New azdata graph layout (#20451)
* Updated contracts

* Adding latest azdataGraph update

* Updating graph lib
2022-08-24 12:09:17 -07:00
Cory Rivera
1a094ba6a9 Clear invalid taskbar actions when changing notebook providers. (#20446) 2022-08-24 12:01:41 -07:00
erpett
5f04de6f1c Post release changelog update (#20458) 2022-08-24 11:32:27 -07:00
Charles Gagnon
a7e5acf539 Initial work on enabling strict nulls in azurecore (#20411) 2022-08-24 10:59:25 -07:00
Charles Gagnon
65aa98597d Fix 'failed to load source map' warnings in console (#20455)
* disable

* Skip embedded sourcemaps

* comment
2022-08-24 10:55:10 -07:00
Alex Hsu
80ec475f93 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220824154604024. (#20452) 2022-08-24 09:52:45 -07:00
Sakshi Sharma
dc8d703c25 Open Scmp file in Schema Compare extension (#20435)
* Open Scmp file in Schema Compare extension

* Address comments and fix failing test

* Addressed comment
2022-08-24 09:50:22 -07:00
dependabot[bot]
87e406caca Bump @actions/core from 1.2.6 to 1.9.1 in /build/actions (#20407)
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.2.6 to 1.9.1.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-23 13:35:24 -07:00
Cory Rivera
52290a796d Fix conda virtual environment paths in notebooks (#20438) 2022-08-23 13:34:06 -07:00
Alex Ma
fa6ffb6ce6 [Loc] sql-migration massive update (#20437) 2022-08-22 16:37:49 -07:00
Charles Gagnon
26f7aa5f5d Fix query history text race condition (#20428)
* Fix query history text race condition

* fix tests
2022-08-22 12:52:56 -07:00
Alex Hsu
e6bfdee521 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220821153909700. (#20433) 2022-08-22 09:21:07 -07:00
Alex Hsu
50c74d0542 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220820154110817. (#20431) 2022-08-22 09:20:37 -07:00
brian-harris
7a736b76fa Add SQL DB offline migration wizard experience (#20403)
* sql db wizard with target selection

* add database table selection

* add sqldb to service and IR page

* Code complete

* navigation bug fixes

* fix target db selection

* improve sqldb error and status reporting

* fix error count bug

* remove table status inference

* address review feedback

* update resource strings and content

* fix migraton status string, use localized value

* fix ux navigation issues

* fix back/fwd w/o changes from changing data
2022-08-19 18:12:34 -07:00
Alex Ma
c0b09dcedd [Loc] remove serverGroup.colorValue (#20429) 2022-08-19 16:12:56 -07:00
Alan Ren
45b0075353 use aria-label for radio group (#20425) 2022-08-19 15:42:21 -07:00
Aasim Khan
ec215604a8 Adding arialabel to radio groups (#20423) 2022-08-19 15:10:23 -07:00
Kim Santiago
cb29eccef3 add current open folder to new project quickpick (#20414)
* add open folder to new project quickpick

* swap so default save location is first
2022-08-19 14:46:24 -07:00
Kim Santiago
c7ce98c4de use default folder or open folder as initial location in new project dialog (#20416)
* use default folder or open folder in new project dialog

* simplify
2022-08-19 12:07:14 -07:00
Charles Gagnon
cb34b13862 Update query history icon (#20419) 2022-08-19 11:31:55 -07:00
Hai Cao
c9c91528c3 bump Ubuntu to 20.04 (#20415) 2022-08-19 10:38:59 -07:00
Alex Ma
9c7fba3ae3 [Loc] update to sql xlf (#20413) 2022-08-18 16:26:20 -07:00
Alex Hsu
712194bcc4 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220818153817313. (#20404) 2022-08-18 15:49:22 -07:00
Hai Cao
a79e9a5c8f Fix table designer reloading when only descriptions are being updated (#20405) 2022-08-18 13:02:58 -07:00
Alan Ren
874c80a5b4 use markdown for description pane (#20401) 2022-08-18 10:46:07 -07:00
Alan Ren
b4a5afe199 allow user to select text from the description box (#20396) 2022-08-17 20:05:06 -07:00
Lewis Sanchez
7de5ee0427 Adds functionality to open execution plans from DB tables and DMVs. (#20377)
* Adds functionality to open execution plans from DB tables and DMVs.

* Code review changes

* Renames method to getProviderFromUri
2022-08-17 19:24:23 -07:00
Vasu Bhog
2a94ce3afb Ensure SQL Nuget package reference is always updating to latest (#20390)
* seperate nuget package references to always update to latest

* nit

* nit comments
2022-08-17 18:07:23 -07:00
Barbara Valdez
46a7fbd313 Fix unpin notebook (#20393)
* convert uri to vscode uri
2022-08-17 15:29:25 -07:00
Kim Santiago
691a53ac34 update STS to get fix for broken sql project build (#20384)
* update STS to get fix for broken sql project build

* Update config.json

Co-authored-by: Alan Ren <alanren@microsoft.com>
2022-08-17 12:02:34 -07:00
Alex Hsu
5b36120d1b Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220817153846602. (#20382) 2022-08-17 11:37:39 -07:00
Karl Burtram
8b54494d64 Replace Job Step retry placeholders with values (#20376) 2022-08-17 10:59:27 -07:00
Sai Avishkar Sreerama
4a2c6e9fb4 Adding loading component to the options window before the options display (#20379) 2022-08-16 22:21:30 -05:00
Alex Ma
94e1637a44 [Loc] update to sql-bindings and migration (#20362) 2022-08-15 17:07:33 -07:00
erpett
2bb389cf53 version bump post release branch split (#20356) 2022-08-15 15:34:54 -07:00
Raymond Truong
e64171503a [SQL Migration] Add buttons to allow saving assessment/recommendation reports (#20212)
* Implement save assessment report

* Implement save recommendation report
2022-08-15 15:29:40 -07:00
Raymond Truong
10f5b8b76e [Azure Core, SQL Migration] Fix wrong endpoints being used for non-public clouds (#20304)
* Add correct host to ARM REST API calls

* Clean up

* Missed a spot

* One more comment

* Expose new function getProviderMetadataForAccount in azurecore API
2022-08-15 14:37:41 -07:00
Vasu Bhog
e57acae79a Add output channel for SQL Bindings extension (#20336)
* add output channel for SQL Bindings extension

* add output channel to open once added
2022-08-15 12:12:26 -07:00
Alex Ma
ebdb1783cc [Loc] last minute update to localized XLFs and i18n files (#20342) 2022-08-15 09:26:25 -07:00
Alex Hsu
e0e6b33610 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220814154448821. (#20341) 2022-08-15 08:53:14 -07:00
Sakshi Sharma
cd1618798e Save db project information when saved in scmp file (#20335)
* Save db project information when saved in scmp file

* Address comments
2022-08-15 08:23:32 -07:00
Alex Ma
ef02a8afae json and xlf update for 8-13-2022 (#20340) 2022-08-13 18:05:56 -07:00
Alex Hsu
8f12e001eb Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220813153636632. (#20339) 2022-08-13 17:45:44 -07:00
Alan Ren
e6af8ef531 vbump sts (#20338) 2022-08-12 20:01:18 -07:00
Alex Ma
e017675a1c [Loc] addition of heading text (#20337) 2022-08-12 16:59:10 -07:00
Chris LaFreniere
6c596d8495 Skip failing smoke tests (#20331) 2022-08-12 15:18:27 -07:00
Barbara Valdez
2119c96c88 Update pin/unpin icon after pinning notebook (#20273) 2022-08-12 14:59:07 -07:00
Kim Santiago
4971f1bd1a update STS to 4.2.0.15 (#20329) 2022-08-12 14:35:56 -07:00
Sai Avishkar Sreerama
7e99ea8618 Adding a loader spinner before the options load (#20314)
* Adding a loader spinner before the options load

* removing the local var and using const

* Reducing delay between button click and loader visibility,
2022-08-12 16:30:20 -05:00
Cory Rivera
ff05a4e25d Use a "Text Size" label for heading dropdown. (#20319) 2022-08-12 14:17:40 -07:00
Alex Ma
e1952b8d12 Langpack source file update for August (#20328)
* [Loc] Update to August langpack XLF files

* [Loc] Update for langpack source files

* xlf update 8-12-2022

* added update to json files
2022-08-12 12:31:44 -07:00
Alex Hsu
57234a52fd Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220812154545836. (#20326) 2022-08-12 09:40:21 -07:00
Alan Ren
c663493690 properly handle copy request (#20320) 2022-08-11 21:22:19 -07:00
Alex Ma
a3acae4777 [Loc] update to sql and sql-migration xlfs (#20318) 2022-08-11 16:28:22 -07:00
Kim Santiago
f6d2af58af Add image tag matching target platform for publish to docker (#20296)
* add the image tag for the sql server version

* add preview text and test

* cleanup
2022-08-11 14:58:09 -07:00
Alex Hsu
b531958402 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220811153733711. (#20311) 2022-08-11 12:41:53 -07:00
Aasim Khan
a7a337f063 Adding properties grid enhancements in execution plan (#20208)
* init push

* Fixing properties in plan comparison

* Add long Text Cell viewer

* Disabling auto edit by default

* Removing text editor
2022-08-11 11:22:12 -07:00
Alan Ren
9ec68087ac allow database name to be empty (#20221)
* allow database to be empty

* test changes

* fix import

* fix test cases

* comment
2022-08-11 10:26:55 -07:00
Sai Avishkar Sreerama
0e05c32f15 Fix for table component checkbox selection focus the previous active … (#20301)
* Fix for table component checkbox selection focus the previous active row instead of newly checked row

* comment updated
2022-08-11 11:47:00 -05:00
Candice Ye
4d91a32bed SQL MIAA list now accounts for new text output from Azure CLI (#20305)
* SQL MIAA list now accounts for new text output in line 1

* Version bump

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-08-10 22:46:55 -07:00
AkshayMata
f73cf78001 Add aria labels (#20265)
Co-authored-by: Akshay Mata <akma@microsoft.com>
2022-08-10 19:58:33 -07:00
Alex Ma
5f928a5218 [Loc] added sql query execution lines (#20303) 2022-08-10 16:53:03 -07:00
Alan Ren
a39d73da24 install another version is not supported (#20300) 2022-08-10 15:36:59 -07:00
Alan Ren
b6cf5b2af0 set the default value to false (#20302) 2022-08-10 15:32:24 -07:00
Cory Rivera
315295710d Temporarily disable cell toolbar smoke tests (#20299) 2022-08-10 14:43:41 -07:00
Barbara Valdez
db8bd021be update relative path to katex css (#20293) 2022-08-10 13:17:48 -07:00
Candice Ye
bb8c02a01b Reverted placeholder value reversal (#20294)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-08-10 13:08:03 -07:00
Jordan Hays
315e49b2ed update database ledger icon to correct width (#20288) 2022-08-10 12:07:22 -07:00
Kim Santiago
c27c5334ba update container eula link (#20279) 2022-08-10 11:59:42 -07:00
Alex Hsu
f48fa4785d Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220810153751933. (#20291) 2022-08-10 09:25:40 -07:00
Alan Ren
2d14665208 announce query execution events (#20285) 2022-08-09 20:23:17 -07:00
Alex Ma
0550d58579 [Loc] small change to sql color value (#20287) 2022-08-09 16:29:55 -07:00
Candice Ye
7a6168d9e6 Fixes to SQL MIAA Compute + Storage page (#20272)
* Max for syncsecondary. Fix syncsecondary update.

* Update the value not the placeholder for SQL MIAA

* Disable save toolbar icon after save/update complete

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-08-08 18:24:09 -07:00
Alan Ren
973c1c2437 show server group color name (#20271) 2022-08-08 17:06:13 -07:00
Kim Santiago
57ef5721a3 vbump schema compare and sql database projects (#20268) 2022-08-08 16:07:21 -07:00
Alex Ma
4e8af635c6 [Loc] first update to xlfs for 8-8-2022 (#20270) 2022-08-08 14:52:48 -07:00
Candice Ye
7564aee5b6 Bumped azure cli and arc ext to 1.5.0 in package.json (#20263)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-08-08 13:20:41 -07:00
Candice Ye
ad4a16ca82 Config profile is now Kubernetes configuration template in Arc DC Create Wizard (#20261)
* Re-enabled config for direct mode

* Changed name and placement

* Shortened description

* Remove pg and sql as categories for DC

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-08-08 13:20:05 -07:00
Sai Avishkar Sreerama
54d4098f85 Include Object Types logic refactored and options fetching from DacFx (#20031)
* Include Object Types logic refactored and options fetching from DacFx

* Removed localized object types constants

* Prop name updated and references and tests updated

* updated comments

* STS vBump

* updating the test file to pass the PR Validations
2022-08-08 12:12:59 -05:00
Sai Avishkar Sreerama
2b5d2f0a0b Exclude Object Types Coming from DacFx and tests all working as expected (#20015)
* Include Objects Coming from DacFx and tests all working as expected

* Exclude Object types functionality is working as expected and Unit tests

* more refactor updates

* Updated comments and prop name

* Addressing the coments and code updates accordingly

* Updating according to the comments

* STS vbump

* These changes should be deleted with SC changes, not here

* format fixed
2022-08-08 12:04:24 -05:00
Sai Avishkar Sreerama
66115d8f80 options loading from profile if has profile loaded (#19791)
* options loading from profile if has profile loaded

* Removing profile file unwanted changes

* updating profiles options comment

* STS vBump

* revert STS version from this PR
2022-08-08 11:19:55 -05:00
Vasu Bhog
4ebe4c4547 [SQL-bindings] remove watcher for files (#20250)
* remove watcher for files

* nit
2022-08-05 16:18:03 -07:00
Alan Ren
9dee889808 fix the zoom reset issue (#20254) 2022-08-05 13:48:39 -07:00
Alex Hsu
3381d59cea Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220805153740212. (#20253) 2022-08-05 09:55:45 -07:00
Candice Ye
c56a8b3d8b Separate SQL MIAA from SQL Instance tile (#20244)
* Made SQL MIAA a new tile from New Deployment

* Remove MIAA from SQL tile. Fix helptext for MIAA tile.

* Switched positions of sql miaa and pg tiles. Made New Instance have miaa instead of sql tile.

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-08-04 10:32:31 -07:00
Alex Hsu
8a43f14b41 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220804154127610. (#20248) 2022-08-04 10:21:40 -07:00
Aasim Khan
d139559d98 Adding arialive to text (#20242) 2022-08-03 20:25:17 -07:00
Candice Ye
baf52a55ff Bump version for bugbash (#20231)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-08-03 14:06:34 -07:00
Alex Ma
2f746d0b39 Mac OS product build vm image bump (#20232) 2022-08-03 13:56:56 -07:00
Aasim Khan
1cbe11ad38 Adding ariaLive to assessment in progress (#20237) 2022-08-03 13:46:39 -07:00
Alan Ren
4096037167 fix query results view issue (#20234) 2022-08-03 10:45:33 -07:00
Alan Ren
f72dbccc52 no-op is the object is disposed (#20236) 2022-08-03 10:45:11 -07:00
Cory Rivera
453f8e5525 Set cell preview mode when toggling edit mode. (#20220)
* Also fix leftover settings changes in markdown smoke test.
2022-08-03 09:36:24 -07:00
Alan Ren
4d1be1e288 fix menu item not showing up for non-English languages (#20224)
* new object type property

* vbump sts

* fix azure tree

* mark as optional

* Fix test errors
2022-08-02 13:39:20 -07:00
Candice Ye
5d23627165 Converting all SQL MIAA commands to use K8s API commands (#20203)
* refresh does not differentiate direct vs indirect

* For direct mode MIAA commands, always use --use-k8s

* Changed comment language to use ARM instead of direct and K8S API instead of indirect

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-08-02 11:12:25 -07:00
Alex Ma
8f5b3ef81d [Loc] update to sql xlf (#20227) 2022-08-02 10:02:49 -07:00
Cory Rivera
c37149ccfb Type out query text one letter at a time in autocompletion test. (#20222) 2022-08-01 16:59:28 -07:00
Alex Hsu
74c715f16f Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220801153846057. (#20218) 2022-08-01 11:39:32 -07:00
Alex Hsu
efc7789fe4 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220731153825655. (#20216)
Co-authored-by: Alex Ma <alma1@microsoft.com>
2022-08-01 10:46:24 -07:00
Alex Hsu
5e7bc2a05b Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220730154003990. (#20215) 2022-08-01 10:41:44 -07:00
Alan Ren
6be1420220 do not run query in multi-selection mode (#20213)
* do not run query in multi-selection mode

* fix test

* fix more tests
2022-07-30 14:29:32 -07:00
Charles Gagnon
6704bc552a vBump query history (#20214) 2022-07-29 19:36:03 -07:00
Alan Ren
67ecd6d3d9 fix the grid goes blank issue (#20209) 2022-07-29 18:12:02 -07:00
Alex Ma
afe1b4392f [Loc] addition to query-history (#20211) 2022-07-29 16:44:19 -07:00
Charles Gagnon
866fa76a65 Add double click action support for query history (#20204)
* Add double click action support for query history

* localize descriptions
2022-07-29 13:14:26 -07:00
Alex Hsu
395bc3f149 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220729153613975. (#20205) 2022-07-29 10:27:38 -07:00
Lewis Sanchez
bf6c503c07 Bumps azdataGraph version to 0.0.38 (#20201) 2022-07-28 17:26:40 -07:00
Alex Ma
ab9e67be30 [Loc] update to arc and sql xlfs (#20200) 2022-07-28 15:15:18 -07:00
erpett
055a0d6c67 fixing indent (#20198) 2022-07-28 14:21:50 -07:00
Lewis Sanchez
9fc251259c Adds Ability to Search for Nodes in Compared Execution Plans (#20168)
* Adds find node button to comparison plans.

* Can search multiple nodes (improve widget UI and initialization)

* Adjusts how second plan is added to the node search widget

* Adds styling to the find node action bar

* Removes unused code

* Minor clean up

* Cleans up CSS redundancy

* Adjusts property names according to access specifiers

* Corrects find node behavior to match SSMS

* Dependency injects instantiation service

* Adds additional property to telemetry event.

* Adds undefined to getter return signatures for plans

* Adds checks around active execution plan properties

* Code review change

* Code review changes
2022-07-28 14:14:32 -07:00
erpett
489f5f359f updating changelog with additional changes (#20197) 2022-07-28 13:52:38 -07:00
Candice Ye
28d5382dc3 Added check for .toLowerCase and added upgrade message for clarity. (#20187)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-28 13:52:26 -07:00
Alan Ren
d3073a33fe vbump sts (#20196) 2022-07-28 13:29:25 -07:00
Charles Gagnon
6b1ef0e2ad Store query history items as data, not tree node (#20195) 2022-07-28 11:13:18 -07:00
Charles Gagnon
06bb31b944 Fix query history container icon (#20194) 2022-07-28 09:58:38 -07:00
Charles Gagnon
466b80fb21 Lint fixes from DefinitelyTyped (#20185) 2022-07-28 08:12:43 -07:00
Alan Ren
bb4b00a25a fix recent closed (#20188) 2022-07-27 18:44:08 -07:00
Vasu Bhog
514b0315cc SQL Bindings add telemetry points (#20125)
* add telemetry points

* address comments
2022-07-27 16:38:37 -07:00
erpett
4411a1f319 updating changelog for 1.38 (#20182) 2022-07-27 11:48:52 -07:00
Candice Ye
bd98f67113 connection to connectivity, .lower on notebook (#20177)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-26 17:37:14 -07:00
Alex Ma
fea7f5156f [Loc] added strings to sql.xlf (#20178) 2022-07-26 16:54:17 -07:00
Candice Ye
79ba314953 Prompt for arcdata install upon extension activation (fix) (#20167)
* Made prompt when no arcdata upon startup

* Changed to NoAzureCLIArcExtError

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-26 16:45:30 -07:00
Aasim Khan
518bb33a2f Adding plan tree to execution plan (#20158)
* Adding plan tree

* Fixing localization keys

* Removed whitespace
2022-07-26 14:30:46 -07:00
Alex Ma
441b551c0a [Loc] SQL migration xlf update (#20172) 2022-07-26 10:21:34 -07:00
Alex Hsu
861215c611 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220726153652100. (#20170) 2022-07-26 09:52:55 -07:00
brian-harris
59f96ef2e3 remove unneccessary webpack import (#20166) 2022-07-25 22:08:43 -07:00
Candice Ye
00bacee1da Bump to 1.4.2 for bugbash (#20164)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-25 16:51:27 -07:00
Alan Ren
ddefdac6cc vbump sts (#20159) 2022-07-25 15:53:36 -07:00
Alan Ren
816cd5a997 fix the dropdown menu width logic (#20165)
* fix the dropdown menu width logic

* comment
2022-07-25 15:53:05 -07:00
Alex Hsu
4ea210e794 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220725153813588. (#20162) 2022-07-25 13:41:28 -07:00
Alex Hsu
7da69c82e5 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220724153818370. (#20161) 2022-07-25 13:41:15 -07:00
brian-harris
78b7c3cfd4 Add new tabbed dashboard, monitoring with breadcrumb navigation (#19995)
* SQL DB monitoring and  Dashboard refactor

* Merge remote-tracking branch 'origin/main' into dev/brih/feature/sql-migration-dashboard-tabs

* update filter text and optimize page load

* update migration column order, names and statusbox

* add column table sorting

* add new migration and pipeline status values, etc

* address review feedback
2022-07-25 10:06:17 -07:00
Alex Ma
db39571394 [Loc] change to resource deployment (#20154) 2022-07-22 17:11:43 -07:00
Alan Ren
2f1fbe5473 vbump STS (#20150) 2022-07-22 13:48:42 -07:00
Alan Ren
33ade09608 support sql server 2022 (#20152) 2022-07-22 13:48:34 -07:00
Cory Rivera
c2be6447b5 Prevent cell's edit mode from being incorrectly cleared when a text component is initialized. (#20120) 2022-07-22 10:22:56 -07:00
Alex Hsu
7176629e44 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220722154031353. (#20149) 2022-07-22 09:31:29 -07:00
Jordan Hays
3ebad4e2b7 fix icon path for ledger history table to be recognized as the correct node type (#20144) 2022-07-21 22:20:54 -07:00
Lewis Sanchez
43e7e35df5 Update azdataGraph version to 0.0.37 (#20140)
* Updates azdataGraph version to 0.0.37

* Enables collapse/expand node with highlight resize
2022-07-21 16:15:54 -07:00
Jordan Hays
7b08ecc4cc Dev/nofield/add ledger icons (#20136)
* ledger object icons
2022-07-21 16:02:53 -07:00
Charles Gagnon
1367f29a8a Fix null ref in contributed tree views (#20138) 2022-07-21 12:26:22 -07:00
Kim Santiago
dc7522c661 Revert "Fix sql projects not using OutputPath in sqlproj for publishing (#19987)" (#20127)
This reverts commit 70f0e7264b.
2022-07-21 08:11:23 -07:00
Alan Ren
5334343856 update instructions (#20129) 2022-07-20 16:23:44 -07:00
Charles Gagnon
1ebf9dcc6a Update extension integration test guide (#20126)
* Update extension integration test guide

* cleanup
2022-07-20 15:40:39 -07:00
Kim Santiago
3196e99bd6 fix diff editor colors not getting reversed after vscode merge (#20118) 2022-07-20 14:00:01 -07:00
Maddy
7dd36ae7b4 fix: image disappear issue (#20039)
* check if base64 value is from image tag

* add test

* check image regex

* add comment

* update comment
2022-07-20 13:58:49 -07:00
Candice Ye
239e7af4e6 Changed connetivity mode to have object defaultvalue. Changed connection to connectivity mode. (#20089)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-20 13:04:46 -07:00
Charles Gagnon
ada1588bb7 Fix BDC tree getting stuck loading (#20116) 2022-07-20 12:50:11 -07:00
dependabot[bot]
2d9720962a Bump terser from 4.8.0 to 4.8.1 (#20102)
Bumps [terser](https://github.com/terser/terser) from 4.8.0 to 4.8.1.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-20 10:26:19 -07:00
Alex Hsu
6d8c66f535 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220720153955946. (#20108) 2022-07-20 09:25:16 -07:00
Alex Ma
96c52ad883 [Loc] changes made on 7-19-2022 (#20104) 2022-07-20 03:03:52 -07:00
Candice Ye
6c59779137 Updated CategoryValue defaultValue docs (#20101) 2022-07-19 21:04:52 -07:00
Candice Ye
5e88338423 Reverted changes to Radio buttons default value (#20100)
* Reverted resourcedeploy changes

* Replaced the !

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-19 21:04:39 -07:00
Alan Ren
3d2f729586 support build pipeline that only produces extension vsix files (#20099)
* support only build extensions

* use ne

* copy extensions to drop
2022-07-19 18:58:29 -07:00
Charles Gagnon
ac80703b75 Add size to aria labels on BDC deployments (#20098)
* Add size to aria labels on BDC deployments

* One more
2022-07-19 16:30:58 -07:00
Karl Burtram
23034cd1bd Fix restore dialog null references (#20096)
* Fix restore dialog null references

* Make database field optional like other properties in viewmodel class
2022-07-19 15:42:34 -07:00
Alan Ren
bd36467b99 new dashboard icon (#20087) 2022-07-19 15:00:26 -07:00
Candice Ye
db3dda8519 Got rid of need for casting (#20088)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-19 14:12:03 -07:00
Charles Gagnon
709d15a392 vBump query history (#20080)
* vBump query history

* 0.3.0
2022-07-19 11:23:15 -07:00
Charles Gagnon
d31e33835c [RC1] vBump query history extension (#20081) 2022-07-19 11:07:56 -07:00
Candice Ye
f321b447f2 Various fixes in Arc extension (#20072)
* location description added

* Made Service Tier dynamically enabled

* Added generalpurpose checks for sql miaa deploy notebook

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-19 10:29:32 -07:00
Candice Ye
89dbcb6638 Fixed default value for radio options builder if using resourceType displayName (#20070)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-19 10:29:19 -07:00
Karl Burtram
102f3794f2 Revert "Bring back tar vBump (#20016)" (#20074)
This reverts commit 540c931210.
2022-07-19 10:19:19 -07:00
Alex Hsu
697cf93c65 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220719154044132. (#20076) 2022-07-19 10:13:29 -07:00
Alan Ren
18921fc764 vbump STS (#20073) 2022-07-19 09:53:04 -07:00
Vasu Bhog
9e8b80f12f delete progress notification not needed (#20060) 2022-07-19 09:43:55 -07:00
Candice Ye
bfbb78827f Changed default values for high availability and service tier to accommodate rd fix (#20071)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-18 17:40:40 -07:00
Kim Santiago
d418d7c01b Add collapse project tree setting (#20064)
* Add sql projects setting to start with all project trees collapsed

* cleanup

* update string

* update string again
2022-07-18 17:04:39 -07:00
Candice Ye
77e7a90c20 Make connection mode a displayname (#20068)
* dropdown not supporting dynamic enablement

* paused for weekend

* Make connection mode display with capitalization but value lowercase

* Undo changes in modelviewutils

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-18 17:02:31 -07:00
Alex Ma
fae9ccb531 [Loc] arc xlf update (#20069) 2022-07-18 15:21:54 -07:00
Alex Ma
dbd3a271c4 small fix for arc package nls comma (#20066) 2022-07-18 12:32:28 -07:00
erpett
296cf8015a Version Bumping now that the release branch is forked (#20065) 2022-07-18 12:08:39 -07:00
Candice Ye
97288c421e Added help text for data controller (#20057)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-18 12:03:58 -07:00
4873 changed files with 283299 additions and 161197 deletions

View File

@@ -1,14 +1,18 @@
# Code - OSS Development Container
[![Open in Remote - Containers](https://img.shields.io/static/v1?label=Remote%20-%20Containers&message=Open&color=blue&logo=visualstudiocode)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/microsoft/vscode)
This repository includes configuration for a development container for working with Code - OSS in a local container or using [GitHub Codespaces](https://github.com/features/codespaces).
> **Tip:** The default VNC password is `vscode`. The VNC server runs on port `5901` and a web client is available on port `6080`.
## Quick start - local
If you already have VS Code and Docker installed, you can click the badge above or [here](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/microsoft/vscode) to get started. Clicking these links will cause VS Code to automatically install the Remote - Containers extension if needed, clone the source code into a container volume, and spin up a dev container for use.
1. Install Docker Desktop or Docker for Linux on your local machine. (See [docs](https://aka.ms/vscode-remote/containers/getting-started) for additional details.)
2. **Important**: Docker needs at least **4 Cores and 6 GB of RAM (8 GB recommended)** to run a full build. If you are on macOS, or are using the old Hyper-V engine for Windows, update these values for Docker Desktop by right-clicking on the Docker status bar item and going to **Preferences/Settings > Resources > Advanced**.
2. **Important**: Docker needs at least **4 Cores and 8 GB of RAM** to run a full build. If you are on macOS, or are using the old Hyper-V engine for Windows, update these values for Docker Desktop by right-clicking on the Docker status bar item and going to **Preferences/Settings > Resources > Advanced**.
> **Note:** The [Resource Monitor](https://marketplace.visualstudio.com/items?itemName=mutantdino.resourcemonitor) extension is included in the container so you can keep an eye on CPU/Memory in the status bar.
@@ -58,12 +62,12 @@ You may see improved VNC responsiveness when accessing a codespace from VS Code
2. After the VS Code is up and running, press <kbd>Ctrl/Cmd</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> or <kbd>F1</kbd>, choose **Codespaces: Create New Codespace**, and use the following settings:
- `microsoft/vscode` for the repository.
- Select any branch (e.g. **main**) - you select a different one later.
- Select any branch (e.g. **main**) - you can select a different one later.
- Choose **Standard** (4-core, 8GB) as the size.
4. After you have connected to the codespace, you can use a [VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/) to connect to `localhost:5901` and enter `vscode` as the password.
> **Tip:** You may also need change your VNC client's **Picture Quaility** setting to **High** to get a full color desktop.
> **Tip:** You may also need change your VNC client's **Picture Quality** setting to **High** to get a full color desktop.
5. Anything you start in VS Code, or the integrated terminal, will appear here.

View File

@@ -1 +0,0 @@
*.manifest

View File

@@ -4,12 +4,12 @@
# are run. Its just a find command that filters out a few things we don't need to watch.
set -e
SCRIPT_PATH="$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)"
SOURCE_FOLDER="${1:-"."}"
CACHE_FOLDER="${2:-"$HOME/.devcontainer-cache"}"
cd "${SOURCE_FOLDER}"
echo "[$(date)] Generating ""before"" manifest..."
find -L . -not -path "*/.git/*" -and -not -path "${SCRIPT_PATH}/*.manifest" -type f > "${SCRIPT_PATH}/before.manifest"
mkdir -p "${CACHE_FOLDER}"
find -L . -not -path "*/.git/*" -and -not -path "${CACHE_FOLDER}/*.manifest" -type f > "${CACHE_FOLDER}/before.manifest"
echo "[$(date)] Done!"

View File

@@ -19,10 +19,10 @@ TAG="branch-${BRANCH//\//-}"
echo "[$(date)] ${BRANCH} => ${TAG}"
cd "${SCRIPT_PATH}/../.."
echo "[$(date)] Starting image build..."
docker build -t ${CONTAINER_IMAGE_REPOSITORY}:"${TAG}" -f "${SCRIPT_PATH}/cache.Dockerfile" .
echo "[$(date)] Image build complete."
echo "[$(date)] Starting image build and push..."
export DOCKER_BUILDKIT=1
docker buildx create --use --name vscode-dev-containers
docker run --privileged --rm tonistiigi/binfmt --install all
docker buildx build --push --platform linux/amd64,linux/arm64 -t ${CONTAINER_IMAGE_REPOSITORY}:"${TAG}" -f "${SCRIPT_PATH}/cache.Dockerfile" .
echo "[$(date)] Pushing image..."
docker push ${CONTAINER_IMAGE_REPOSITORY}:"${TAG}"
echo "[$(date)] Done!"

View File

@@ -5,16 +5,19 @@
set -e
SCRIPT_PATH="$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)"
SOURCE_FOLDER="${1:-"."}"
CACHE_FOLDER="${2:-"/usr/local/etc/devcontainer-cache"}"
CACHE_FOLDER="${2:-"$HOME/.devcontainer-cache"}"
if [ ! -d "${CACHE_FOLDER}" ]; then
echo "No cache folder found. Be sure to run before-cache.sh to set one up."
exit 1
fi
echo "[$(date)] Starting cache operation..."
cd "${SOURCE_FOLDER}"
echo "[$(date)] Determining diffs..."
find -L . -not -path "*/.git/*" -and -not -path "${SCRIPT_PATH}/*.manifest" -type f > "${SCRIPT_PATH}/after.manifest"
grep -Fxvf "${SCRIPT_PATH}/before.manifest" "${SCRIPT_PATH}/after.manifest" > "${SCRIPT_PATH}/cache.manifest"
find -L . -not -path "*/.git/*" -and -not -path "${CACHE_FOLDER}/*.manifest" -type f > "${CACHE_FOLDER}/after.manifest"
grep -Fxvf "${CACHE_FOLDER}/before.manifest" "${CACHE_FOLDER}/after.manifest" > "${CACHE_FOLDER}/cache.manifest"
echo "[$(date)] Archiving diffs..."
mkdir -p "${CACHE_FOLDER}"
tar -cf "${CACHE_FOLDER}/cache.tar" --totals --files-from "${SCRIPT_PATH}/cache.manifest"
tar -cf "${CACHE_FOLDER}/cache.tar" --totals --files-from "${CACHE_FOLDER}/cache.manifest"
echo "[$(date)] Done! $(du -h "${CACHE_FOLDER}/cache.tar")"

View File

@@ -4,19 +4,21 @@
# This first stage generates cache.tar
FROM mcr.microsoft.com/vscode/devcontainers/repos/microsoft/vscode:dev as cache
ARG USERNAME=node
ARG CACHE_FOLDER="/home/${USERNAME}/.devcontainer-cache"
COPY --chown=${USERNAME}:${USERNAME} . /repo-source-tmp/
RUN mkdir /usr/local/etc/devcontainer-cache \
&& chown ${USERNAME} /usr/local/etc/devcontainer-cache /repo-source-tmp \
RUN mkdir -p ${CACHE_FOLDER} && chown ${USERNAME} ${CACHE_FOLDER} /repo-source-tmp \
&& su ${USERNAME} -c "\
cd /repo-source-tmp \
&& .devcontainer/cache/before-cache.sh \
&& .devcontainer/prepare.sh \
&& .devcontainer/cache/cache-diff.sh"
&& .devcontainer/cache/before-cache.sh . ${CACHE_FOLDER} \
&& .devcontainer/prepare.sh . ${CACHE_FOLDER} \
&& .devcontainer/cache/cache-diff.sh . ${CACHE_FOLDER}"
# This second stage starts fresh and just copies in cache.tar from the previous stage. The related
# devcontainer.json file is then setup to have postCreateCommand fire restore-diff.sh to expand it.
FROM mcr.microsoft.com/vscode/devcontainers/repos/microsoft/vscode:dev as dev-container
ARG USERNAME=node
ARG CACHE_FOLDER="/usr/local/etc/devcontainer-cache"
RUN mkdir -p "${CACHE_FOLDER}" && chown "${USERNAME}:${USERNAME}" "${CACHE_FOLDER}"
ARG CACHE_FOLDER="/home/${USERNAME}/.devcontainer-cache"
RUN mkdir -p "${CACHE_FOLDER}" \
&& chown "${USERNAME}:${USERNAME}" "${CACHE_FOLDER}" \
&& su ${USERNAME} -c "git config --global codespaces-theme.hide-status 1"
COPY --from=cache ${CACHE_FOLDER}/cache.tar ${CACHE_FOLDER}/

View File

@@ -5,9 +5,8 @@
# is already up where you would typically run a command like "yarn install".
set -e
SOURCE_FOLDER="$(cd "${1:-"."}" && pwd)"
CACHE_FOLDER="${2:-"/usr/local/etc/devcontainer-cache"}"
CACHE_FOLDER="${2:-"$HOME/.devcontainer-cache"}"
if [ ! -d "${CACHE_FOLDER}" ]; then
echo "No cache folder found."
@@ -16,7 +15,15 @@ fi
echo "[$(date)] Expanding $(du -h "${CACHE_FOLDER}/cache.tar") file to ${SOURCE_FOLDER}..."
cd "${SOURCE_FOLDER}"
tar -xf "${CACHE_FOLDER}/cache.tar"
rm -f "${CACHE_FOLDER}/cache.tar"
# Ensure user/group is correct if the UID/GID was changed for some reason
echo "+1000 +$(id -u)" > "${CACHE_FOLDER}/cache-owner-map"
echo "+1000 +$(id -g)" > "${CACHE_FOLDER}/cache-group-map"
# Untar to workspace folder, preserving permissions and order, but mapping GID/UID if required
tar --owner-map="${CACHE_FOLDER}/cache-owner-map" --group-map="${CACHE_FOLDER}/cache-group-map" -xpsf "${CACHE_FOLDER}/cache.tar"
rm -rf "${CACHE_FOLDER}"
echo "[$(date)] Done!"
# Change ownership of chrome-sandbox
sudo chown root .build/electron/chrome-sandbox
sudo chmod 4755 .build/electron/chrome-sandbox

View File

@@ -4,7 +4,7 @@
// Image contents: https://github.com/microsoft/vscode-dev-containers/blob/master/repository-containers/images/github.com/microsoft/vscode/.devcontainer/base.Dockerfile
"image": "mcr.microsoft.com/vscode/devcontainers/repos/microsoft/vscode:branch-main",
"overrideCommand": false,
"runArgs": [ "--init", "--security-opt", "seccomp=unconfined"],
"runArgs": [ "--init", "--security-opt", "seccomp=unconfined", "--shm-size=1g"],
"settings": {
"resmon.show.battery": false,
@@ -30,11 +30,11 @@
],
// Optionally loads a cached yarn install for the repo
"postCreateCommand": ".devcontainer/cache/restore-diff.sh && sudo chown node:node /workspaces",
"postCreateCommand": ".devcontainer/cache/restore-diff.sh",
"remoteUser": "node",
"hostRequirements": {
"memory": "6gb"
"memory": "8gb"
}
}

View File

@@ -1,3 +1,17 @@
**/build/*/**/*.js
**/dist/**/*.js
**/extensions/**/*.d.ts
**/extensions/**/build/**
**/extensions/**/colorize-fixtures/**
**/extensions/css-language-features/server/test/pathCompletionFixtures/**
**/extensions/html-language-features/server/lib/jquery.d.ts
**/extensions/html-language-features/server/src/test/pathCompletionFixtures/**
**/extensions/markdown-language-features/media/**
**/extensions/markdown-language-features/notebook-out/**
**/extensions/markdown-math/notebook-out/**
**/extensions/notebook-renderers/renderer-out/index.js
**/extensions/simple-browser/media/index.js
**/extensions/typescript-language-features/test-workspace/**
**/vs/nls.build.js
**/vs/nls.js
**/vs/css.build.js
@@ -8,18 +22,38 @@
**/semver/**
**/test/**/*.js
**/node_modules/**
/extensions/**/out/**
/extensions/**/build/**
**/extensions/**/out/**
**/extensions/**/build/**
/extensions/big-data-cluster/src/bigDataCluster/controller/apiGenerated.ts
/extensions/big-data-cluster/src/bigDataCluster/controller/clusterApiGenerated2.ts
**/extensions/**/colorize-fixtures/**
**/extensions/html-language-features/server/lib/jquery.d.ts
/extensions/markdown-language-features/media/**
/extensions/markdown-language-features/notebook-out/**
/extensions/typescript-basics/test/colorize-fixtures/**
/extensions/**/dist/**
**/extensions/markdown-math/notebook-out/**
**/extensions/typescript-basics/test/colorize-fixtures/**
**/extensions/**/dist/**
/extensions/types
/extensions/typescript-language-features/test-workspace/**
/test/automation/out
# These files are not linted by `yarn eslint`, so we exclude them from being linted in the editor.
# This ensures that if we add new rules and they pass CI, there are also no errors in the editor.
/resources/web/code-web.js
**/extensions/vscode-api-tests/testWorkspace/**
**/extensions/vscode-api-tests/testWorkspace2/**
**/fixtures/**
**/node_modules/**
**/out-*/**/*.js
**/out-editor-*/**
**/out/**/*.js
**/src/**/dompurify.js
**/src/**/marked.js
**/src/**/semver.js
**/src/typings/**/*.d.ts
**/src/vs/*/**/*.d.ts
**/src/vs/base/test/common/filters.perf.data.js
**/src/vs/css.build.js
**/src/vs/css.js
**/src/vs/loader.js
**/src/vs/nls.build.js
**/src/vs/nls.js
**/test/unit/assert.js
**/typings/**

View File

@@ -11,21 +11,23 @@
"header"
],
"rules": {
"no-undef": "off",
"no-unused-vars": "off",
"constructor-super": "warn",
"curly": "warn",
"curly": "off",
"eqeqeq": "warn",
"no-buffer-constructor": "warn",
"no-caller": "warn",
"no-debugger": "warn",
"no-duplicate-case": "warn",
"no-duplicate-imports": "warn",
"no-duplicate-imports": "off",
"no-eval": "warn",
"no-async-promise-executor": "off",
"no-extra-semi": "warn",
"no-new-wrappers": "warn",
"no-redeclare": "off",
"no-sparse-arrays": "warn",
"no-throw-literal": "warn",
"no-throw-literal": "off",
"no-unsafe-finally": "warn",
"no-unused-labels": "warn",
"no-restricted-globals": [
@@ -40,10 +42,10 @@
"orientation",
"context"
], // non-complete list of globals that are easy to access unintentionally
"no-var": "warn",
"no-var": "off",
"jsdoc/no-types": "warn",
"semi": "off",
"@typescript-eslint/semi": "warn",
"@typescript-eslint/semi": "off",
"@typescript-eslint/naming-convention": [
"warn",
{
@@ -54,15 +56,15 @@
}
],
"code-no-unused-expressions": [
"warn",
"off",
{
"allowTernary": true
}
],
"code-translation-remind": "warn",
"code-translation-remind": "off",
"code-no-nls-in-standalone-editor": "warn",
"code-no-standalone-editor": "warn",
"code-no-unexternalized-strings": "warn",
"code-no-unexternalized-strings": "off",
"code-layering": [
"warn",
{
@@ -90,7 +92,7 @@
}
],
"code-import-patterns": [
"warn",
"off",
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// !!! Do not relax these rules !!!
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -217,7 +219,9 @@
"azurecore",
"**/{vs,sql}/base/common/**",
"**/{vs,sql}/base/parts/*/common/**",
"**/{vs,sql}/platform/*/common/**"
"**/{vs,sql}/platform/*/common/**",
"@microsoft/1ds-post-js",
"@microsoft/1ds-core-js"
]
},
{
@@ -255,7 +259,9 @@
"**/{vs,sql}/base/{common,node}/**",
"**/{vs,sql}/base/parts/*/{common,node}/**",
"**/{vs,sql}/platform/*/{common,node}/**",
"@vscode/*", "@parcel/*", "*" // node modules
"@vscode/*", "@parcel/*", "*", // node modules
"@microsoft/1ds-post-js",
"@microsoft/1ds-core-js"
]
},
{
@@ -304,7 +310,9 @@
"**/{vs,sql}/base/test/{common,browser}/**",
"**/{vs,sql}/base/parts/*/common/**", // {{SQL CARBON EDIT}}
"**/{vs,sql}/platform/*/{common,browser}/**",
"**/{vs,sql}/platform/*/test/{common,browser}/**"
"**/{vs,sql}/platform/*/test/{common,browser}/**",
"@microsoft/1ds-post-js",
"@microsoft/1ds-core-js"
]
},
{

View File

@@ -18,4 +18,8 @@ ae1452eea678f5266ef513f22dacebb90955d6c9
# mjbvz: organize imports
494cbbd02d67e87727ec885f98d19551aa33aad1
a3cb14be7f2cceadb17adf843675b1a59537dbbd
ee1655a82ebdfd38bf8792088a6602c69f7bbd94
ee1655a82ebdfd38bf8792088a6602c69f7bbd94
# jrieken: new eslint-rule
4a130c40ed876644ed8af2943809d08221375408

1
.github/CODEOWNERS vendored
View File

@@ -5,6 +5,7 @@
/extensions/admin-tool-ext-win @Charles-Gagnon
/extensions/arc/ @Charles-Gagnon @swells @candiceye
/extensions/azcli/ @Charles-Gagnon @swells @candiceye
/extensions/azurecore/ @cssuh @cheenamalhotra
/extensions/big-data-cluster/ @Charles-Gagnon
/extensions/dacpac/ @kisantia
/extensions/notebook @azure-data-studio-notebook-devs

View File

@@ -1,11 +1,2 @@
{
"notebook": [
"claudiaregio",
"rchiodo",
"greazer",
"donjayamanne",
"jilljac",
"IanMatthewHuff",
"dynamicwebpaige"
]
}

View File

@@ -71,13 +71,14 @@ jobs:
- name: Compile and Download
run: yarn npm-run-all --max_old_space_size=4095 -lp compile "electron x64" # {{SQL CARBON EDIT}} Remove unused options playwright-install download-builtin-extensions
- name: Run Unit Tests (Electron)
- name: Run Core Unit Tests # {{SQL CARBON EDIT}} Rename to core for clarity
run: .\scripts\test.bat
# - name: Run Unit Tests (Browser) {{SQL CARBON EDIT}} disable for now
# run: yarn test-browser --browser chromium
# - name: Run Integration Tests (Electron) {{SQL CARBON EDIT}} disable for now
# {{SQL CARBON EDIT}} Rename to core for clarity
# - name: Run Core Integration Tests {{SQL CARBON EDIT}} disable for now
# run: .\scripts\test-integration.bat
linux:
@@ -137,13 +138,20 @@ jobs:
env:
SQL_NO_INLINE_SOURCEMAP: 1
- name: Run Unit Tests (Electron)
- name: Run Core Unit Tests # {{SQL CARBON EDIT}} Rename to core for clarity
id: electron-unit-tests
run: DISPLAY=:10 ./scripts/test.sh --runGlob "**/sql/**/*.test.js" --coverage
- name: Run Extension Unit Tests (Electron)
id: electron-extension-unit-tests
- name: Run Extension Unit Tests (Continue on Error) # {{SQL CARBON EDIT}} Run extension unit tests (continue on error)
id: electron-extension-unit-tests-continue-on-error
run: DISPLAY=:10 ./scripts/test-extensions-unit.sh
continueOnError: true
condition: and(succeeded(), eq(variables['EXTENSION_UNIT_TESTS_FAIL_ON_ERROR'], 'false'))
- name: Run Extension Unit Tests (Fail on Error) # {{SQL CARBON EDIT}} Run extension unit tests (fail on error)
id: electron-extension-unit-tests-fail-on-error
run: DISPLAY=:10 ./scripts/test-extensions-unit.sh
condition: and(succeeded(), ne(variables['EXTENSION_UNIT_TESTS_FAIL_ON_ERROR'], 'false'))
# {{SQL CARBON EDIT}} Add coveralls. We merge first to get around issue where parallel builds weren't being combined correctly
- name: Combine code coverage files
@@ -158,7 +166,8 @@ jobs:
# id: browser-unit-tests
# run: DISPLAY=:10 yarn test-browser --browser chromium
# - name: Run Integration Tests (Electron) {{SQL CARBON EDIT}} Skip for now
# {{SQL CARBON EDIT}} Rename to core for clarity
# - name: Run Core Integration Tests {{SQL CARBON EDIT}} Skip for now
# id: electron-integration-tests
# run: DISPLAY=:10 ./scripts/test-integration.sh
@@ -215,13 +224,14 @@ jobs:
security default-keychain -s $RUNNER_TEMP/buildagent.keychain
security unlock-keychain -p pwd $RUNNER_TEMP/buildagent.keychain
- name: Run Unit Tests (Electron)
- name: Run Core Unit Tests # {{SQL CARBON EDIT}} Rename to core for clarity
run: DISPLAY=:10 ./scripts/test.sh
# - name: Run Unit Tests (Browser) {{SQL CARBON EDIT}} Skip for now
# run: DISPLAY=:10 yarn test-browser --browser chromium
# - name: Run Integration Tests (Electron) {{SQL CARBON EDIT}} Skip for now
# {{SQL CARBON EDIT}} Rename to core for clarity
# - name: Run Core Integration Tests {{SQL CARBON EDIT}} Skip for now
# run: DISPLAY=:10 ./scripts/test-integration.sh
hygiene:

View File

@@ -1,142 +0,0 @@
{
"type": "object",
"properties": {
"registrations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"component": {
"oneOf": [
{
"type": "object",
"required": [
"type",
"git"
],
"properties": {
"type": {
"type": "string",
"enum": [
"git"
]
},
"git": {
"type": "object",
"required": [
"name",
"repositoryUrl",
"commitHash"
],
"properties": {
"name": {
"type": "string"
},
"repositoryUrl": {
"type": "string"
},
"commitHash": {
"type": "string"
}
}
}
}
},
{
"type": "object",
"required": [
"type",
"npm"
],
"properties": {
"type": {
"type": "string",
"enum": [
"npm"
]
},
"npm": {
"type": "object",
"required": [
"name",
"version"
],
"properties": {
"name": {
"type": "string"
},
"version": {
"type": "string"
}
}
}
}
},
{
"type": "object",
"required": [
"type",
"other"
],
"properties": {
"type": {
"type": "string",
"enum": [
"other"
]
},
"other": {
"type": "object",
"required": [
"name",
"downloadUrl",
"version"
],
"properties": {
"name": {
"type": "string"
},
"downloadUrl": {
"type": "string"
},
"version": {
"type": "string"
}
}
}
}
}
]
},
"repositoryUrl": {
"type": "string",
"description": "The git url of the component"
},
"version": {
"type": "string",
"description": "The version of the component"
},
"license": {
"type": "string",
"description": "The name of the license"
},
"developmentDependency": {
"type": "boolean",
"description": "This component is inlined in the vscode repo and **is not shipped**."
},
"isOnlyProductionDependency": {
"type": "boolean",
"description": "This component is shipped and **is not inlined in the vscode repo**."
},
"licenseDetail": {
"type": "array",
"items": {
"type": "string"
},
"description": "The license text"
}
}
}
}
}
}

10
.vscode/launch.json vendored
View File

@@ -1,6 +1,16 @@
{
"version": "0.1.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Gulp Build",
"program": "${workspaceFolder}/node_modules/gulp/bin/gulp.js",
"stopOnEntry": true,
"args": [
"hygiene"
]
},
{
"type": "node",
"request": "launch",

View File

@@ -7,7 +7,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$repo=repo:microsoft/vscode\n$milestone=milestone:\"October 2021\""
"value": "$repo=repo:microsoft/vscode\n$milestone=milestone:\"May 2022\""
},
{
"kind": 1,

View File

@@ -7,7 +7,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-dev repo:microsoft/vscode-js-debug repo:microsoft/vscode-remote-release repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-remotehub repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-livepreview repo:microsoft/vscode-python repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal repo:microsoft/vscode-unpkg\n\n$MILESTONE=milestone:\"October 2021\""
"value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-dev repo:microsoft/vscode-js-debug repo:microsoft/vscode-remote-release repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-remotehub repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-livepreview repo:microsoft/vscode-python repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal repo:microsoft/vscode-unpkg\n\n$MILESTONE=milestone:\"April 2022\""
},
{
"kind": 1,
@@ -64,6 +64,16 @@
"language": "github-issues",
"value": "$REPOS $MILESTONE is:issue is:closed label:feature-request -label:verification-needed -label:on-testplan -label:verified -label:*duplicate"
},
{
"kind": 1,
"language": "markdown",
"value": "## Open Test Plan Items without milestone"
},
{
"kind": 2,
"language": "github-issues",
"value": "$REPOS $MILESTONE is:issue is:open label:testplan-item no:milestone"
},
{
"kind": 1,
"language": "markdown",

View File

@@ -7,7 +7,12 @@
{
"kind": 2,
"language": "github-issues",
"value": "$inbox -label:\"needs more info\" sort:created-asc"
"value": "$inbox -label:\"needs more info\" sort:created-desc"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode label:triage-needed is:open"
},
{
"kind": 1,

View File

@@ -7,7 +7,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-dev repo:microsoft/vscode-js-debug repo:microsoft/vscode-remote-release repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-remotehub repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-livepreview repo:microsoft/vscode-python repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal\n\n$MILESTONE=milestone:\"October 2021\"\n\n$MINE=assignee:@me"
"value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-dev repo:microsoft/vscode-js-debug repo:microsoft/vscode-remote-release repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-remotehub repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-livepreview repo:microsoft/vscode-python repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal\n\n$MILESTONE=milestone:\"April 2022\"\n\n$MINE=assignee:@me"
},
{
"kind": 1,
@@ -147,7 +147,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$REPOS $MILESTONE -$MINE is:issue is:closed author:@me sort:updated-asc label:bug -label:verified -label:z-author-verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:needs-triage -label:verification-found"
"value": "$REPOS $MILESTONE -$MINE is:issue is:closed author:@me sort:updated-asc label:bug -label:unreleased -label:verified -label:z-author-verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:needs-triage -label:verification-found"
},
{
"kind": 1,
@@ -157,7 +157,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$REPOS $MILESTONE -$MINE is:issue is:closed sort:updated-asc label:bug -label:verified -label:z-author-verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:verification-found -author:aeschli -author:alexdima -author:alexr00 -author:AmandaSilver -author:bamurtaugh -author:bpasero -author:btholt -author:chrisdias -author:chrmarti -author:Chuxel -author:claudiaregio -author:connor4312 -author:dbaeumer -author:deepak1556 -author:devinvalenciano -author:digitarald -author:DonJayamanne -author:dynamicwebpaige -author:eamodio -author:egamma -author:fiveisprime -author:greazer -author:gregvanl -author:hediet -author:IanMatthewHuff -author:isidorn -author:ItalyPaleAle -author:JacksonKearl -author:joaomoreno -author:joyceerhl -author:jrieken -author:karrtikr-author:kieferrm -author:lramos15 -author:lszomoru -author:meganrogge -author:misolori -author:mjbvz -author:ornellaalt -author:orta -author:rchiodo -author:rebornix -author:RMacfarlane -author:roblourens -author:rzhao271 -author:sana-ajani -author:sandy081 -author:sbatten -author:stevencl -author:TylerLeonhardt -author:Tyriar -author:weinand "
"value": "$REPOS $MILESTONE -$MINE is:issue is:closed sort:updated-asc label:bug -label:unreleased -label:verified -label:z-author-verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:verification-found -author:aeschli -author:alexdima -author:alexr00 -author:AmandaSilver -author:bamurtaugh -author:bpasero -author:chrisdias -author:chrmarti -author:Chuxel -author:claudiaregio -author:connor4312 -author:dbaeumer -author:deepak1556 -author:devinvalenciano -author:digitarald -author:DonJayamanne -author:dynamicwebpaige -author:eamodio -author:egamma -author:fiveisprime -author:greazer -author:gregvanl -author:hediet -author:IanMatthewHuff -author:isidorn -author:ItalyPaleAle -author:JacksonKearl -author:joaomoreno -author:joyceerhl -author:jrieken -author:karrtikr-author:kieferrm -author:lramos15 -author:lszomoru -author:meganrogge -author:misolori -author:mjbvz -author:ornellaalt -author:orta -author:rchiodo -author:rebornix -author:roblourens -author:rzhao271 -author:sana-ajani -author:sandy081 -author:sbatten -author:stevencl -author:tanhakabir -author:TylerLeonhardt -author:Tyriar -author:weinand -author:kimadeline -author:amunger"
},
{
"kind": 1,
@@ -167,7 +167,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$REPOS $MILESTONE -$MINE is:issue is:closed -author:@me sort:updated-asc label:bug -label:verified -label:z-author-verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:verification-found"
"value": "$REPOS $MILESTONE -$MINE is:issue is:closed -author:@me sort:updated-asc label:bug -label:unreleased -label:verified -label:z-author-verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:verification-found"
},
{
"kind": 1,

File diff suppressed because one or more lines are too long

View File

@@ -12,7 +12,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$repos=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-dev repo:microsoft/vscode-remote-release repo:microsoft/vscode-js-debug repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-jupyter repo:microsoft/vscode-python\n$milestone=milestone:\"August 2021\""
"value": "$repos=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-dev repo:microsoft/vscode-remote-release repo:microsoft/vscode-js-debug repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-jupyter repo:microsoft/vscode-python\n$milestone=milestone:\"March 2022\""
},
{
"kind": 1,

View File

@@ -0,0 +1,42 @@
[
{
"kind": 1,
"language": "markdown",
"value": "# vscode.dev repo"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-dev milestone:\"December 2021\" is:open"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-dev milestone:\"Backlog\" is:open"
},
{
"kind": 1,
"language": "markdown",
"value": "# VS Code repo"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode label:vscode.dev is:open"
},
{
"kind": 1,
"language": "markdown",
"value": "# GitHub Repositories repos"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-remote-repositories-github milestone:\"December 2021\" is:open"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-remotehub milestone:\"December 2021\" is:open"
}
]

View File

@@ -1,101 +0,0 @@
# Query: .innerHTML =
# Flags: CaseSensitive WordMatch
# Including: src/vs/**/*.{t,j}s
# Excluding: *.test.ts, **/test/**
# ContextLines: 3
12 results - 9 files
src/vs/base/browser/dom.ts:
1359 );
1360
1361 const html = _ttpSafeInnerHtml?.createHTML(value, options) ?? insane(value, options);
1362: node.innerHTML = html as unknown as string;
1363 }
src/vs/base/browser/markdownRenderer.ts:
272 };
273
274 if (_ttpInsane) {
275: element.innerHTML = _ttpInsane.createHTML(renderedMarkdown, insaneOptions) as unknown as string;
276 } else {
277: element.innerHTML = insane(renderedMarkdown, insaneOptions);
278 }
279
280 // signal that async code blocks can be now be inserted
src/vs/editor/browser/core/markdownRenderer.ts:
88
89 const element = document.createElement('span');
90
91: element.innerHTML = MarkdownRenderer._ttpTokenizer
92 ? MarkdownRenderer._ttpTokenizer.createHTML(value, tokenization) as unknown as string
93 : tokenizeToString(value, tokenization);
94
src/vs/editor/browser/view/domLineBreaksComputer.ts:
107 allCharOffsets[i] = tmp[0];
108 allVisibleColumns[i] = tmp[1];
109 }
110: containerDomNode.innerHTML = sb.build();
111
112 containerDomNode.style.position = 'absolute';
113 containerDomNode.style.top = '10000';
src/vs/editor/browser/view/viewLayer.ts:
512 }
513 const lastChild = <HTMLElement>this.domNode.lastChild;
514 if (domNodeIsEmpty || !lastChild) {
515: this.domNode.innerHTML = newLinesHTML;
516 } else {
517 lastChild.insertAdjacentHTML('afterend', newLinesHTML);
518 }
533 if (ViewLayerRenderer._ttPolicy) {
534 invalidLinesHTML = ViewLayerRenderer._ttPolicy.createHTML(invalidLinesHTML) as unknown as string;
535 }
536: hugeDomNode.innerHTML = invalidLinesHTML;
537
538 for (let i = 0; i < ctx.linesLength; i++) {
539 const line = ctx.lines[i];
src/vs/editor/browser/widget/diffEditorWidget.ts:
2157
2158 let domNode = document.createElement('div');
2159 domNode.className = `view-lines line-delete ${MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`;
2160: domNode.innerHTML = sb.build();
2161 Configuration.applyFontInfoSlow(domNode, fontInfo);
2162
2163 let marginDomNode = document.createElement('div');
2164 marginDomNode.className = 'inline-deleted-margin-view-zone';
2165: marginDomNode.innerHTML = marginHTML.join('');
2166 Configuration.applyFontInfoSlow(marginDomNode, fontInfo);
2167
2168 return {
src/vs/editor/standalone/browser/colorizer.ts:
40 let text = domNode.firstChild ? domNode.firstChild.nodeValue : '';
41 domNode.className += ' ' + theme;
42 let render = (str: string) => {
43: domNode.innerHTML = str;
44 };
45 return this.colorize(modeService, text || '', mimeType, options).then(render, (err) => console.error(err));
46 }
src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.ts:
580 const element = DOM.$('div', { style });
581
582 const linesHtml = this.getRichTextLinesAsHtml(model, modelRange, colorMap);
583: element.innerHTML = linesHtml as unknown as string;
584 return element;
585 }
586
src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts:
375 addMouseoverListeners(outputNode, outputId);
376 const content = data.content;
377 if (content.type === RenderOutputType.Html) {
378: outputNode.innerHTML = content.htmlContent;
379 cellOutputContainer.appendChild(outputNode);
380 domEval(outputNode);
381 } else if (preloadErrs.some(e => !!e)) {

28
.vscode/settings.json vendored
View File

@@ -26,7 +26,7 @@
"test/automation/out/**": true,
"test/integration/browser/out/**": true,
"src/vs/base/test/node/uri.test.data.txt": true,
"src/vs/workbench/test/browser/api/extHostDocumentData.test.perf-data.ts": true
"src/vs/workbench/api/test/browser/extHostDocumentData.test.perf-data.ts": true
},
"lcov.path": [
"./.build/coverage/lcov.info",
@@ -57,7 +57,7 @@
"fileMatch": [
"cgmanifest.json"
],
"url": "./.vscode/cgmanifest.schema.json"
"url": "https://json.schemastore.org/component-detection-manifest.json"
},
{
"fileMatch": [
@@ -73,13 +73,33 @@
"gulp.autoDetect": "off",
"files.insertFinalNewline": true,
"[plaintext]": {
"files.insertFinalNewline": false,
"files.insertFinalNewline": false
},
"[typescript]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
"editor.defaultFormatter": "vscode.typescript-language-features",
"editor.formatOnSave": true
},
"[javascript]": {
"editor.defaultFormatter": "vscode.typescript-language-features",
"editor.formatOnSave": true
},
"typescript.tsc.autoDetect": "off",
"testing.autoRun.mode": "rerun",
"conventionalCommits.scopes": [
"tree",
"scm",
"grid",
"splitview",
"table",
"list",
"git",
"sash"
],
"editor.quickSuggestions": {
"other": "inline",
"comments": "inline",
"strings": "inline"
},
"yaml.schemas": {
"https://raw.githubusercontent.com/microsoft/azure-pipelines-vscode/master/service-schema.json": "build/azure-pipelines/**/*.yml"
},

28
.vscode/tasks.json vendored
View File

@@ -8,7 +8,8 @@
"isBackground": true,
"presentation": {
"reveal": "never",
"group": "buildWatchers"
"group": "buildWatchers",
"close": false
},
"problemMatcher": {
"owner": "typescript",
@@ -23,8 +24,8 @@
"message": 3
},
"background": {
"beginsPattern": "Starting compilation",
"endsPattern": "Finished compilation"
"beginsPattern": "Starting compilation...",
"endsPattern": "Finished compilation with"
}
}
},
@@ -35,7 +36,8 @@
"isBackground": true,
"presentation": {
"reveal": "never",
"group": "buildWatchers"
"group": "buildWatchers",
"close": false
},
"problemMatcher": {
"owner": "typescript",
@@ -100,6 +102,16 @@
"group": "build",
"problemMatcher": []
},
{
"label": "Restart VS Code - Build",
"dependsOn": [
"Kill VS Code - Build",
"VS Code - Build"
],
"group": "build",
"dependsOrder": "sequence",
"problemMatcher": []
},
{
"type": "npm",
"script": "watch-webd",
@@ -171,8 +183,12 @@
},
{
"type": "shell",
"command": "yarn web --no-launch",
"label": "Run web",
"command": "./scripts/code-server.sh",
"windows": {
"command": ".\\scripts\\code-server.bat"
},
"args": ["--no-launch", "--connection-token", "dev-token", "--port", "8080"],
"label": "Run code server",
"isBackground": true,
"problemMatcher": {
"pattern": {

View File

@@ -1,4 +1,4 @@
disturl "https://electronjs.org/headers"
target "13.6.6"
target "17.4.11"
runtime "electron"
build_from_source "true"

View File

@@ -1,5 +1,125 @@
# Change Log
## Version 1.40.1
* Release date: November 22, 2022
* Release status: General Availability
### Bug fixes in 1.40.1
* Fixed bug that caused folders in the servers tree to display incorrect contents [#21245](https://github.com/microsoft/azuredatastudio/issues/21245)
## Version 1.40.0
* Release date: November 16, 2022
* Release status: General Availability
### What's new in 1.40.0
| New Item | Details |
|----------|---------|
| Connections | Connections for SQL now default to Encrypt = 'True'. |
| ARM64 Support for macOS | ARM64 build for macOS is now available. |
| Table Designer | Announcing the General Availability of the Table Designer. |
| Table Designer | Period columns now added by default when System-Versioning table option is selected. |
| Table Designer | Added support for hash indexes for In-Memory tables, and added support for columnstore indexes. |
| Table Designer | New checkbox added, "Preview Database Updates", when making database changes to ensure that users are aware of potential risks prior to updating the database.|
| Table Designer | "Move Up" and "Move Down" buttons added to support column reordering for Primary Keys. |
| Query Plan Viewer | Announcing the General Availability of the Query Plan Viewer in Azure Data Studio. |
| Query Plan Viewer | Added support for identification of most expensive operator(s) in a plan. |
| Query Plan Viewer | Updates were made to the properties window to allow for full display of text upon hovering over a cell. Full text can also be copied. |
| Query Plan Viewer | Implemented filter functionality in the Properties pane for an execution plan. |
| Query Plan Viewer | Added support for collapsing and expanding all subcategories within the Plan Comparison Properties window. |
| Query History Extension | Announcing the General Availability of the SQL History Extension. |
| Query History Extension | Now includes ability to persist history across multiple user sessions. |
| Query History Extension | Added the ability to limit the number of entries stored in the history. |
| Schema Compare | Users can now open .scmp files directly from the context menu for existing files in the file explorer. |
| Query Editor | Now allows full display for text strings larger than 65,535 characters. |
| Query Editor | Added support for the SHIFT key when making multiple cell selections. |
| MySQL Extension | Support for MySQL extension is now available in preview. |
| Azure SQL Migration Extension | Azure SQL Database Offline Migrations is now available in preview. Customers can use this new capability to save and share reports as needed. |
| Azure SQL Migration Extension | Addition of elastic Azure recommendations model. |
| Database Migration Assessment for Oracle | Assessment tooling for Oracle database migrations to Azure Database for PostgreSQL and Azure SQL available in preview. |
| VS Code merge | VS Code merges to version 1.67. Read [their release notes](https://code.visualstudio.com/updates/v1_67) to learn more. |
| SQL Database Projects | Adds SQL projects support for syntax introduced in SQL Server 2022.|
### Bug fixes in 1.40.0
| New Item | Details |
|----------|---------|
| Connections | Fixed bug that occurred when trying to connect to the Dedicated Admin Connection (DAC) on SQL Server. |
| Connections | Fixed issue with wrong tenant showing up while trying to connect to a database with Azure Active Directory login. |
| Connections | Fixed zoom reset behavior when adding a new connection. |
| Connections | Fixed loading bug what occurred when attempting to sign in to Azure via proxy. |
| Connections | Fixed issue encountered while attempting to connect to a "sleeping" Azure SQL Database. |
| Object Explorer | Fixed the SELECT script generation issue for Synapse Databases. |
| Schema Compare | Fixed error that caused duplication of comment headers when applying schema changes on stored procedure objects. |
| Schema Compare | Fixed issue that prevented schema compare issues when creating a new empty schema with a "DOMAIN\User" pattern. |
| Query Editor | Fixed bug that caused results to be lost upon saving query files. |
| Table Designer | Fixed a bug that caused creation of a new table when renaming an existing table. |
| Query Plan Viewer | Fixed missing index recommendation T-SQL syntax. |
| SQL Projects | Fixed bug in SQL Projects that led to extension not using output path when publishing a project. |
| SQL Projects | Fixed bug that caused .NET install to not be found when using the SQL Projects extension on Linux platforms. |
## Version 1.39.1
* Release date: August 30, 2022
* Release status: General Availability
## What's new in 1.39.1
* Bug fixes in 1.39.1
* Fixed bug that caused Database Trees in server connections to not expand in the Object Explorer.
## Version 1.39.0
* Release date: August 24, 2022
* Release status: General Availability
## What's new in 1.39.0
* New Features:
* Deployment Wizard - Azure Data Studio now supports SQL Server 2022 (Preview) in the Deployment Wizard for both local and container installation.
* Object Explorer - Added Ledger icons and scripting support to Object Explorer for Ledger objects.
* Dashboard - Added hexadecimal values to support color detection.
* Query Plan Viewer - Added the ability to copy text from cells in the Properties Pane of a query plan.
* Query Plan Viewer - Introduced a "find node" option in plan comparison to search for nodes in either the original or added plan.
* Table Designer - Now supports the ability to add included columns to a nonclustered index, and the ability to create filtered indexes.
* SQL Projects - Publish options were added to the Publish Dialog.
* Query History Extension - Added double-click support for query history to either open the query or immediately execute it, based on user configuration.
* Bug Fixes:
* Dashboard - Fixed an accessibility issue that prevented users from being able to access tooltip information using the keyboard.
* Voiceover - Fixed a bug that caused voiceover errors across the Dashboard, SQL Projects, SQL Import Wizard, and SQL Migration extensions.
* Schema Compare - Fixed a bug that caused the UI to jump back to the top of the options list after selecting/deselecting any option.
* Schema Compare - Fixed a bug involving Schema Compare (.SCMP) file incompatibility with Database Project information causing errors when reading and using information stored in this file type.
* Object Explorer - Fixed a bug that caused menu items in Object Explorer not to show up for non-English languages.
* Table Designer - Fixed a bug that caused the History Table name not to be consistent with the current table name when working with System-Versioned Tables.
* Table Designer - Fixed a bug in the Primary Key settings that caused the "Allow Nulls" option to be checked, but disabled, preventing users from changing this option.
* Query Editor - Fixed a bug that prevented the SQLCMD in T-SQL from working correctly, giving false errors when running scripts in Azure Data Studio.
* Query Editor - Fixed a bug that caused user-specified zoom settings to reset to default when selecting JSON values after query that returned JSON dataset was ran.
* SQL Projects - Fixed a bug that caused the "Generate Script" command to not work correctly when targeting a new Azure SQL Database.
* Notebooks - Fixed a bug that caused pasted images to disappear from editor after going out of edit mode.
* Notebooks - Fixed a bug that caused a console error message to appear after opening a markdown file.
* Notebooks - Fixed a bug that prevented markdown cell toolbar shortcuts from working after creating a new split view cell.
* Notebooks - Fixed a bug that caused text cells to be erroneously created in split view mode when the notebook default text edit mode was set to "Markdown".
## Version 1.38.0
* Release date: July 27, 2022
* Release status: General Availability
## What's new in 1.38.0
* New Features:
* VS Code merges to 1.62 - This release includes updates to VS Code from the three previous VS Code releases. Read [their release notes](https://code.visualstudio.com/updates/v1_62) to learn more.
* Table Designer - New column added to Table Designer for easier access to additional actions specific to individual rows.
* Query Plan Viewer - The Top Operations pane view now includes clickable links to operations in each of its rows to show the runtime statistics which can be used to evaluate estimated and actual rows when analyzing a plan.
* Query Plan Viewer - Improved UI on selected operation node in the Execution Plan.
* Query Plan Viewer - The keyboard command **CTRL + M** no longer executes queries. It now just enables or disables the actual execution plan creation when a query is executed.
* Query Plan Viewer - Plan labels are now updated in the Properties window when plans are compared and the orientation is toggled from horizontal to vertical, and back.
* Query Plan Viewer - Updates were made to the Command Palette. All execution plan commands are prefixed with "Execution Plan", so that they are easier to find and use.
* Query Plan Viewer - A collapse/expand functionality is now available at the operator level to allow users to hide or display sections of the plan during analysis.
* Query History - The Query History extension was refactored to be fully implemented in an extension. This makes the history view behave like all other extension views and also allows for searching and filtering in the view by selecting the view and typing in your search text.
* Bug Fixes:
* Table Designer - Error found in edit data tab when switching back to previously selected column when adding a new row. To fix this, editing the table is now disabled while new rows are being added and only reenabled afterwards.
* Query Editor - Fixed coloring issues for new T-SQL functions in the Query Editor.
* Query Plan Viewer - Fixed bug that caused custom zoom level spinner to allow values outside valid range.
* Dashboard - Fixed issue that caused incorrect displaying of insight widgets on the dashboard.
* Notebooks - Fixed issue where keyboard shortcuts and toolbar buttons were not working when first creating a Split View markdown cell.
* Notebooks - Fixed issue where cell languages were not being set correctly when opening an ADS .NET Interactive notebook in VS Code.
* Notebooks - Fixed issue where notebook was being opened as empty when exporting a SQL query as a notebook.
* Notebooks - Disables install and uninstall buttons in Manage Packages dialog while a package is being installed or uninstalled.
* Notebooks - Fixed issue where cell toolbar buttons were not refreshing when converting cell type.
* Notebooks - Fixed issue where notebook was not opening if a cell contains an unsupported output type.
* Schema Compare - Fixed issue where views and stored procedures were not correctly recognized by schema compare after applying changes.
## Version 1.37.0
* Release date: June 15, 2022
* Release status: General Availability
@@ -23,25 +143,6 @@
* Notebooks - Fixed inconsistencies with notebook cell behavior and toolbars.
* Notebooks - Fixed issues with keyboard navigation.
| 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] |
[win-user]: https://go.microsoft.com/fwlink/?linkid=2198663
[win-system]: https://go.microsoft.com/fwlink/?linkid=2198878
[win-zip]: https://go.microsoft.com/fwlink/?linkid=2198664
[osx-zip]: https://go.microsoft.com/fwlink/?linkid=2198762
[linux-zip]: https://go.microsoft.com/fwlink/?linkid=2198879
[linux-rpm]: https://go.microsoft.com/fwlink/?linkid=2198880
[linux-deb]: https://go.microsoft.com/fwlink/?linkid=2198763
## Version 1.36.2
* Release date: May 20, 2022
* Release status: General Availability

View File

@@ -1,7 +1,7 @@
# Azure Data Studio
[![Join the chat at https://gitter.im/Microsoft/sqlopsstudio](https://badges.gitter.im/Microsoft/sqlopsstudio.svg)](https://gitter.im/Microsoft/sqlopsstudio?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://dev.azure.com/azuredatastudio/azuredatastudio/_apis/build/status/Azure%20Data%20Studio%20CI?branchName=main)](https://dev.azure.com/azuredatastudio/azuredatastudio/_build/latest?definitionId=4&branchName=main)
[![Build Status](https://dev.azure.com/ms/azuredatastudio/_apis/build/status/AzureDataStudio-Localization-CI?branchName=main)](https://dev.azure.com/ms/azuredatastudio/_build/latest?definitionId=453&branchName=main)
[![Twitter Follow](https://img.shields.io/twitter/follow/azuredatastudio?style=social)](https://twitter.com/azuredatastudio)
Azure Data Studio is a data management tool that enables you to work with SQL Server, Azure SQL DB and SQL DW from Windows, macOS and Linux.
@@ -25,7 +25,9 @@ Go to our [download page](https://aka.ms/getazuredatastudio) for more specific i
- [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 - **Insiders build**](https://azuredatastudio-update.azurewebsites.net/latest/darwin/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)
See the [change log](https://github.com/Microsoft/azuredatastudio/blob/main/CHANGELOG.md) for additional details of what's in this release.
@@ -131,10 +133,10 @@ Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the [Source EULA](LICENSE.txt).
[win-user]: https://go.microsoft.com/fwlink/?linkid=2198663
[win-system]: https://go.microsoft.com/fwlink/?linkid=2198878
[win-zip]: https://go.microsoft.com/fwlink/?linkid=2198664
[osx-zip]: https://go.microsoft.com/fwlink/?linkid=2198762
[linux-zip]: https://go.microsoft.com/fwlink/?linkid=2198879
[linux-rpm]: https://go.microsoft.com/fwlink/?linkid=2198880
[linux-deb]: https://go.microsoft.com/fwlink/?linkid=2198763
[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

@@ -1 +1 @@
2021-11-19T02:27:18.022Z
2022-10-06T02:27:18.022Z

View File

@@ -3,9 +3,12 @@
"@actions/core@^1.2.6":
version "1.2.6"
resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.2.6.tgz#a78d49f41a4def18e88ce47c2cac615d5694bf09"
integrity sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA==
version "1.9.1"
resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.9.1.tgz#97c0201b1f9856df4f7c3a375cdcdb0c2a2f750b"
integrity sha512-5ad+U2YGrmmiw6du20AQW5XuWo7UKN2052FjSV7MX+Wfjf8sCqcsZe62NfgHys4QI4/Y+vQvLKYL8jWtA1ZBTA==
dependencies:
"@actions/http-client" "^2.0.1"
uuid "^8.3.2"
"@actions/github@^2.1.1":
version "2.1.1"
@@ -23,6 +26,13 @@
dependencies:
tunnel "0.0.6"
"@actions/http-client@^2.0.1":
version "2.0.1"
resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.0.1.tgz#873f4ca98fe32f6839462a6f046332677322f99c"
integrity sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==
dependencies:
tunnel "^0.0.6"
"@octokit/auth-token@^2.4.0":
version "2.4.0"
resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.0.tgz#b64178975218b99e4dfe948253f0673cbbb59d9f"
@@ -372,7 +382,7 @@ ts-node@^8.6.2:
source-map-support "^0.5.17"
yn "3.1.1"
tunnel@0.0.6:
tunnel@0.0.6, tunnel@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
@@ -396,6 +406,11 @@ universal-user-agent@^5.0.0:
dependencies:
os-name "^3.1.0"
uuid@^8.3.2:
version "8.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
which@^1.2.9:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"

View File

@@ -10,7 +10,7 @@
],
"instanceUrl": "https://msazure.visualstudio.com/defaultcollection",
"projectName": "One",
"areaPath": "One\\VSCode\\Client",
"areaPath": "One\\VSCode\\Visual Studio Code Client",
"iterationPath": "One",
"notifyAlways": true,
"tools": [

View File

@@ -5,11 +5,11 @@
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs");
const url = require("url");
const crypto = require("crypto");
const azure = require("azure-storage");
const storage_blob_1 = require("@azure/storage-blob");
const mime = require("mime");
const cosmos_1 = require("@azure/cosmos");
const identity_1 = require("@azure/identity");
const retry_1 = require("./retry");
if (process.argv.length !== 8) {
console.error('Usage: node createAsset.js PRODUCT OS ARCH TYPE NAME FILE');
@@ -20,7 +20,7 @@ function getPlatform(product, os, arch, type) {
switch (os) {
case 'win32':
switch (product) {
case 'client':
case 'client': {
const asset = arch === 'ia32' ? 'win32' : `win32-${arch}`;
switch (type) {
case 'archive':
@@ -32,6 +32,7 @@ function getPlatform(product, os, arch, type) {
default:
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
}
case 'server':
if (arch === 'arm64') {
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
@@ -84,12 +85,15 @@ function getPlatform(product, os, arch, type) {
}
return `darwin-${arch}`;
case 'server':
return 'server-darwin';
case 'web':
if (arch !== 'x64') {
throw new Error(`What should the platform be?: ${product} ${os} ${arch} ${type}`);
if (arch === 'x64') {
return 'server-darwin';
}
return 'server-darwin-web';
return `server-darwin-${arch}`;
case 'web':
if (arch === 'x64') {
return 'server-darwin-web';
}
return `server-darwin-${arch}-web`;
default:
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
@@ -118,20 +122,6 @@ function hashStream(hashName, stream) {
.on('close', () => c(shasum.digest('hex')));
});
}
async function doesAssetExist(blobService, quality, blobName) {
const existsResult = await new Promise((c, e) => blobService.doesBlobExist(quality, blobName, (err, r) => err ? e(err) : c(r)));
return existsResult.exists;
}
async function uploadBlob(blobService, quality, blobName, filePath, fileName) {
const blobOptions = {
contentSettings: {
contentType: mime.lookup(filePath),
contentDisposition: `attachment; filename="${fileName}"`,
cacheControl: 'max-age=31536000, public'
}
};
await new Promise((c, e) => blobService.createBlockBlobFromLocalFile(quality, blobName, filePath, blobOptions, err => err ? e(err) : c()));
}
function getEnv(name) {
const result = process.env[name];
if (typeof result === 'undefined') {
@@ -140,12 +130,13 @@ function getEnv(name) {
return result;
}
async function main() {
var _a;
const [, , product, os, arch, unprocessedType, fileName, filePath] = process.argv;
// getPlatform needs the unprocessedType
const platform = getPlatform(product, os, arch, unprocessedType);
const type = getRealType(unprocessedType);
const quality = getEnv('VSCODE_QUALITY');
const commit = getEnv('BUILD_SOURCEVERSION');
const commit = process.env['VSCODE_DISTRO_COMMIT'] || getEnv('BUILD_SOURCEVERSION');
console.log('Creating asset...');
const stat = await new Promise((c, e) => fs.stat(filePath, (err, stat) => err ? e(err) : c(stat)));
const size = stat.size;
@@ -155,28 +146,48 @@ async function main() {
console.log('SHA1:', sha1hash);
console.log('SHA256:', sha256hash);
const blobName = commit + '/' + fileName;
const storageAccount = process.env['AZURE_STORAGE_ACCOUNT_2'];
const blobService = azure.createBlobService(storageAccount, process.env['AZURE_STORAGE_ACCESS_KEY_2'])
.withFilter(new azure.ExponentialRetryPolicyFilter(20));
const blobExists = await doesAssetExist(blobService, quality, blobName);
const storagePipelineOptions = { retryOptions: { retryPolicyType: storage_blob_1.StorageRetryPolicyType.EXPONENTIAL, maxTries: 6, tryTimeoutInMs: 10 * 60 * 1000 } };
const credential = new identity_1.ClientSecretCredential(process.env['AZURE_TENANT_ID'], process.env['AZURE_CLIENT_ID'], process.env['AZURE_CLIENT_SECRET']);
const blobServiceClient = new storage_blob_1.BlobServiceClient(`https://vscode.blob.core.windows.net`, credential, storagePipelineOptions);
const containerClient = blobServiceClient.getContainerClient(quality);
const blobClient = containerClient.getBlockBlobClient(blobName);
const blobExists = await blobClient.exists();
if (blobExists) {
console.log(`Blob ${quality}, ${blobName} already exists, not publishing again.`);
return;
}
const mooncakeBlobService = azure.createBlobService(storageAccount, process.env['MOONCAKE_STORAGE_ACCESS_KEY'], `${storageAccount}.blob.core.chinacloudapi.cn`)
.withFilter(new azure.ExponentialRetryPolicyFilter(20));
// mooncake is fussy and far away, this is needed!
blobService.defaultClientRequestTimeoutInMs = 10 * 60 * 1000;
mooncakeBlobService.defaultClientRequestTimeoutInMs = 10 * 60 * 1000;
console.log('Uploading blobs to Azure storage and Mooncake Azure storage...');
await (0, retry_1.retry)(() => Promise.all([
uploadBlob(blobService, quality, blobName, filePath, fileName),
uploadBlob(mooncakeBlobService, quality, blobName, filePath, fileName)
]));
console.log('Blobs successfully uploaded.');
// TODO: Understand if blobName and blobPath are the same and replace blobPath with blobName if so.
const blobOptions = {
blobHTTPHeaders: {
blobContentType: mime.lookup(filePath),
blobContentDisposition: `attachment; filename="${fileName}"`,
blobCacheControl: 'max-age=31536000, public'
}
};
const uploadPromises = [
(0, retry_1.retry)(async () => {
await blobClient.uploadFile(filePath, blobOptions);
console.log('Blob successfully uploaded to Azure storage.');
})
];
const shouldUploadToMooncake = /true/i.test((_a = process.env['VSCODE_PUBLISH_TO_MOONCAKE']) !== null && _a !== void 0 ? _a : 'true');
if (shouldUploadToMooncake) {
const mooncakeCredential = new identity_1.ClientSecretCredential(process.env['AZURE_MOONCAKE_TENANT_ID'], process.env['AZURE_MOONCAKE_CLIENT_ID'], process.env['AZURE_MOONCAKE_CLIENT_SECRET']);
const mooncakeBlobServiceClient = new storage_blob_1.BlobServiceClient(`https://vscode.blob.core.chinacloudapi.cn`, mooncakeCredential, storagePipelineOptions);
const mooncakeContainerClient = mooncakeBlobServiceClient.getContainerClient(quality);
const mooncakeBlobClient = mooncakeContainerClient.getBlockBlobClient(blobName);
uploadPromises.push((0, retry_1.retry)(async () => {
await mooncakeBlobClient.uploadFile(filePath, blobOptions);
console.log('Blob successfully uploaded to Mooncake Azure storage.');
}));
console.log('Uploading blobs to Azure storage and Mooncake Azure storage...');
}
else {
console.log('Uploading blobs to Azure storage...');
}
await Promise.all(uploadPromises);
console.log('All blobs successfully uploaded.');
const assetUrl = `${process.env['AZURE_CDN_URL']}/${quality}/${blobName}`;
const blobPath = url.parse(assetUrl).path;
const blobPath = new URL(assetUrl).pathname;
const mooncakeUrl = `${process.env['MOONCAKE_CDN_URL']}${blobPath}`;
const asset = {
platform,
@@ -192,7 +203,7 @@ async function main() {
asset.supportsFastUpdate = true;
}
console.log('Asset:', JSON.stringify(asset, null, ' '));
const client = new cosmos_1.CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT'], key: process.env['AZURE_DOCUMENTDB_MASTERKEY'] });
const client = new cosmos_1.CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT'], aadCredentials: credential });
const scripts = client.database('builds').container(quality).scripts;
await (0, retry_1.retry)(() => scripts.storedProcedure('createAsset').execute('', [commit, asset, true]));
console.log(` Done ✔️`);

View File

@@ -6,12 +6,12 @@
'use strict';
import * as fs from 'fs';
import * as url from 'url';
import { Readable } from 'stream';
import * as crypto from 'crypto';
import * as azure from 'azure-storage';
import { BlobServiceClient, BlockBlobParallelUploadOptions, StoragePipelineOptions, StorageRetryPolicyType } from '@azure/storage-blob';
import * as mime from 'mime';
import { CosmosClient } from '@azure/cosmos';
import { ClientSecretCredential } from '@azure/identity';
import { retry } from './retry';
interface Asset {
@@ -35,7 +35,7 @@ function getPlatform(product: string, os: string, arch: string, type: string): s
switch (os) {
case 'win32':
switch (product) {
case 'client':
case 'client': {
const asset = arch === 'ia32' ? 'win32' : `win32-${arch}`;
switch (type) {
case 'archive':
@@ -47,6 +47,7 @@ function getPlatform(product: string, os: string, arch: string, type: string): s
default:
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
}
case 'server':
if (arch === 'arm64') {
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
@@ -99,12 +100,15 @@ function getPlatform(product: string, os: string, arch: string, type: string): s
}
return `darwin-${arch}`;
case 'server':
return 'server-darwin';
case 'web':
if (arch !== 'x64') {
throw new Error(`What should the platform be?: ${product} ${os} ${arch} ${type}`);
if (arch === 'x64') {
return 'server-darwin';
}
return 'server-darwin-web';
return `server-darwin-${arch}`;
case 'web':
if (arch === 'x64') {
return 'server-darwin-web';
}
return `server-darwin-${arch}-web`;
default:
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
@@ -137,23 +141,6 @@ function hashStream(hashName: string, stream: Readable): Promise<string> {
});
}
async function doesAssetExist(blobService: azure.BlobService, quality: string, blobName: string): Promise<boolean | undefined> {
const existsResult = await new Promise<azure.BlobService.BlobResult>((c, e) => blobService.doesBlobExist(quality, blobName, (err, r) => err ? e(err) : c(r)));
return existsResult.exists;
}
async function uploadBlob(blobService: azure.BlobService, quality: string, blobName: string, filePath: string, fileName: string): Promise<void> {
const blobOptions: azure.BlobService.CreateBlockBlobRequestOptions = {
contentSettings: {
contentType: mime.lookup(filePath),
contentDisposition: `attachment; filename="${fileName}"`,
cacheControl: 'max-age=31536000, public'
}
};
await new Promise<void>((c, e) => blobService.createBlockBlobFromLocalFile(quality, blobName, filePath, blobOptions, err => err ? e(err) : c()));
}
function getEnv(name: string): string {
const result = process.env[name];
@@ -170,7 +157,7 @@ async function main(): Promise<void> {
const platform = getPlatform(product, os, arch, unprocessedType);
const type = getRealType(unprocessedType);
const quality = getEnv('VSCODE_QUALITY');
const commit = getEnv('BUILD_SOURCEVERSION');
const commit = process.env['VSCODE_DISTRO_COMMIT'] || getEnv('BUILD_SOURCEVERSION');
console.log('Creating asset...');
@@ -186,37 +173,58 @@ async function main(): Promise<void> {
console.log('SHA256:', sha256hash);
const blobName = commit + '/' + fileName;
const storageAccount = process.env['AZURE_STORAGE_ACCOUNT_2']!;
const blobService = azure.createBlobService(storageAccount, process.env['AZURE_STORAGE_ACCESS_KEY_2']!)
.withFilter(new azure.ExponentialRetryPolicyFilter(20));
const storagePipelineOptions: StoragePipelineOptions = { retryOptions: { retryPolicyType: StorageRetryPolicyType.EXPONENTIAL, maxTries: 6, tryTimeoutInMs: 10 * 60 * 1000 } };
const blobExists = await doesAssetExist(blobService, quality, blobName);
const credential = new ClientSecretCredential(process.env['AZURE_TENANT_ID']!, process.env['AZURE_CLIENT_ID']!, process.env['AZURE_CLIENT_SECRET']!);
const blobServiceClient = new BlobServiceClient(`https://vscode.blob.core.windows.net`, credential, storagePipelineOptions);
const containerClient = blobServiceClient.getContainerClient(quality);
const blobClient = containerClient.getBlockBlobClient(blobName);
const blobExists = await blobClient.exists();
if (blobExists) {
console.log(`Blob ${quality}, ${blobName} already exists, not publishing again.`);
return;
}
const mooncakeBlobService = azure.createBlobService(storageAccount, process.env['MOONCAKE_STORAGE_ACCESS_KEY']!, `${storageAccount}.blob.core.chinacloudapi.cn`)
.withFilter(new azure.ExponentialRetryPolicyFilter(20));
const blobOptions: BlockBlobParallelUploadOptions = {
blobHTTPHeaders: {
blobContentType: mime.lookup(filePath),
blobContentDisposition: `attachment; filename="${fileName}"`,
blobCacheControl: 'max-age=31536000, public'
}
};
// mooncake is fussy and far away, this is needed!
blobService.defaultClientRequestTimeoutInMs = 10 * 60 * 1000;
mooncakeBlobService.defaultClientRequestTimeoutInMs = 10 * 60 * 1000;
const uploadPromises: Promise<void>[] = [
retry(async () => {
await blobClient.uploadFile(filePath, blobOptions);
console.log('Blob successfully uploaded to Azure storage.');
})
];
console.log('Uploading blobs to Azure storage and Mooncake Azure storage...');
const shouldUploadToMooncake = /true/i.test(process.env['VSCODE_PUBLISH_TO_MOONCAKE'] ?? 'true');
await retry(() => Promise.all([
uploadBlob(blobService, quality, blobName, filePath, fileName),
uploadBlob(mooncakeBlobService, quality, blobName, filePath, fileName)
]));
if (shouldUploadToMooncake) {
const mooncakeCredential = new ClientSecretCredential(process.env['AZURE_MOONCAKE_TENANT_ID']!, process.env['AZURE_MOONCAKE_CLIENT_ID']!, process.env['AZURE_MOONCAKE_CLIENT_SECRET']!);
const mooncakeBlobServiceClient = new BlobServiceClient(`https://vscode.blob.core.chinacloudapi.cn`, mooncakeCredential, storagePipelineOptions);
const mooncakeContainerClient = mooncakeBlobServiceClient.getContainerClient(quality);
const mooncakeBlobClient = mooncakeContainerClient.getBlockBlobClient(blobName);
console.log('Blobs successfully uploaded.');
uploadPromises.push(retry(async () => {
await mooncakeBlobClient.uploadFile(filePath, blobOptions);
console.log('Blob successfully uploaded to Mooncake Azure storage.');
}));
console.log('Uploading blobs to Azure storage and Mooncake Azure storage...');
} else {
console.log('Uploading blobs to Azure storage...');
}
await Promise.all(uploadPromises);
console.log('All blobs successfully uploaded.');
// TODO: Understand if blobName and blobPath are the same and replace blobPath with blobName if so.
const assetUrl = `${process.env['AZURE_CDN_URL']}/${quality}/${blobName}`;
const blobPath = url.parse(assetUrl).path;
const blobPath = new URL(assetUrl).pathname;
const mooncakeUrl = `${process.env['MOONCAKE_CDN_URL']}${blobPath}`;
const asset: Asset = {
@@ -236,7 +244,7 @@ async function main(): Promise<void> {
console.log('Asset:', JSON.stringify(asset, null, ' '));
const client = new CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT']!, key: process.env['AZURE_DOCUMENTDB_MASTERKEY'] });
const client = new CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT']!, aadCredentials: credential });
const scripts = client.database('builds').container(quality).scripts;
await retry(() => scripts.storedProcedure('createAsset').execute('', [commit, asset, true]));

View File

@@ -4,6 +4,7 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
const identity_1 = require("@azure/identity");
const cosmos_1 = require("@azure/cosmos");
const retry_1 = require("./retry");
if (process.argv.length !== 3) {
@@ -18,11 +19,12 @@ function getEnv(name) {
return result;
}
async function main() {
var _a, _b, _c;
const [, , _version] = process.argv;
const quality = getEnv('VSCODE_QUALITY');
const commit = getEnv('BUILD_SOURCEVERSION');
const commit = ((_a = process.env['VSCODE_DISTRO_COMMIT']) === null || _a === void 0 ? void 0 : _a.trim()) || getEnv('BUILD_SOURCEVERSION');
const queuedBy = getEnv('BUILD_QUEUEDBY');
const sourceBranch = getEnv('BUILD_SOURCEBRANCH');
const sourceBranch = ((_b = process.env['VSCODE_DISTRO_REF']) === null || _b === void 0 ? void 0 : _b.trim()) || getEnv('BUILD_SOURCEBRANCH');
const version = _version + (quality === 'stable' ? '' : `-${quality}`);
console.log('Creating build...');
console.log('Quality:', quality);
@@ -33,12 +35,14 @@ async function main() {
timestamp: (new Date()).getTime(),
version,
isReleased: false,
private: Boolean((_c = process.env['VSCODE_DISTRO_REF']) === null || _c === void 0 ? void 0 : _c.trim()),
sourceBranch,
queuedBy,
assets: [],
updates: {}
};
const client = new cosmos_1.CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT'], key: process.env['AZURE_DOCUMENTDB_MASTERKEY'] });
const aadCredentials = new identity_1.ClientSecretCredential(process.env['AZURE_TENANT_ID'], process.env['AZURE_CLIENT_ID'], process.env['AZURE_CLIENT_SECRET']);
const client = new cosmos_1.CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT'], aadCredentials });
const scripts = client.database('builds').container(quality).scripts;
await (0, retry_1.retry)(() => scripts.storedProcedure('createBuild').execute('', [Object.assign(Object.assign({}, build), { _partitionKey: '' })]));
}

View File

@@ -5,6 +5,7 @@
'use strict';
import { ClientSecretCredential } from '@azure/identity';
import { CosmosClient } from '@azure/cosmos';
import { retry } from './retry';
@@ -26,9 +27,9 @@ function getEnv(name: string): string {
async function main(): Promise<void> {
const [, , _version] = process.argv;
const quality = getEnv('VSCODE_QUALITY');
const commit = getEnv('BUILD_SOURCEVERSION');
const commit = process.env['VSCODE_DISTRO_COMMIT']?.trim() || getEnv('BUILD_SOURCEVERSION');
const queuedBy = getEnv('BUILD_QUEUEDBY');
const sourceBranch = getEnv('BUILD_SOURCEBRANCH');
const sourceBranch = process.env['VSCODE_DISTRO_REF']?.trim() || getEnv('BUILD_SOURCEBRANCH');
const version = _version + (quality === 'stable' ? '' : `-${quality}`);
console.log('Creating build...');
@@ -41,13 +42,15 @@ async function main(): Promise<void> {
timestamp: (new Date()).getTime(),
version,
isReleased: false,
private: Boolean(process.env['VSCODE_DISTRO_REF']?.trim()),
sourceBranch,
queuedBy,
assets: [],
updates: {}
};
const client = new CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT']!, key: process.env['AZURE_DOCUMENTDB_MASTERKEY'] });
const aadCredentials = new ClientSecretCredential(process.env['AZURE_TENANT_ID']!, process.env['AZURE_CLIENT_ID']!, process.env['AZURE_CLIENT_SECRET']!);
const client = new CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT']!, aadCredentials });
const scripts = client.database('builds').container(quality).scripts;
await retry(() => scripts.storedProcedure('createBuild').execute('', [{ ...build, _partitionKey: '' }]));
}

View File

@@ -5,7 +5,7 @@
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const retry_1 = require("./retry");
const { installDefaultBrowsersForNpmInstall } = require('playwright/lib/utils/registry');
const { installDefaultBrowsersForNpmInstall } = require('playwright-core/lib/server');
async function install() {
await (0, retry_1.retry)(() => installDefaultBrowsersForNpmInstall());
}

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import { retry } from './retry';
const { installDefaultBrowsersForNpmInstall } = require('playwright/lib/utils/registry');
const { installDefaultBrowsersForNpmInstall } = require('playwright-core/lib/server');
async function install() {
await retry(() => installDefaultBrowsersForNpmInstall());

View File

@@ -4,6 +4,7 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
const identity_1 = require("@azure/identity");
const cosmos_1 = require("@azure/cosmos");
const retry_1 = require("./retry");
function getEnv(name) {
@@ -28,9 +29,10 @@ async function getConfig(client, quality) {
return res.resources[0];
}
async function main() {
const commit = getEnv('BUILD_SOURCEVERSION');
const commit = process.env['VSCODE_DISTRO_COMMIT'] || getEnv('BUILD_SOURCEVERSION');
const quality = getEnv('VSCODE_QUALITY');
const client = new cosmos_1.CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT'], key: process.env['AZURE_DOCUMENTDB_MASTERKEY'] });
const aadCredentials = new identity_1.ClientSecretCredential(process.env['AZURE_TENANT_ID'], process.env['AZURE_CLIENT_ID'], process.env['AZURE_CLIENT_SECRET']);
const client = new cosmos_1.CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT'], aadCredentials });
const config = await getConfig(client, quality);
console.log('Quality config:', config);
if (config.frozen) {

View File

@@ -5,6 +5,7 @@
'use strict';
import { ClientSecretCredential } from '@azure/identity';
import { CosmosClient } from '@azure/cosmos';
import { retry } from './retry';
@@ -43,10 +44,11 @@ async function getConfig(client: CosmosClient, quality: string): Promise<Config>
}
async function main(): Promise<void> {
const commit = getEnv('BUILD_SOURCEVERSION');
const commit = process.env['VSCODE_DISTRO_COMMIT'] || getEnv('BUILD_SOURCEVERSION');
const quality = getEnv('VSCODE_QUALITY');
const client = new CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT']!, key: process.env['AZURE_DOCUMENTDB_MASTERKEY'] });
const aadCredentials = new ClientSecretCredential(process.env['AZURE_TENANT_ID']!, process.env['AZURE_CLIENT_ID']!, process.env['AZURE_CLIENT_SECRET']!);
const client = new CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT']!, aadCredentials });
const config = await getConfig(client, quality);
console.log('Quality config:', config);

View File

@@ -6,20 +6,23 @@
Object.defineProperty(exports, "__esModule", { value: true });
exports.retry = void 0;
async function retry(fn) {
let lastError;
for (let run = 1; run <= 10; run++) {
try {
return await fn();
}
catch (err) {
if (!/ECONNRESET/.test(err.message)) {
if (!/ECONNRESET|CredentialUnavailableError|Audience validation failed/i.test(err.message)) {
throw err;
}
lastError = err;
const millis = (Math.random() * 200) + (50 * Math.pow(1.5, run));
console.log(`Failed with ECONNRESET, retrying in ${millis}ms...`);
console.log(`Request failed, retrying in ${millis}ms...`);
// maximum delay is 10th retry: ~3 seconds
await new Promise(c => setTimeout(c, millis));
}
}
throw new Error('Retried too many times');
console.log(`Too many retries, aborting.`);
throw lastError;
}
exports.retry = retry;

View File

@@ -6,21 +6,25 @@
'use strict';
export async function retry<T>(fn: () => Promise<T>): Promise<T> {
let lastError: Error | undefined;
for (let run = 1; run <= 10; run++) {
try {
return await fn();
} catch (err) {
if (!/ECONNRESET/.test(err.message)) {
if (!/ECONNRESET|CredentialUnavailableError|Audience validation failed/i.test(err.message)) {
throw err;
}
lastError = err;
const millis = (Math.random() * 200) + (50 * Math.pow(1.5, run));
console.log(`Failed with ECONNRESET, retrying in ${millis}ms...`);
console.log(`Request failed, retrying in ${millis}ms...`);
// maximum delay is 10th retry: ~3 seconds
await new Promise(c => setTimeout(c, millis));
}
}
throw new Error('Retried too many times');
console.log(`Too many retries, aborting.`);
throw lastError;
}

View File

@@ -18,7 +18,7 @@ function getParams(type) {
case 'darwin-sign':
return '[{"keyCode":"CP-401337-Apple","operationSetCode":"MacAppDeveloperSign","parameters":[{"parameterName":"Hardening","parameterValue":"--options=runtime"}],"toolName":"sign","toolVersion":"1.0"}]';
case 'darwin-notarize':
return '[{"keyCode":"CP-401337-Apple","operationSetCode":"MacAppNotarize","parameters":[{"parameterName":"BundleId","parameterValue":"$(BundleIdentifier)"}],"toolName":"sign","toolVersion":"1.0"}]';
return '[{"keyCode":"CP-401337-Apple","operationSetCode":"MacAppNotarize","parameters":[],"toolName":"sign","toolVersion":"1.0"}]';
default:
throw new Error(`Sign type ${type} not found`);
}

View File

@@ -17,7 +17,7 @@ function getParams(type: string): string {
case 'darwin-sign':
return '[{"keyCode":"CP-401337-Apple","operationSetCode":"MacAppDeveloperSign","parameters":[{"parameterName":"Hardening","parameterValue":"--options=runtime"}],"toolName":"sign","toolVersion":"1.0"}]';
case 'darwin-notarize':
return '[{"keyCode":"CP-401337-Apple","operationSetCode":"MacAppNotarize","parameters":[{"parameterName":"BundleId","parameterValue":"$(BundleIdentifier)"}],"toolName":"sign","toolVersion":"1.0"}]';
return '[{"keyCode":"CP-401337-Apple","operationSetCode":"MacAppNotarize","parameters":[],"toolName":"sign","toolVersion":"1.0"}]';
default:
throw new Error(`Sign type ${type} not found`);
}

View File

@@ -0,0 +1,11 @@
{
"tool": "Credential Scanner",
"suppressions": [
{
"file": [
"src/vs/base/test/common/uri.test.ts"
],
"_justification": "These are not passwords, they are URIs."
}
]
}

View File

@@ -0,0 +1,12 @@
{
"instanceUrl": "https://msazure.visualstudio.com/defaultcollection",
"projectName": "One",
"areaPath": "One\\VSCode\\Client",
"iterationPath": "One",
"notificationAliases": [
"sbatten@microsoft.com"
],
"ppe": "false",
"template": "TFSMSAzure",
"codebaseName": "vscode-client"
}

View File

@@ -8,6 +8,8 @@
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.device.audio-input</key>
<true/>
<key>com.apple.security.device.camera</key>

View File

@@ -49,7 +49,7 @@ steps:
- script: |
./scripts/test.sh --tfs "Unit Tests"
displayName: Run Unit Tests (Electron)
displayName: Run Core Unit Tests # {{SQL CARBON EDIT}} Rename to core for clarity
# - script: | {{SQL CARBON EDIT}} disable
# yarn test-browser --browser chromium --browser webkit --browser firefox --tfs "Browser Unit Tests"
@@ -57,7 +57,7 @@ steps:
# - script: | {{SQL CARBON EDIT}} disable
# ./scripts/test-integration.sh --tfs "Integration Tests"
# displayName: Run Integration Tests (Electron)
# displayName: Run Core Integration Tests # {{SQL CARBON EDIT}} Rename to core for clarity
- task: PublishPipelineArtifact@0
inputs:

View File

@@ -4,11 +4,5 @@
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
</dict>
</plist>

View File

@@ -1,7 +1,7 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
versionSpec: "16.x"
- task: AzureKeyVault@1
displayName: "Azure Key Vault: Get Secrets"
@@ -22,6 +22,14 @@ steps:
git config user.name "VSCode"
displayName: Prepare tooling
- script: |
set -e
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
echo "##vso[task.setvariable variable=VSCODE_DISTRO_COMMIT;]$(git rev-parse FETCH_HEAD)"
git checkout FETCH_HEAD
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
displayName: Checkout override commit
- script: |
set -e
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
@@ -29,9 +37,23 @@ steps:
- script: |
set -e
yarn --cwd build
yarn --cwd build compile
displayName: Compile build tools
npx https://aka.ms/enablesecurefeed standAlone
timeoutInMinutes: 5
retryCountOnTaskFailure: 3
condition: and(succeeded(), eq(variables['ENABLE_TERRAPIN'], 'true'))
displayName: Switch to Terrapin packages
- script: |
set -e
for i in {1..3}; do # try 3 times, for Terrapin
yarn --cwd build --frozen-lockfile --check-files && break
if [ $i -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
fi
echo "Yarn failed $i, trying again..."
done
displayName: Install build dependencies
- download: current
artifact: unsigned_vscode_client_darwin_$(VSCODE_ARCH)_archive
@@ -55,13 +77,6 @@ steps:
node build/azure-pipelines/common/sign "$(esrpclient.toolpath)/$(esrpclient.toolname)" darwin-sign $(ESRP-PKI) $(esrp-aad-username) $(esrp-aad-password) $(agent.builddirectory) VSCode-darwin-$(VSCODE_ARCH).zip
displayName: Codesign
- script: |
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
APP_NAME="`ls $APP_ROOT | head -n 1`"
BUNDLE_IDENTIFIER=$(node -p "require(\"$APP_ROOT/$APP_NAME/Contents/Resources/app/product.json\").darwinBundleIdentifier")
echo "##vso[task.setvariable variable=BundleIdentifier]$BUNDLE_IDENTIFIER"
displayName: Export bundle identifier
- script: |
set -e
node build/azure-pipelines/common/sign "$(esrpclient.toolpath)/$(esrpclient.toolname)" darwin-notarize $(ESRP-PKI) $(esrp-aad-username) $(esrp-aad-password) $(agent.builddirectory) VSCode-darwin-$(VSCODE_ARCH).zip

View File

@@ -0,0 +1,274 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: "16.x"
- task: AzureKeyVault@1
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: "github-distro-mixin-password,macos-developer-certificate,macos-developer-certificate-key"
- task: DownloadPipelineArtifact@2
inputs:
artifact: Compilation
path: $(Build.ArtifactStagingDirectory)
displayName: Download compilation output
- script: |
set -e
tar -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz
displayName: Extract compilation output
# Set up the credentials to retrieve distro repo and setup git persona
# to create a merge commit for when we merge distro into oss
- script: |
set -e
cat << EOF > ~/.netrc
machine github.com
login vscode
password $(github-distro-mixin-password)
EOF
git config user.email "vscode@microsoft.com"
git config user.name "VSCode"
displayName: Prepare tooling
- script: |
set -e
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
echo "##vso[task.setvariable variable=VSCODE_DISTRO_COMMIT;]$(git rev-parse FETCH_HEAD)"
git checkout FETCH_HEAD
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
displayName: Checkout override commit
- script: |
set -e
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
displayName: Merge distro
- script: |
mkdir -p .build
node build/azure-pipelines/common/computeNodeModulesCacheKey.js $VSCODE_ARCH $ENABLE_TERRAPIN > .build/yarnlockhash
displayName: Prepare yarn cache flags
- task: Cache@2
inputs:
key: "nodeModules | $(Agent.OS) | .build/yarnlockhash"
path: .build/node_modules_cache
cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache
- script: |
set -e
tar -xzf .build/node_modules_cache/cache.tgz
condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))
displayName: Extract node_modules cache
- script: |
set -e
npm install -g node-gyp@latest
node-gyp --version
displayName: Update node-gyp
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
- script: |
set -e
npx https://aka.ms/enablesecurefeed standAlone
timeoutInMinutes: 5
retryCountOnTaskFailure: 3
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
displayName: Switch to Terrapin packages
- script: |
set -e
export npm_config_arch=$(VSCODE_ARCH)
export npm_config_node_gyp=$(which node-gyp)
for i in {1..3}; do # try 3 times, for Terrapin
yarn --frozen-lockfile --check-files && break
if [ $i -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
fi
echo "Yarn failed $i, trying again..."
done
env:
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Install dependencies
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
- script: |
set -e
node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt
mkdir -p .build/node_modules_cache
tar -czf .build/node_modules_cache/cache.tgz --files-from .build/node_modules_list.txt
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
displayName: Create node_modules archive
# This script brings in the right resources (images, icons, etc) based on the quality (insiders, stable, exploration)
- script: |
set -e
node build/azure-pipelines/mixin
displayName: Mix in quality
- script: |
set -e
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
yarn gulp vscode-darwin-$(VSCODE_ARCH)-min-ci
displayName: Build client
- script: |
set -e
node build/azure-pipelines/mixin --server
displayName: Mix in server quality
- script: |
set -e
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
yarn gulp vscode-reh-darwin-$(VSCODE_ARCH)-min-ci
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
yarn gulp vscode-reh-web-darwin-$(VSCODE_ARCH)-min-ci
displayName: Build Server
- script: |
set -e
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
yarn npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install"
displayName: Download Electron and Playwright
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
# Setting hardened entitlements is a requirement for:
# * Running tests on Big Sur (because Big Sur has additional security precautions)
- script: |
set -e
security create-keychain -p pwd $(agent.tempdirectory)/buildagent.keychain
security default-keychain -s $(agent.tempdirectory)/buildagent.keychain
security unlock-keychain -p pwd $(agent.tempdirectory)/buildagent.keychain
echo "$(macos-developer-certificate)" | base64 -D > $(agent.tempdirectory)/cert.p12
security import $(agent.tempdirectory)/cert.p12 -k $(agent.tempdirectory)/buildagent.keychain -P "$(macos-developer-certificate-key)" -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k pwd $(agent.tempdirectory)/buildagent.keychain
VSCODE_ARCH=$(VSCODE_ARCH) DEBUG=electron-osx-sign* node build/darwin/sign.js
displayName: Set Hardened Entitlements
- script: |
set -e
./scripts/test.sh --build --tfs "Unit Tests"
displayName: Run unit tests (Electron)
timeoutInMinutes: 15
- script: |
set -e
yarn test-node --build
displayName: Run unit tests (node.js)
timeoutInMinutes: 15
- script: |
set -e
DEBUG=*browser* yarn test-browser-no-install --sequential --build --browser chromium --browser webkit --tfs "Browser Unit Tests"
displayName: Run unit tests (Browser, Chromium & Webkit)
timeoutInMinutes: 30
- script: |
# Figure out the full absolute path of the product we just built
# including the remote server and configure the integration tests
# to run with these builds instead of running out of sources.
set -e
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
APP_NAME="`ls $APP_ROOT | head -n 1`"
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME/Contents/MacOS/Electron" \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin-$(VSCODE_ARCH)" \
./scripts/test-integration.sh --build --tfs "Integration Tests"
displayName: Run integration tests (Electron)
timeoutInMinutes: 20
- script: |
set -e
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-darwin-$(VSCODE_ARCH)" \
./scripts/test-web-integration.sh --browser webkit
displayName: Run integration tests (Browser, Webkit)
timeoutInMinutes: 20
- script: |
set -e
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
APP_NAME="`ls $APP_ROOT | head -n 1`"
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME/Contents/MacOS/Electron" \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin-$(VSCODE_ARCH)" \
./scripts/test-remote-integration.sh
displayName: Run integration tests (Remote)
timeoutInMinutes: 20
- script: |
set -e
ps -ef
displayName: Diagnostics before smoke test run
continueOnError: true
condition: succeededOrFailed()
- script: |
set -e
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-darwin-$(VSCODE_ARCH)" \
yarn smoketest-no-compile --web --tracing --headless
timeoutInMinutes: 10
displayName: Run smoke tests (Browser, Chromium)
- script: |
set -e
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
APP_NAME="`ls $APP_ROOT | head -n 1`"
yarn smoketest-no-compile --tracing --build "$APP_ROOT/$APP_NAME"
timeoutInMinutes: 20
displayName: Run smoke tests (Electron)
- script: |
set -e
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
APP_NAME="`ls $APP_ROOT | head -n 1`"
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin-$(VSCODE_ARCH)" \
yarn smoketest-no-compile --tracing --remote --build "$APP_ROOT/$APP_NAME"
timeoutInMinutes: 20
displayName: Run smoke tests (Remote)
- script: |
set -e
ps -ef
displayName: Diagnostics after smoke test run
continueOnError: true
condition: succeededOrFailed()
- task: PublishPipelineArtifact@0
inputs:
artifactName: crash-dump-macos-$(VSCODE_ARCH)
targetPath: .build/crashes
displayName: "Publish Crash Reports"
continueOnError: true
condition: failed()
# In order to properly symbolify above crash reports
# (if any), we need the compiled native modules too
- task: PublishPipelineArtifact@0
inputs:
artifactName: node-modules-macos-$(VSCODE_ARCH)
targetPath: node_modules
displayName: "Publish Node Modules"
continueOnError: true
condition: failed()
- task: PublishPipelineArtifact@0
inputs:
artifactName: logs-macos-$(VSCODE_ARCH)-$(System.JobAttempt)
targetPath: .build/logs
displayName: "Publish Log Files"
continueOnError: true
condition: failed()
- task: PublishTestResults@2
displayName: Publish Tests Results
inputs:
testResultsFiles: "*-results.xml"
searchFolder: "$(Build.ArtifactStagingDirectory)/test-results"
condition: succeededOrFailed()

View File

@@ -0,0 +1,95 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: "16.x"
- task: AzureKeyVault@1
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: "github-distro-mixin-password,macos-developer-certificate,macos-developer-certificate-key"
- script: |
set -e
cat << EOF > ~/.netrc
machine github.com
login vscode
password $(github-distro-mixin-password)
EOF
git config user.email "vscode@microsoft.com"
git config user.name "VSCode"
displayName: Prepare tooling
- script: |
set -e
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
echo "##vso[task.setvariable variable=VSCODE_DISTRO_COMMIT;]$(git rev-parse FETCH_HEAD)"
git checkout FETCH_HEAD
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
displayName: Checkout override commit
- script: |
set -e
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
displayName: Merge distro
- script: |
mkdir -p .build
node build/azure-pipelines/common/computeNodeModulesCacheKey.js x64 $ENABLE_TERRAPIN > .build/yarnlockhash
displayName: Prepare yarn cache flags
- task: Cache@2
inputs:
key: "nodeModules | $(Agent.OS) | .build/yarnlockhash"
path: .build/node_modules_cache
cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache
- script: |
set -e
tar -xzf .build/node_modules_cache/cache.tgz
displayName: Extract node_modules cache
- script: |
set -e
node build/azure-pipelines/mixin
displayName: Mix in quality
- download: current
artifact: unsigned_vscode_client_darwin_x64_archive
displayName: Download x64 artifact
- download: current
artifact: unsigned_vscode_client_darwin_arm64_archive
displayName: Download arm64 artifact
- script: |
set -e
cp $(Pipeline.Workspace)/unsigned_vscode_client_darwin_x64_archive/VSCode-darwin-x64.zip $(agent.builddirectory)/VSCode-darwin-x64.zip
cp $(Pipeline.Workspace)/unsigned_vscode_client_darwin_arm64_archive/VSCode-darwin-arm64.zip $(agent.builddirectory)/VSCode-darwin-arm64.zip
unzip $(agent.builddirectory)/VSCode-darwin-x64.zip -d $(agent.builddirectory)/VSCode-darwin-x64
unzip $(agent.builddirectory)/VSCode-darwin-arm64.zip -d $(agent.builddirectory)/VSCode-darwin-arm64
DEBUG=* node build/darwin/create-universal-app.js
displayName: Create Universal App
- script: |
set -e
security create-keychain -p pwd $(agent.tempdirectory)/buildagent.keychain
security default-keychain -s $(agent.tempdirectory)/buildagent.keychain
security unlock-keychain -p pwd $(agent.tempdirectory)/buildagent.keychain
echo "$(macos-developer-certificate)" | base64 -D > $(agent.tempdirectory)/cert.p12
security import $(agent.tempdirectory)/cert.p12 -k $(agent.tempdirectory)/buildagent.keychain -P "$(macos-developer-certificate-key)" -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k pwd $(agent.tempdirectory)/buildagent.keychain
VSCODE_ARCH=$(VSCODE_ARCH) DEBUG=electron-osx-sign* node build/darwin/sign.js
displayName: Set Hardened Entitlements
- script: |
set -e
pushd $(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH) && zip -r -X -y $(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH).zip * && popd
displayName: Archive build
- publish: $(Agent.BuildDirectory)/VSCode-darwin-$(VSCODE_ARCH).zip
artifact: unsigned_vscode_client_darwin_$(VSCODE_ARCH)_archive
displayName: Publish client archive

View File

@@ -1,30 +1,26 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
versionSpec: "16.x"
- task: AzureKeyVault@1
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: 'github-distro-mixin-password,macos-developer-certificate,macos-developer-certificate-key,ticino-storage-key'
SecretsFilter: "github-distro-mixin-password,macos-developer-certificate,macos-developer-certificate-key"
- task: DownloadPipelineArtifact@2
inputs:
artifact: Compilation
path: $(Build.ArtifactStagingDirectory)
displayName: Download compilation output
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'universal'))
- script: |
set -e
tar -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz
displayName: Extract compilation output
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'universal'))
# Set up the credentials to retrieve distro repo and setup git persona
# to create a merge commit for when we merge distro into oss
- script: |
set -e
cat << EOF > ~/.netrc
@@ -39,9 +35,11 @@ steps:
- script: |
set -e
sudo xcode-select -s /Applications/Xcode_12.2.app
displayName: Switch to Xcode 12
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'arm64'))
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
echo "##vso[task.setvariable variable=VSCODE_DISTRO_COMMIT;]$(git rev-parse FETCH_HEAD)"
git checkout FETCH_HEAD
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
displayName: Checkout override commit
- script: |
set -e
@@ -77,6 +75,7 @@ steps:
set -e
npx https://aka.ms/enablesecurefeed standAlone
timeoutInMinutes: 5
retryCountOnTaskFailure: 3
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
displayName: Switch to Terrapin packages
@@ -84,10 +83,9 @@ steps:
set -e
export npm_config_arch=$(VSCODE_ARCH)
export npm_config_node_gyp=$(which node-gyp)
export SDKROOT=/Applications/Xcode_12.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk
for i in {1..3}; do # try 3 times, for Terrapin
yarn --frozen-lockfile && break
yarn --frozen-lockfile --check-files && break
if [ $i -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
@@ -120,43 +118,19 @@ steps:
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
yarn gulp vscode-darwin-$(VSCODE_ARCH)-min-ci
displayName: Build client
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'universal'))
- script: |
set -e
node build/azure-pipelines/mixin --server
displayName: Mix in server quality
- script: |
set -e
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
yarn gulp vscode-reh-darwin-min-ci
yarn gulp vscode-reh-darwin-$(VSCODE_ARCH)-min-ci
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
yarn gulp vscode-reh-web-darwin-min-ci
yarn gulp vscode-reh-web-darwin-$(VSCODE_ARCH)-min-ci
displayName: Build Server
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'))
- script: |
set -e
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
yarn npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install"
displayName: Download Electron and Playwright
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'universal'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- download: current
artifact: unsigned_vscode_client_darwin_x64_archive
displayName: Download x64 artifact
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'universal'))
- download: current
artifact: unsigned_vscode_client_darwin_arm64_archive
displayName: Download arm64 artifact
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'universal'))
- script: |
set -e
cp $(Pipeline.Workspace)/unsigned_vscode_client_darwin_x64_archive/VSCode-darwin-x64.zip $(agent.builddirectory)/VSCode-darwin-x64.zip
cp $(Pipeline.Workspace)/unsigned_vscode_client_darwin_arm64_archive/VSCode-darwin-arm64.zip $(agent.builddirectory)/VSCode-darwin-arm64.zip
unzip $(agent.builddirectory)/VSCode-darwin-x64.zip -d $(agent.builddirectory)/VSCode-darwin-x64
unzip $(agent.builddirectory)/VSCode-darwin-arm64.zip -d $(agent.builddirectory)/VSCode-darwin-arm64
DEBUG=* node build/darwin/create-universal-app.js
displayName: Create Universal App
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'universal'))
# Setting hardened entitlements is a requirement for:
# * Apple notarization
@@ -172,139 +146,76 @@ steps:
VSCODE_ARCH=$(VSCODE_ARCH) DEBUG=electron-osx-sign* node build/darwin/sign.js
displayName: Set Hardened Entitlements
- script: |
set -e
./scripts/test.sh --build --tfs "Unit Tests"
displayName: Run unit tests (Electron)
timeoutInMinutes: 7
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
yarn test-browser --build --browser chromium --browser webkit --browser firefox --tfs "Browser Unit Tests"
displayName: Run unit tests (Browser)
timeoutInMinutes: 7
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
# Figure out the full absolute path of the product we just built
# including the remote server and configure the integration tests
# to run with these builds instead of running out of sources.
set -e
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
APP_NAME="`ls $APP_ROOT | head -n 1`"
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME/Contents/MacOS/Electron" \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin" \
./scripts/test-integration.sh --build --tfs "Integration Tests"
displayName: Run integration tests (Electron)
timeoutInMinutes: 10
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-darwin" \
./resources/server/test/test-web-integration.sh --browser webkit
displayName: Run integration tests (Browser)
timeoutInMinutes: 10
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
APP_NAME="`ls $APP_ROOT | head -n 1`"
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME/Contents/MacOS/Electron" \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin" \
./resources/server/test/test-remote-integration.sh
displayName: Run remote integration tests (Electron)
timeoutInMinutes: 7
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
APP_NAME="`ls $APP_ROOT | head -n 1`"
yarn smoketest-no-compile --build "$APP_ROOT/$APP_NAME" --screenshots $(Build.SourcesDirectory)/.build/logs/smoke-tests
timeoutInMinutes: 5
displayName: Run smoke tests (Electron)
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
APP_NAME="`ls $APP_ROOT | head -n 1`"
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin" \
yarn smoketest-no-compile --build "$APP_ROOT/$APP_NAME" --remote --screenshots $(Build.SourcesDirectory)/.build/logs/smoke-tests
timeoutInMinutes: 5
displayName: Run smoke tests (Remote)
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-darwin" \
yarn smoketest-no-compile --web --headless
timeoutInMinutes: 5
displayName: Run smoke tests (Browser)
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- task: PublishPipelineArtifact@0
inputs:
artifactName: crash-dump-macos-$(VSCODE_ARCH)
targetPath: .build/crashes
displayName: "Publish Crash Reports"
continueOnError: true
condition: failed()
- task: PublishPipelineArtifact@0
inputs:
artifactName: logs-macos-$(VSCODE_ARCH)-$(System.JobAttempt)
targetPath: .build/logs
displayName: "Publish Log Files"
continueOnError: true
condition: and(succeededOrFailed(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- task: PublishTestResults@2
displayName: Publish Tests Results
inputs:
testResultsFiles: "*-results.xml"
searchFolder: "$(Build.ArtifactStagingDirectory)/test-results"
condition: and(succeededOrFailed(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
pushd $(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH) && zip -r -X -y $(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH).zip * && popd
displayName: Archive build
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- script: |
set -e
# package Remote Extension Host
pushd .. && mv vscode-reh-darwin vscode-server-darwin && zip -Xry vscode-server-darwin.zip vscode-server-darwin && popd
pushd .. && mv vscode-reh-darwin-$(VSCODE_ARCH) vscode-server-darwin-$(VSCODE_ARCH) && zip -Xry vscode-server-darwin-$(VSCODE_ARCH).zip vscode-server-darwin-$(VSCODE_ARCH) && popd
# package Remote Extension Host (Web)
pushd .. && mv vscode-reh-web-darwin vscode-server-darwin-web && zip -Xry vscode-server-darwin-web.zip vscode-server-darwin-web && popd
pushd .. && mv vscode-reh-web-darwin-$(VSCODE_ARCH) vscode-server-darwin-$(VSCODE_ARCH)-web && zip -Xry vscode-server-darwin-$(VSCODE_ARCH)-web.zip vscode-server-darwin-$(VSCODE_ARCH)-web && popd
displayName: Prepare to publish servers
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), ne(variables['VSCODE_PUBLISH'], 'false'))
- publish: $(Agent.BuildDirectory)/VSCode-darwin-$(VSCODE_ARCH).zip
artifact: unsigned_vscode_client_darwin_$(VSCODE_ARCH)_archive
displayName: Publish client archive
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- publish: $(Agent.BuildDirectory)/vscode-server-darwin.zip
- publish: $(Agent.BuildDirectory)/vscode-server-darwin-$(VSCODE_ARCH).zip
artifact: vscode_server_darwin_$(VSCODE_ARCH)_archive-unsigned
displayName: Publish server archive
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), ne(variables['VSCODE_PUBLISH'], 'false'))
- publish: $(Agent.BuildDirectory)/vscode-server-darwin-web.zip
- publish: $(Agent.BuildDirectory)/vscode-server-darwin-$(VSCODE_ARCH)-web.zip
artifact: vscode_web_darwin_$(VSCODE_ARCH)_archive-unsigned
displayName: Publish web server archive
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), ne(variables['VSCODE_PUBLISH'], 'false'))
- task: AzureCLI@2
inputs:
azureSubscription: "vscode-builds-subscription"
scriptType: pscore
scriptLocation: inlineScript
addSpnToEnvironment: true
inlineScript: |
Write-Host "##vso[task.setvariable variable=AZURE_TENANT_ID]$env:tenantId"
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_ID]$env:servicePrincipalId"
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_SECRET;issecret=true]$env:servicePrincipalKey"
- script: |
AZURE_STORAGE_ACCESS_KEY="$(ticino-storage-key)" \
set -e
AZURE_STORAGE_ACCOUNT="ticino" \
AZURE_TENANT_ID="$(AZURE_TENANT_ID)" \
AZURE_CLIENT_ID="$(AZURE_CLIENT_ID)" \
AZURE_CLIENT_SECRET="$(AZURE_CLIENT_SECRET)" \
VSCODE_ARCH="$(VSCODE_ARCH)" \
yarn gulp upload-vscode-configuration
node build/azure-pipelines/upload-configuration
displayName: Upload configuration (for Bing settings search)
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), ne(variables['VSCODE_PUBLISH'], 'false'))
continueOnError: true
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
displayName: Generate SBOM (client)
inputs:
BuildDropPath: $(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
PackageName: Visual Studio Code
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- publish: $(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)/_manifest
displayName: Publish SBOM (client)
artifact: vscode_client_darwin_$(VSCODE_ARCH)_sbom
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
displayName: Generate SBOM (server)
inputs:
BuildDropPath: $(agent.builddirectory)/vscode-server-darwin-$(VSCODE_ARCH)
PackageName: Visual Studio Code Server
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- publish: $(agent.builddirectory)/vscode-server-darwin-$(VSCODE_ARCH)/_manifest
displayName: Publish SBOM (server)
artifact: vscode_server_darwin_$(VSCODE_ARCH)_sbom
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))

View File

@@ -9,12 +9,12 @@ steps:
displayName: 'Download Build Artifacts'
inputs:
downloadType: specific
itemPattern: 'drop/darwin/archive/azuredatastudio-darwin-unsigned.zip'
itemPattern: 'drop/darwin/archive/azuredatastudio-darwin-$(VSCODE_ARCH)-unsigned.zip'
downloadPath: '$(Build.SourcesDirectory)/.build/'
- script: |
pushd $(Build.SourcesDirectory)/.build/drop/darwin/archive
mv azuredatastudio-darwin-unsigned.zip azuredatastudio-darwin.zip
mv azuredatastudio-darwin-$(VSCODE_ARCH)-unsigned.zip azuredatastudio-darwin-$(VSCODE_ARCH).zip
displayName: 'Rename the file'
- task: UseDotNet@2
@@ -29,7 +29,7 @@ steps:
inputs:
ConnectedServiceName: 'Code Signing'
FolderPath: '$(Build.SourcesDirectory)/.build/drop/darwin/archive'
Pattern: 'azuredatastudio-darwin.zip'
Pattern: 'azuredatastudio-darwin-$(VSCODE_ARCH).zip'
signConfigType: inlineSignParams
inlineOperation: |
[
@@ -47,7 +47,7 @@ steps:
condition: and(succeeded(), eq(variables['signed'], true))
- script: |
zip -d $(Build.SourcesDirectory)/.build/drop/darwin/archive/azuredatastudio-darwin.zip "*.pkg"
zip -d $(Build.SourcesDirectory)/.build/drop/darwin/archive/azuredatastudio-darwin-$(VSCODE_ARCH).zip "*.pkg"
displayName: Clean Archive
condition: and(succeeded(), eq(variables['signed'], true))
@@ -56,7 +56,7 @@ steps:
inputs:
ConnectedServiceName: 'Code Signing'
FolderPath: '$(Build.SourcesDirectory)/.build/drop/darwin/archive'
Pattern: 'azuredatastudio-darwin.zip'
Pattern: 'azuredatastudio-darwin-$(VSCODE_ARCH).zip'
signConfigType: inlineSignParams
inlineOperation: |
[

View File

@@ -52,7 +52,7 @@ steps:
- script: |
mkdir -p .build
node build/azure-pipelines/common/sql-computeNodeModulesCacheKey.js > .build/yarnlockhash
node build/azure-pipelines/common/sql-computeNodeModulesCacheKey.js $(NPM_CONFIG_ARCH) > .build/yarnlockhash
displayName: Prepare yarn cache key
- task: Cache@2
@@ -71,6 +71,7 @@ steps:
- script: |
set -e
export npm_config_arch=$(NPM_CONFIG_ARCH)
CHILD_CONCURRENCY=1 yarn --frozen-lockfile
displayName: Install dependencies
env:
@@ -93,16 +94,17 @@ steps:
- script: |
set -e
node build/azure-pipelines/mixin
node build/azure-pipelines/sql-mixin
displayName: Mix in quality
- script: |
set -e
yarn gulp package-rebuild-extensions
yarn gulp vscode-darwin-x64-min-ci
yarn gulp vscode-darwin-$(VSCODE_ARCH)-min-ci
displayName: Build
env:
VSCODE_MIXIN_PASSWORD: $(github-distro-mixin-password)
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'universal'))
- script: |
set -e
@@ -120,32 +122,34 @@ steps:
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME/Contents/MacOS/Electron" \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/azuredatastudio-reh-darwin" \
./scripts/test-integration.sh --build --tfs "Integration Tests"
displayName: Run integration tests (Electron)
displayName: Run core integration tests
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
- script: |
set -e
yarn gulp compile-extensions
displayName: Compile Extensions
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'universal'))
# Per https://developercommunity.visualstudio.com/t/variablesexpressions-dont-work-with-continueonerro/1187733 we can't use variables
# in continueOnError directly so instead make two copies of the task and only run one or the other based on the SMOKE_FAIL_ON_ERROR value
- script: |
set -e
APP_ROOT=$(agent.builddirectory)/azuredatastudio-darwin-x64
APP_NAME="`ls $APP_ROOT | head -n 1`"
yarn smoketest --build "$APP_ROOT/$APP_NAME" --screenshots "$(build.artifactstagingdirectory)/smokeshots" --log "$(build.artifactstagingdirectory)/logs/darwin/smoke.log" --extensionsDir "$(build.sourcesdirectory)/extensions"
displayName: Run smoke tests (Electron) (Continue on Error)
continueOnError: true
condition: and(succeeded(), and(or(eq(variables['RUN_TESTS'], 'true'), eq(variables['RUN_SMOKE_TESTS'], 'true')), ne(variables['SMOKE_FAIL_ON_ERROR'], 'true')))
# {{SQL CARBON TODO}} -- reenable
# - script: |
# set -e
# APP_ROOT=$(agent.builddirectory)/azuredatastudio-darwin-$(VSCODE_ARCH)
# APP_NAME="`ls $APP_ROOT | head -n 1`"
# yarn smoketest --build "$APP_ROOT/$APP_NAME" --screenshots "$(build.artifactstagingdirectory)/smokeshots" --log "$(build.artifactstagingdirectory)/logs/darwin/smoke.log" --extensionsDir "$(build.sourcesdirectory)/extensions" --extraArgs "--disable-extension Microsoft.kusto --disable-extension Microsoft.azuremonitor"
# displayName: Run core smoke tests (Continue on Error)
# continueOnError: true
# condition: and(succeeded(), and(or(eq(variables['RUN_TESTS'], 'true'), eq(variables['RUN_SMOKE_TESTS'], 'true')), ne(variables['SMOKE_FAIL_ON_ERROR'], 'true')))
- script: |
set -e
APP_ROOT=$(agent.builddirectory)/azuredatastudio-darwin-x64
APP_NAME="`ls $APP_ROOT | head -n 1`"
yarn smoketest --build "$APP_ROOT/$APP_NAME" --screenshots "$(build.artifactstagingdirectory)/smokeshots" --log "$(build.artifactstagingdirectory)/logs/darwin/smoke.log" --extensionsDir "$(build.sourcesdirectory)/extensions"
displayName: Run smoke tests (Electron) (Fail on Error)
condition: and(succeeded(), and(or(eq(variables['RUN_TESTS'], 'true'), eq(variables['RUN_SMOKE_TESTS'], 'true')), eq(variables['SMOKE_FAIL_ON_ERROR'], 'true')))
# - script: |
# set -e
# APP_ROOT=$(agent.builddirectory)/azuredatastudio-darwin-$(VSCODE_ARCH)
# APP_NAME="`ls $APP_ROOT | head -n 1`"
# yarn smoketest --build "$APP_ROOT/$APP_NAME" --screenshots "$(build.artifactstagingdirectory)/smokeshots" --log "$(build.artifactstagingdirectory)/logs/darwin/smoke.log" --extensionsDir "$(build.sourcesdirectory)/extensions"
# displayName: Run core smoke tests (Fail on Error)
# condition: and(succeeded(), and(or(eq(variables['RUN_TESTS'], 'true'), eq(variables['RUN_SMOKE_TESTS'], 'true')), eq(variables['SMOKE_FAIL_ON_ERROR'], 'true')))
# - script: |
# set -e
@@ -156,9 +160,25 @@ steps:
# continueOnError: true
# condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
- task: DownloadBuildArtifacts@0
displayName: 'Download arm64 and x64 packages'
inputs:
downloadType: specific
itemPattern: 'drop/darwin/archive/azuredatastudio-darwin-@(arm64|x64)-unsigned.zip'
downloadPath: $(agent.builddirectory)
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'universal'))
- script: |
set -e
pushd ../azuredatastudio-darwin-x64
unzip $(agent.builddirectory)/drop/darwin/archive/azuredatastudio-darwin-x64-unsigned.zip -d $(agent.builddirectory)/azuredatastudio-darwin-x64
unzip $(agent.builddirectory)/drop/darwin/archive/azuredatastudio-darwin-arm64-unsigned.zip -d $(agent.builddirectory)/azuredatastudio-darwin-arm64
DEBUG=* node build/darwin/create-universal-app.js
displayName: Create Universal App
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'universal'))
- script: |
set -e
pushd ../azuredatastudio-darwin-$(VSCODE_ARCH)
ls
echo "Cleaning the application"
@@ -188,20 +208,10 @@ steps:
- script: |
set -e
mkdir -p .build/darwin/archive
pushd ../azuredatastudio-darwin-x64
ditto -c -k --keepParent *.app $(Build.SourcesDirectory)/.build/darwin/archive/azuredatastudio-darwin.zip
popd
displayName: 'Archive (no signing)'
condition: and(succeeded(), eq(variables['signed'], false))
- script: |
set -e
mkdir -p .build/darwin/archive
pushd ../azuredatastudio-darwin-x64
ditto -c -k --keepParent *.app $(Build.SourcesDirectory)/.build/darwin/archive/azuredatastudio-darwin-unsigned.zip
pushd ../azuredatastudio-darwin-$(VSCODE_ARCH)
ditto -c -k --keepParent *.app $(Build.SourcesDirectory)/.build/darwin/archive/azuredatastudio-darwin-$(VSCODE_ARCH)-unsigned.zip
popd
displayName: 'Archive'
condition: and(succeeded(), eq(variables['signed'], true))
- script: |
set -e

View File

@@ -13,12 +13,22 @@ $Version = $VersionJson.version
$Quality = $VersionJson.quality
$CommitId = $VersionJson.commit
$ZipName = "azuredatastudio-darwin.zip"
$Zip = "$artifactsDir\darwin\archive\$ZipName"
$UploadName = "azuredatastudio-macos-$Version"
$Flavors = "x64","arm64","universal"
$FlavorSuffixes = "","-arm64","-universal"
If (-NOT ($Quality -eq "stable")) {
$UploadName = "$UploadName-$Quality"
For($i = 0; $i -lt $Flavors.Length; $i++)
{
$Flavor = $Flavors[$i]
$FlavorSuffix = $FlavorSuffixes[$i]
$ZipName = "azuredatastudio-darwin-$Flavor.zip"
$Zip = "$artifactsDir\darwin\archive\$ZipName"
$UploadName = "azuredatastudio-macos$FlavorSuffix-$Version"
If (-NOT ($Quality -eq "stable")) {
$UploadName = "$UploadName-$Quality"
}
$Platform = "darwin$FlavorSuffix"
node $sourcesDir\build\azure-pipelines\common\publish.js $Quality $Platform archive "$UploadName.zip" $Version true $Zip $CommitId
}
node $sourcesDir\build\azure-pipelines\common\publish.js $Quality darwin archive "$UploadName.zip" $Version true $Zip $CommitId

View File

@@ -1,5 +1,5 @@
pool:
vmImage: 'Ubuntu-18.04'
vmImage: 'Ubuntu-20.04'
trigger:
branches:
@@ -18,7 +18,7 @@ steps:
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: 'github-distro-mixin-password'
SecretsFilter: "github-distro-mixin-password"
- script: |
set -e

View File

@@ -64,7 +64,7 @@ steps:
- script: |
set -e
node build/azure-pipelines/mixin
node build/azure-pipelines/sql-mixin
displayName: Mix in quality
- task: DownloadBuildArtifacts@0

View File

@@ -11,14 +11,14 @@ pr:
steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
versionSpec: "16.x"
- task: AzureKeyVault@1
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: 'github-distro-mixin-password'
SecretsFilter: "github-distro-mixin-password"
- script: |
set -e

View File

@@ -1,5 +1,5 @@
#Download base image ubuntu 18.04
FROM mcr.microsoft.com/mirror/docker/library/ubuntu:18.04
#Download base image ubuntu 20.04
FROM mcr.microsoft.com/mirror/docker/library/ubuntu:20.04
#Adding apt repos for g++-4.9
RUN echo "deb http://dk.archive.ubuntu.com/ubuntu/ xenial main" >> /etc/apt/sources.list

View File

@@ -1,5 +0,0 @@
#!/usr/bin/env bash
set -e
echo "Installing remote dependencies"
(cd remote && rm -rf node_modules && yarn)

View File

@@ -67,7 +67,7 @@ steps:
- script: |
DISPLAY=:10 ./scripts/test.sh --tfs "Unit Tests"
displayName: Run Unit Tests (Electron)
displayName: Run Core Unit Tests # {{SQL CARBON EDIT}} Rename to core for clarity
# - script: | {{SQL CARBON EDIT}} disable
# DISPLAY=:10 yarn test-browser --browser chromium --tfs "Browser Unit Tests"
@@ -75,7 +75,7 @@ steps:
# - script: | {{SQL CARBON EDIT}} disable
# DISPLAY=:10 ./scripts/test-integration.sh --tfs "Integration Tests"
# displayName: Run Integration Tests (Electron)
# displayName: Run Core Integration Tests # {{SQL CARBON EDIT}} Rename to core for clarity
# - task: PublishPipelineArtifact@0
# inputs:

View File

@@ -1,18 +1,14 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.x"
versionSpec: "16.x"
- task: AzureKeyVault@1
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: 'github-distro-mixin-password'
SecretsFilter: "github-distro-mixin-password"
- task: DownloadPipelineArtifact@2
inputs:
@@ -46,6 +42,14 @@ steps:
git config user.name "VSCode"
displayName: Prepare tooling
- script: |
set -e
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
echo "##vso[task.setvariable variable=VSCODE_DISTRO_COMMIT;]$(git rev-parse FETCH_HEAD)"
git checkout FETCH_HEAD
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
displayName: Checkout override commit
- script: |
set -e
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
@@ -58,7 +62,7 @@ steps:
- task: Cache@2
inputs:
key: 'nodeModules | $(Agent.OS) | .build/yarnlockhash'
key: "nodeModules | $(Agent.OS) | .build/yarnlockhash"
path: .build/node_modules_cache
cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache
@@ -73,13 +77,14 @@ steps:
set -e
npx https://aka.ms/enablesecurefeed standAlone
timeoutInMinutes: 5
retryCountOnTaskFailure: 3
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
displayName: Switch to Terrapin packages
- script: |
set -e
for i in {1..3}; do # try 3 times, for Terrapin
yarn --frozen-lockfile && break
yarn --frozen-lockfile --check-files --check-files && break
if [ $i -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
@@ -104,15 +109,16 @@ steps:
- script: |
set -e
node build/azure-pipelines/mixin
node build/azure-pipelines/mixin --server
displayName: Mix in quality
- script: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
displayName: 'Register Docker QEMU'
displayName: "Register Docker QEMU"
condition: eq(variables['VSCODE_ARCH'], 'arm64')
- script: |
set -e
docker run -e VSCODE_QUALITY -v $(pwd):/root/vscode -v ~/.netrc:/root/.netrc vscodehub.azurecr.io/vscode-linux-build-agent:alpine-$(VSCODE_ARCH) /root/vscode/build/azure-pipelines/linux/alpine/install-dependencies.sh
docker run -e VSCODE_QUALITY -v $(pwd):/root/vscode -v ~/.netrc:/root/.netrc vscodehub.azurecr.io/vscode-linux-build-agent:alpine-$(VSCODE_ARCH) /root/vscode/build/azure-pipelines/linux/scripts/install-remote-dependencies.sh
displayName: Prebuild
- script: |

View File

@@ -1,18 +1,14 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.x"
versionSpec: "16.x"
- task: AzureKeyVault@1
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: "github-distro-mixin-password,builds-docdb-key-readwrite,vscode-storage-key,ESRP-PKI,esrp-aad-username,esrp-aad-password"
SecretsFilter: "github-distro-mixin-password,ESRP-PKI,esrp-aad-username,esrp-aad-password"
- task: DownloadPipelineArtifact@2
inputs:
@@ -20,6 +16,23 @@ steps:
path: $(Build.ArtifactStagingDirectory)
displayName: Download compilation output
- task: DownloadPipelineArtifact@2
inputs:
artifact: reh_node_modules-$(VSCODE_ARCH)
path: $(Build.ArtifactStagingDirectory)
displayName: Download server build dependencies
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'armhf'))
- script: |
set -e
# Start X server
/etc/init.d/xvfb start
# Start dbus session
DBUS_LAUNCH_RESULT=$(sudo dbus-daemon --config-file=/usr/share/dbus-1/system.conf --print-address)
echo "##vso[task.setvariable variable=DBUS_SESSION_BUS_ADDRESS]$DBUS_LAUNCH_RESULT"
displayName: Setup system services
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'))
- script: |
set -e
tar -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz
@@ -37,6 +50,14 @@ steps:
git config user.name "VSCode"
displayName: Prepare tooling
- script: |
set -e
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
echo "##vso[task.setvariable variable=VSCODE_DISTRO_COMMIT;]$(git rev-parse FETCH_HEAD)"
git checkout FETCH_HEAD
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
displayName: Checkout override commit
- script: |
set -e
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
@@ -64,14 +85,21 @@ steps:
set -e
npx https://aka.ms/enablesecurefeed standAlone
timeoutInMinutes: 5
retryCountOnTaskFailure: 3
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
displayName: Switch to Terrapin packages
- script: |
set -e
yarn --cwd build
yarn --cwd build compile
displayName: Compile build tools
for i in {1..3}; do # try 3 times, for Terrapin
yarn --cwd build --frozen-lockfile --check-files && break
if [ $i -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
fi
echo "Yarn failed $i, trying again..."
done
displayName: Install build dependencies
- script: |
set -e
@@ -79,7 +107,7 @@ steps:
if [ -z "$CC" ] || [ -z "$CXX" ]; then
# Download clang based on chromium revision used by vscode
curl -s https://raw.githubusercontent.com/chromium/chromium/91.0.4472.164/tools/clang/scripts/update.py | python - --output-dir=$PWD/.build/CR_Clang --host-os=linux
curl -s https://raw.githubusercontent.com/chromium/chromium/98.0.4758.109/tools/clang/scripts/update.py | python - --output-dir=$PWD/.build/CR_Clang --host-os=linux
# Download libcxx headers and objects from upstream electron releases
DEBUG=libcxx-fetcher \
VSCODE_LIBCXX_OBJECTS_DIR=$PWD/.build/libcxx-objects \
@@ -88,19 +116,20 @@ steps:
VSCODE_ARCH="$(NPM_ARCH)" \
node build/linux/libcxx-fetcher.js
# Set compiler toolchain
# Flags for the client build are based on
# https://source.chromium.org/chromium/chromium/src/+/refs/tags/98.0.4758.109:build/config/arm.gni
# https://source.chromium.org/chromium/chromium/src/+/refs/tags/98.0.4758.109:build/config/compiler/BUILD.gn
# https://source.chromium.org/chromium/chromium/src/+/refs/tags/98.0.4758.109:build/config/c++/BUILD.gn
export CC=$PWD/.build/CR_Clang/bin/clang
export CXX=$PWD/.build/CR_Clang/bin/clang++
export CXXFLAGS="-nostdinc++ -D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS -D__NO_INLINE__ -isystem$PWD/.build/libcxx_headers/include -isystem$PWD/.build/libcxxabi_headers/include -fPIC -flto=thin -fsplit-lto-unit"
export LDFLAGS="-stdlib=libc++ -fuse-ld=lld -flto=thin -fsplit-lto-unit -L$PWD/.build/libcxx-objects -lc++abi"
fi
if [ "$VSCODE_ARCH" == "x64" ]; then
export VSCODE_REMOTE_CC=$(which gcc-4.8)
export VSCODE_REMOTE_CXX=$(which g++-4.8)
export CXXFLAGS="-nostdinc++ -D__NO_INLINE__ -isystem$PWD/.build/libcxx_headers -isystem$PWD/.build/libcxx_headers/include -isystem$PWD/.build/libcxxabi_headers/include -fPIC -flto=thin -fsplit-lto-unit"
export LDFLAGS="-stdlib=libc++ -fuse-ld=lld -flto=thin -L$PWD/.build/libcxx-objects -lc++abi -Wl,--lto-O0"
export VSCODE_REMOTE_CC=$(which gcc)
export VSCODE_REMOTE_CXX=$(which g++)
fi
for i in {1..3}; do # try 3 times, for Terrapin
yarn --frozen-lockfile && break
yarn --frozen-lockfile --check-files && break
if [ $i -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
@@ -114,6 +143,13 @@ steps:
displayName: Install dependencies
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
- script: |
set -e
rm -rf remote/node_modules
tar -xzf $(Build.ArtifactStagingDirectory)/reh_node_modules-$(VSCODE_ARCH).tar.gz --directory $(Build.SourcesDirectory)/remote
displayName: Extract server node_modules output
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'armhf'))
- script: |
set -e
node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt
@@ -133,6 +169,11 @@ steps:
yarn gulp vscode-linux-$(VSCODE_ARCH)-min-ci
displayName: Build
- script: |
set -e
node build/azure-pipelines/mixin --server
displayName: Mix in server quality
- script: |
set -e
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
@@ -163,14 +204,21 @@ steps:
set -e
./scripts/test.sh --build --tfs "Unit Tests"
displayName: Run unit tests (Electron)
timeoutInMinutes: 7
timeoutInMinutes: 15
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
yarn test-browser --build --browser chromium --tfs "Browser Unit Tests"
displayName: Run unit tests (Browser)
timeoutInMinutes: 7
yarn test-node --build
displayName: Run unit tests (node.js)
timeoutInMinutes: 15
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
DEBUG=*browser* yarn test-browser-no-install --build --browser chromium --tfs "Browser Unit Tests"
displayName: Run unit tests (Browser, Chromium)
timeoutInMinutes: 15
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
@@ -185,15 +233,15 @@ steps:
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-$(VSCODE_ARCH)" \
./scripts/test-integration.sh --build --tfs "Integration Tests"
displayName: Run integration tests (Electron)
timeoutInMinutes: 10
timeoutInMinutes: 20
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-linux-$(VSCODE_ARCH)" \
./resources/server/test/test-web-integration.sh --browser chromium
displayName: Run integration tests (Browser)
timeoutInMinutes: 10
./scripts/test-web-integration.sh --browser chromium
displayName: Run integration tests (Browser, Chromium)
timeoutInMinutes: 20
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
@@ -203,16 +251,33 @@ steps:
INTEGRATION_TEST_APP_NAME="$APP_NAME" \
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-$(VSCODE_ARCH)" \
./resources/server/test/test-remote-integration.sh
displayName: Run remote integration tests (Electron)
timeoutInMinutes: 7
./scripts/test-remote-integration.sh
displayName: Run integration tests (Remote)
timeoutInMinutes: 20
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
ps -ef
cat /proc/sys/fs/inotify/max_user_watches
lsof | wc -l
displayName: Diagnostics before smoke test run (processes, max_user_watches, number of opened file handles)
continueOnError: true
condition: and(succeededOrFailed(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-linux-$(VSCODE_ARCH)" \
yarn smoketest-no-compile --web --tracing --headless --electronArgs="--disable-dev-shm-usage"
timeoutInMinutes: 10
displayName: Run smoke tests (Browser, Chromium)
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
APP_PATH=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
yarn smoketest-no-compile --build "$APP_PATH" --electronArgs="--disable-dev-shm-usage --use-gl=swiftshader" --screenshots $(Build.SourcesDirectory)/.build/logs/smoke-tests
timeoutInMinutes: 5
yarn smoketest-no-compile --tracing --build "$APP_PATH"
timeoutInMinutes: 20
displayName: Run smoke tests (Electron)
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
@@ -220,18 +285,19 @@ steps:
set -e
APP_PATH=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-$(VSCODE_ARCH)" \
yarn smoketest-no-compile --build "$APP_PATH" --remote --electronArgs="--disable-dev-shm-usage --use-gl=swiftshader" --screenshots $(Build.SourcesDirectory)/.build/logs/smoke-tests
timeoutInMinutes: 5
yarn smoketest-no-compile --tracing --remote --build "$APP_PATH"
timeoutInMinutes: 20
displayName: Run smoke tests (Remote)
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-linux-$(VSCODE_ARCH)" \
yarn smoketest-no-compile --web --headless --electronArgs="--disable-dev-shm-usage --use-gl=swiftshader"
timeoutInMinutes: 5
displayName: Run smoke tests (Browser)
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
ps -ef
cat /proc/sys/fs/inotify/max_user_watches
lsof | wc -l
displayName: Diagnostics after smoke test run (processes, max_user_watches, number of opened file handles)
continueOnError: true
condition: and(succeededOrFailed(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- task: PublishPipelineArtifact@0
inputs:
@@ -241,13 +307,23 @@ steps:
continueOnError: true
condition: failed()
# In order to properly symbolify above crash reports
# (if any), we need the compiled native modules too
- task: PublishPipelineArtifact@0
inputs:
artifactName: node-modules-linux-$(VSCODE_ARCH)
targetPath: node_modules
displayName: "Publish Node Modules"
continueOnError: true
condition: failed()
- task: PublishPipelineArtifact@0
inputs:
artifactName: logs-linux-$(VSCODE_ARCH)-$(System.JobAttempt)
targetPath: .build/logs
displayName: "Publish Log Files"
continueOnError: true
condition: and(succeededOrFailed(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
condition: and(failed(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- task: PublishTestResults@2
displayName: Publish Tests Results
@@ -278,13 +354,6 @@ steps:
displayName: Download ESRPClient
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- script: |
set -e
yarn --cwd build
yarn --cwd build compile
displayName: Compile build tools
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- script: |
set -e
node build/azure-pipelines/common/sign "$(esrpclient.toolpath)/$(esrpclient.toolname)" rpm $(ESRP-PKI) $(esrp-aad-username) $(esrp-aad-password) .build/linux/rpm '*.rpm'
@@ -293,9 +362,6 @@ steps:
- script: |
set -e
AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
VSCODE_ARCH="$(VSCODE_ARCH)" \
./build/azure-pipelines/linux/prepare-publish.sh
displayName: Prepare for Publish
@@ -332,3 +398,27 @@ steps:
artifactName: "snap-$(VSCODE_ARCH)"
targetPath: .build/linux/snap-tarball
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
displayName: Generate SBOM (client)
inputs:
BuildDropPath: $(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
PackageName: Visual Studio Code
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- publish: $(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)/_manifest
displayName: Publish SBOM (client)
artifact: vscode_client_linux_$(VSCODE_ARCH)_sbom
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
displayName: Generate SBOM (server)
inputs:
BuildDropPath: $(agent.builddirectory)/vscode-server-linux-$(VSCODE_ARCH)
PackageName: Visual Studio Code Server
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- publish: $(agent.builddirectory)/vscode-server-linux-$(VSCODE_ARCH)/_manifest
displayName: Publish SBOM (server)
artifact: vscode_server_linux_$(VSCODE_ARCH)_sbom
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))

View File

@@ -0,0 +1,85 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: "16.x"
- task: AzureKeyVault@1
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: "github-distro-mixin-password,ESRP-PKI,esrp-aad-username,esrp-aad-password"
- task: Docker@1
displayName: "Pull Docker image"
inputs:
azureSubscriptionEndpoint: "vscode-builds-subscription"
azureContainerRegistry: vscodehub.azurecr.io
command: "Run an image"
imageName: "vscode-linux-build-agent:centos7-devtoolset8-arm64"
containerCommand: uname
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'arm64'))
- script: |
set -e
cat << EOF > ~/.netrc
machine github.com
login vscode
password $(github-distro-mixin-password)
EOF
git config user.email "vscode@microsoft.com"
git config user.name "VSCode"
displayName: Prepare tooling
- script: |
set -e
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
echo "##vso[task.setvariable variable=VSCODE_DISTRO_COMMIT;]$(git rev-parse FETCH_HEAD)"
git checkout FETCH_HEAD
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
displayName: Checkout override commit
- script: |
set -e
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
displayName: Merge distro
- script: |
set -e
npx https://aka.ms/enablesecurefeed standAlone
timeoutInMinutes: 5
retryCountOnTaskFailure: 3
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
displayName: Switch to Terrapin packages
- script: |
set -e
$(pwd)/build/azure-pipelines/linux/scripts/install-remote-dependencies.sh
displayName: Install dependencies
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'))
- script: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
displayName: Register Docker QEMU
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'arm64'))
- script: |
set -e
docker run -e VSCODE_QUALITY -e GITHUB_TOKEN -v $(pwd):/root/vscode -v ~/.netrc:/root/.netrc vscodehub.azurecr.io/vscode-linux-build-agent:centos7-devtoolset8-arm64 /root/vscode/build/azure-pipelines/linux/scripts/install-remote-dependencies.sh
displayName: Install dependencies via qemu
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'arm64'))
- script: |
set -e
tar -cz --ignore-failed-read -f $(Build.ArtifactStagingDirectory)/reh_node_modules-$(VSCODE_ARCH).tar.gz -C $(Build.SourcesDirectory)/remote node_modules
displayName: Compress node_modules output
- task: PublishPipelineArtifact@0
displayName: "Publish remote node_modules"
inputs:
artifactName: "reh_node_modules-$(VSCODE_ARCH)"
targetPath: $(Build.ArtifactStagingDirectory)/reh_node_modules-$(VSCODE_ARCH).tar.gz

View File

@@ -0,0 +1,14 @@
#!/usr/bin/env bash
set -e
echo "Installing remote dependencies"
(cd remote && rm -rf node_modules)
for i in {1..3}; do # try 3 times, for Terrapin
yarn --cwd remote --frozen-lockfile --check-files && break
if [ $i -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
fi
echo "Yarn failed $i, trying again..."
done

View File

@@ -1,11 +1,7 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.x"
versionSpec: "16.x"
- task: DownloadPipelineArtifact@0
displayName: "Download Pipeline Artifact"
@@ -22,6 +18,13 @@ steps:
# Make sure we get latest packages
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y curl apt-transport-https ca-certificates
# Yarn
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update
sudo apt-get install -y yarn
# Define variables
REPO="$(pwd)"

View File

@@ -89,7 +89,7 @@ steps:
- script: |
set -e
node build/azure-pipelines/mixin
node build/azure-pipelines/sql-mixin
displayName: Mix in quality
- script: |
@@ -120,8 +120,8 @@ steps:
- script: |
set -e
DISPLAY=:10 ./scripts/test.sh --build --tfs "Unit Tests" --coverage
displayName: Run unit tests (Electron)
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
displayName: Run core unit tests
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'), ne(variables['EXTENSIONS_ONLY'], 'true'))
- script: |
# Figure out the full absolute path of the product we just built
@@ -133,8 +133,8 @@ steps:
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/azuredatastudio-reh-linux-x64" \
DISPLAY=:10 ./scripts/test-integration.sh --build --tfs "Integration Tests"
displayName: Run integration tests (Electron)
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
displayName: Run core integration tests
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'), ne(variables['EXTENSIONS_ONLY'], 'true'))
- script: |
# Figure out the full absolute path of the product we just built
@@ -147,18 +147,23 @@ steps:
NO_CLEANUP=1 \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/azuredatastudio-reh-linux-x64" \
DISPLAY=:10 ./scripts/test-extensions-unit.sh --build --tfs "Extension Unit Tests"
displayName: 'Run Stable Extension Unit Tests'
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
displayName: Run Extension Unit Tests (Continue on Error)
continueOnError: true
condition: and(succeeded(), and(eq(variables['RUN_TESTS'], 'true'), eq(variables['EXTENSION_UNIT_TESTS_FAIL_ON_ERROR'], 'false')))
- script: |
# Figure out the full absolute path of the product we just built
# including the remote server and configure the unit tests
# to run with these builds instead of running out of sources.
set -e
APP_ROOT=$(agent.builddirectory)/azuredatastudio-linux-x64
APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
DISPLAY=:10 ./scripts/test-extensions-unit-unstable.sh
displayName: 'Run Unstable Extension Unit Tests'
continueOnError: true
condition: and(succeeded(), eq(variables['RUN_UNSTABLE_TESTS'], 'true'))
NO_CLEANUP=1 \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/azuredatastudio-reh-linux-x64" \
DISPLAY=:10 ./scripts/test-extensions-unit.sh --build --tfs "Extension Unit Tests"
displayName: Run Extension Unit Tests (Fail on Error)
condition: and(succeeded(), and(eq(variables['RUN_TESTS'], 'true'), ne(variables['EXTENSION_UNIT_TESTS_FAIL_ON_ERROR'], 'false')))
- bash: |
set -e
@@ -178,11 +183,13 @@ steps:
set -e
yarn gulp vscode-linux-x64-build-deb
displayName: Build Deb
condition: and(succeeded(), ne(variables['EXTENSIONS_ONLY'], 'true'))
- script: |
set -e
yarn gulp vscode-linux-x64-build-rpm
displayName: Build Rpm
condition: and(succeeded(), ne(variables['EXTENSIONS_ONLY'], 'true'))
- task: UseDotNet@2
displayName: 'Install .NET Core sdk for signing'

View File

@@ -2,67 +2,85 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
const json = require('gulp-json-editor');
Object.defineProperty(exports, "__esModule", { value: true });
const json = require("gulp-json-editor");
const buffer = require('gulp-buffer');
const filter = require('gulp-filter');
const es = require('event-stream');
const vfs = require('vinyl-fs');
const fancyLog = require('fancy-log');
const ansiColors = require('ansi-colors');
const fs = require('fs');
const path = require('path');
function main() {
const quality = process.env['VSCODE_QUALITY'];
if (!quality) {
console.log('Missing VSCODE_QUALITY, skipping mixin');
return;
}
const productJsonFilter = filter(f => f.relative === 'product.json', { restore: true });
fancyLog(ansiColors.blue('[mixin]'), `Mixing in sources:`);
return vfs
.src(`quality/${quality}/**`, { base: `quality/${quality}` })
.pipe(filter(f => !f.isDirectory()))
.pipe(productJsonFilter)
.pipe(buffer())
.pipe(json(o => {
const ossProduct = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', 'product.json'), 'utf8'));
let builtInExtensions = ossProduct.builtInExtensions;
if (Array.isArray(o.builtInExtensions)) {
fancyLog(ansiColors.blue('[mixin]'), 'Overwriting built-in extensions:', o.builtInExtensions.map(e => e.name));
builtInExtensions = o.builtInExtensions;
} else if (o.builtInExtensions) {
const include = o.builtInExtensions['include'] || [];
const exclude = o.builtInExtensions['exclude'] || [];
fancyLog(ansiColors.blue('[mixin]'), 'OSS built-in extensions:', builtInExtensions.map(e => e.name));
fancyLog(ansiColors.blue('[mixin]'), 'Including built-in extensions:', include.map(e => e.name));
fancyLog(ansiColors.blue('[mixin]'), 'Excluding built-in extensions:', exclude);
builtInExtensions = builtInExtensions.filter(ext => !include.find(e => e.name === ext.name) && !exclude.find(name => name === ext.name));
builtInExtensions = [...builtInExtensions, ...include];
fancyLog(ansiColors.blue('[mixin]'), 'Final built-in extensions:', builtInExtensions.map(e => e.name));
} else {
fancyLog(ansiColors.blue('[mixin]'), 'Inheriting OSS built-in extensions', builtInExtensions.map(e => e.name));
}
return { ...ossProduct, ...o, builtInExtensions };
}))
.pipe(productJsonFilter.restore)
.pipe(es.mapSync(function (f) {
fancyLog(ansiColors.blue('[mixin]'), f.relative, ansiColors.green('✔︎'));
return f;
}))
.pipe(vfs.dest('.'));
const filter = require("gulp-filter");
const es = require("event-stream");
const vfs = require("vinyl-fs");
const fancyLog = require("fancy-log");
const ansiColors = require("ansi-colors");
const fs = require("fs");
const path = require("path");
async function mixinClient(quality) {
const productJsonFilter = filter(f => f.relative === 'product.json', { restore: true });
fancyLog(ansiColors.blue('[mixin]'), `Mixing in client:`);
return new Promise((c, e) => {
vfs
.src(`quality/${quality}/**`, { base: `quality/${quality}` })
.pipe(filter(f => !f.isDirectory()))
.pipe(filter(f => f.relative !== 'product.server.json'))
.pipe(productJsonFilter)
.pipe(buffer())
.pipe(json((o) => {
const originalProduct = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', 'product.json'), 'utf8'));
let builtInExtensions = originalProduct.builtInExtensions;
if (Array.isArray(o.builtInExtensions)) {
fancyLog(ansiColors.blue('[mixin]'), 'Overwriting built-in extensions:', o.builtInExtensions.map(e => e.name));
builtInExtensions = o.builtInExtensions;
}
else if (o.builtInExtensions) {
const include = o.builtInExtensions['include'] || [];
const exclude = o.builtInExtensions['exclude'] || [];
fancyLog(ansiColors.blue('[mixin]'), 'OSS built-in extensions:', builtInExtensions.map(e => e.name));
fancyLog(ansiColors.blue('[mixin]'), 'Including built-in extensions:', include.map(e => e.name));
fancyLog(ansiColors.blue('[mixin]'), 'Excluding built-in extensions:', exclude);
builtInExtensions = builtInExtensions.filter(ext => !include.find(e => e.name === ext.name) && !exclude.find(name => name === ext.name));
builtInExtensions = [...builtInExtensions, ...include];
fancyLog(ansiColors.blue('[mixin]'), 'Final built-in extensions:', builtInExtensions.map(e => e.name));
}
else {
fancyLog(ansiColors.blue('[mixin]'), 'Inheriting OSS built-in extensions', builtInExtensions.map(e => e.name));
}
return Object.assign(Object.assign({ webBuiltInExtensions: originalProduct.webBuiltInExtensions }, o), { builtInExtensions });
}))
.pipe(productJsonFilter.restore)
.pipe(es.mapSync((f) => {
fancyLog(ansiColors.blue('[mixin]'), f.relative, ansiColors.green('✔︎'));
return f;
}))
.pipe(vfs.dest('.'))
.on('end', () => c())
.on('error', (err) => e(err));
});
}
function mixinServer(quality) {
const serverProductJsonPath = `quality/${quality}/product.server.json`;
if (!fs.existsSync(serverProductJsonPath)) {
fancyLog(ansiColors.blue('[mixin]'), `Server product not found`, serverProductJsonPath);
return;
}
fancyLog(ansiColors.blue('[mixin]'), `Mixing in server:`);
const originalProduct = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', 'product.json'), 'utf8'));
const serverProductJson = JSON.parse(fs.readFileSync(serverProductJsonPath, 'utf8'));
fs.writeFileSync('product.json', JSON.stringify(Object.assign(Object.assign({}, originalProduct), serverProductJson), undefined, '\t'));
fancyLog(ansiColors.blue('[mixin]'), 'product.json', ansiColors.green('✔︎'));
}
function main() {
const quality = process.env['VSCODE_QUALITY'];
if (!quality) {
console.log('Missing VSCODE_QUALITY, skipping mixin');
return;
}
if (process.argv[2] === '--server') {
mixinServer(quality);
}
else {
mixinClient(quality).catch(err => {
console.error(err);
process.exit(1);
});
}
}
main();

View File

@@ -0,0 +1,119 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import * as json from 'gulp-json-editor';
const buffer = require('gulp-buffer');
import * as filter from 'gulp-filter';
import * as es from 'event-stream';
import * as Vinyl from 'vinyl';
import * as vfs from 'vinyl-fs';
import * as fancyLog from 'fancy-log';
import * as ansiColors from 'ansi-colors';
import * as fs from 'fs';
import * as path from 'path';
interface IBuiltInExtension {
readonly name: string;
readonly version: string;
readonly repo: string;
readonly metadata: any;
}
interface OSSProduct {
readonly builtInExtensions: IBuiltInExtension[];
readonly webBuiltInExtensions?: IBuiltInExtension[];
}
interface Product {
readonly builtInExtensions?: IBuiltInExtension[] | { 'include'?: IBuiltInExtension[]; 'exclude'?: string[] };
readonly webBuiltInExtensions?: IBuiltInExtension[];
}
async function mixinClient(quality: string): Promise<void> {
const productJsonFilter = filter(f => f.relative === 'product.json', { restore: true });
fancyLog(ansiColors.blue('[mixin]'), `Mixing in client:`);
return new Promise((c, e) => {
vfs
.src(`quality/${quality}/**`, { base: `quality/${quality}` })
.pipe(filter(f => !f.isDirectory()))
.pipe(filter(f => f.relative !== 'product.server.json'))
.pipe(productJsonFilter)
.pipe(buffer())
.pipe(json((o: Product) => {
const originalProduct = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', 'product.json'), 'utf8')) as OSSProduct;
let builtInExtensions = originalProduct.builtInExtensions;
if (Array.isArray(o.builtInExtensions)) {
fancyLog(ansiColors.blue('[mixin]'), 'Overwriting built-in extensions:', o.builtInExtensions.map(e => e.name));
builtInExtensions = o.builtInExtensions;
} else if (o.builtInExtensions) {
const include = o.builtInExtensions['include'] || [];
const exclude = o.builtInExtensions['exclude'] || [];
fancyLog(ansiColors.blue('[mixin]'), 'OSS built-in extensions:', builtInExtensions.map(e => e.name));
fancyLog(ansiColors.blue('[mixin]'), 'Including built-in extensions:', include.map(e => e.name));
fancyLog(ansiColors.blue('[mixin]'), 'Excluding built-in extensions:', exclude);
builtInExtensions = builtInExtensions.filter(ext => !include.find(e => e.name === ext.name) && !exclude.find(name => name === ext.name));
builtInExtensions = [...builtInExtensions, ...include];
fancyLog(ansiColors.blue('[mixin]'), 'Final built-in extensions:', builtInExtensions.map(e => e.name));
} else {
fancyLog(ansiColors.blue('[mixin]'), 'Inheriting OSS built-in extensions', builtInExtensions.map(e => e.name));
}
return { webBuiltInExtensions: originalProduct.webBuiltInExtensions, ...o, builtInExtensions };
}))
.pipe(productJsonFilter.restore)
.pipe(es.mapSync((f: Vinyl) => {
fancyLog(ansiColors.blue('[mixin]'), f.relative, ansiColors.green('✔︎'));
return f;
}))
.pipe(vfs.dest('.'))
.on('end', () => c())
.on('error', (err: any) => e(err));
});
}
function mixinServer(quality: string) {
const serverProductJsonPath = `quality/${quality}/product.server.json`;
if (!fs.existsSync(serverProductJsonPath)) {
fancyLog(ansiColors.blue('[mixin]'), `Server product not found`, serverProductJsonPath);
return;
}
fancyLog(ansiColors.blue('[mixin]'), `Mixing in server:`);
const originalProduct = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', 'product.json'), 'utf8')) as OSSProduct;
const serverProductJson = JSON.parse(fs.readFileSync(serverProductJsonPath, 'utf8'));
fs.writeFileSync('product.json', JSON.stringify({ ...originalProduct, ...serverProductJson }, undefined, '\t'));
fancyLog(ansiColors.blue('[mixin]'), 'product.json', ansiColors.green('✔︎'));
}
function main() {
const quality = process.env['VSCODE_QUALITY'];
if (!quality) {
console.log('Missing VSCODE_QUALITY, skipping mixin');
return;
}
if (process.argv[2] === '--server') {
mixinServer(quality);
} else {
mixinClient(quality).catch(err => {
console.error(err);
process.exit(1);
});
}
}
main();

View File

@@ -9,6 +9,10 @@ schedules:
- joao/web
parameters:
- name: VSCODE_DISTRO_REF
displayName: Distro Ref (Private build)
type: string
default: " "
- name: VSCODE_QUALITY
displayName: Quality
type: string
@@ -73,6 +77,10 @@ parameters:
displayName: "Publish to builds.code.visualstudio.com"
type: boolean
default: true
- name: VSCODE_PUBLISH_TO_MOONCAKE
displayName: "Publish to Azure China"
type: boolean
default: true
- name: VSCODE_RELEASE
displayName: "Release build if successful"
type: boolean
@@ -87,12 +95,12 @@ parameters:
default: false
variables:
- name: VSCODE_DISTRO_REF
value: ${{ parameters.VSCODE_DISTRO_REF }}
- name: ENABLE_TERRAPIN
value: ${{ eq(parameters.ENABLE_TERRAPIN, true) }}
- name: VSCODE_QUALITY
value: ${{ parameters.VSCODE_QUALITY }}
- name: VSCODE_RELEASE
value: ${{ parameters.VSCODE_RELEASE }}
- 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
@@ -103,30 +111,30 @@ variables:
value: ${{ in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI') }}
- name: VSCODE_PUBLISH
value: ${{ and(eq(parameters.VSCODE_PUBLISH, true), eq(variables.VSCODE_CIBUILD, false)) }}
- name: VSCODE_PUBLISH_TO_MOONCAKE
value: ${{ eq(parameters.VSCODE_PUBLISH_TO_MOONCAKE, true) }}
- 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)) }}
value: ${{ and(eq(parameters.VSCODE_BUILD_MACOS, true), eq(parameters.VSCODE_BUILD_MACOS_ARM64, true), eq(parameters.VSCODE_BUILD_MACOS_UNIVERSAL, true)) }}
- name: AZURE_CDN_URL
value: https://az764295.vo.msecnd.net
- name: AZURE_DOCUMENTDB_ENDPOINT
value: https://vscode.documents.azure.com:443/
- name: AZURE_STORAGE_ACCOUNT
value: ticino
- name: AZURE_STORAGE_ACCOUNT_2
value: vscode
- name: MOONCAKE_CDN_URL
value: https://vscode.cdn.azure.cn
- name: VSCODE_MIXIN_REPO
value: microsoft/vscode-distro
- name: skipComponentGovernanceDetection
value: true
- name: Codeql.SkipTaskAutoInjection
value: true
resources:
containers:
- container: vscode-x64
- container: vscode-bionic-x64
image: vscodehub.azurecr.io/vscode-linux-build-agent:bionic-x64
endpoint: VSCodeHub
options: --user 0:0 --cap-add SYS_ADMIN
@@ -138,6 +146,10 @@ resources:
image: vscodehub.azurecr.io/vscode-linux-build-agent:stretch-armhf
endpoint: VSCodeHub
options: --user 0:0 --cap-add SYS_ADMIN
- container: centos7-devtoolset8-x64
image: vscodehub.azurecr.io/vscode-linux-build-agent:centos7-devtoolset8-x64
endpoint: VSCodeHub
options: --user 0:0 --cap-add SYS_ADMIN
- container: snapcraft
image: snapcore/snapcraft:stable
@@ -145,219 +157,243 @@ stages:
- stage: Compile
jobs:
- job: Compile
pool: vscode-1es
pool: vscode-1es-linux
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:
- stage: Windows
dependsOn:
- Compile
pool: vscode-1es-windows
jobs:
- ${{ if eq(parameters.VSCODE_BUILD_WIN32, true) }}:
- job: Windows
timeoutInMinutes: 120
variables:
VSCODE_ARCH: x64
steps:
- template: win32/product-build-win32.yml
- ${{ 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: 120
variables:
VSCODE_ARCH: ia32
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(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:
- stage: LinuxServerDependencies
dependsOn: [] # run in parallel to compile stage
pool: vscode-1es-linux
jobs:
- ${{ if eq(parameters.VSCODE_BUILD_LINUX, true) }}:
- job: x64
container: centos7-devtoolset8-x64
variables:
VSCODE_ARCH: x64
NPM_ARCH: x64
steps:
- template: linux/product-build-linux-server.yml
- ${{ if eq(parameters.VSCODE_BUILD_LINUX, true) }}:
- job: Linux
container: vscode-x64
variables:
VSCODE_ARCH: x64
NPM_ARCH: x64
DISPLAY: ":10"
steps:
- template: linux/product-build-linux.yml
- ${{ if eq(parameters.VSCODE_BUILD_LINUX, true) }}:
- job: arm64
variables:
VSCODE_ARCH: arm64
steps:
- template: linux/product-build-linux-server.yml
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX, true), ne(variables['VSCODE_PUBLISH'], 'false')) }}:
- job: LinuxSnap
dependsOn:
- Linux
container: snapcraft
variables:
VSCODE_ARCH: x64
steps:
- template: linux/snap-build-linux.yml
- ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_LINUX'], true)) }}:
- stage: Linux
dependsOn:
- Compile
- LinuxServerDependencies
pool: vscode-1es-linux
jobs:
- ${{ if eq(parameters.VSCODE_BUILD_LINUX, true) }}:
- job: Linuxx64
container: vscode-bionic-x64
variables:
VSCODE_ARCH: x64
NPM_ARCH: x64
DISPLAY: ":10"
steps:
- template: linux/product-build-linux-client.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
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX, true), ne(variables['VSCODE_PUBLISH'], 'false')) }}:
- job: LinuxSnap
dependsOn:
- Linuxx64
container: snapcraft
variables:
VSCODE_ARCH: x64
steps:
- template: linux/snap-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_ARMHF, true)) }}:
- job: LinuxArmhf
container: vscode-armhf
variables:
VSCODE_ARCH: armhf
NPM_ARCH: armv7l
steps:
- template: linux/product-build-linux-client.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_ARMHF, true)) }}:
- job: LinuxSnapArmhf
dependsOn:
- LinuxArmhf
container: snapcraft
variables:
VSCODE_ARCH: armhf
steps:
- template: linux/snap-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_ARM64, true)) }}:
- job: LinuxArm64
container: vscode-arm64
variables:
VSCODE_ARCH: arm64
NPM_ARCH: arm64
steps:
- template: linux/product-build-linux-client.yml
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ALPINE, true)) }}:
- job: LinuxAlpine
variables:
VSCODE_ARCH: x64
steps:
- template: linux/product-build-alpine.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_ARM64, true)) }}:
- job: LinuxAlpineArm64
variables:
VSCODE_ARCH: arm64
steps:
- template: linux/product-build-alpine.yml
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ALPINE, true)) }}:
- job: LinuxAlpine
variables:
VSCODE_ARCH: x64
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(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ALPINE_ARM64, true)) }}:
- job: LinuxAlpineArm64
timeoutInMinutes: 120
variables:
VSCODE_ARCH: arm64
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:
- stage: macOS
dependsOn:
- Compile
pool:
vmImage: macOS-latest
variables:
BUILDSECMON_OPT_IN: true
jobs:
- ${{ if eq(parameters.VSCODE_BUILD_MACOS, true) }}:
- job: macOSTest
timeoutInMinutes: 90
variables:
VSCODE_ARCH: x64
steps:
- template: darwin/product-build-darwin-test.yml
- ${{ if eq(variables['VSCODE_CIBUILD'], false) }}:
- job: macOS
timeoutInMinutes: 90
variables:
VSCODE_ARCH: x64
steps:
- template: darwin/product-build-darwin.yml
- job: macOSSign
dependsOn:
- macOS
timeoutInMinutes: 90
variables:
VSCODE_ARCH: x64
steps:
- template: darwin/product-build-darwin-sign.yml
- ${{ 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 eq(variables['VSCODE_CIBUILD'], false) }}:
- job: macOSARM64Sign
dependsOn:
- macOSARM64
timeoutInMinutes: 90
variables:
VSCODE_ARCH: arm64
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_CIBUILD'], false), eq(variables['VSCODE_BUILD_MACOS_UNIVERSAL'], true)) }}:
- job: macOSUniversal
dependsOn:
- macOS
- macOSARM64
timeoutInMinutes: 90
variables:
VSCODE_ARCH: universal
steps:
- template: darwin/product-build-darwin-universal.yml
- ${{ if eq(variables['VSCODE_CIBUILD'], false) }}:
- job: macOSUniversalSign
dependsOn:
- macOSUniversal
timeoutInMinutes: 90
variables:
VSCODE_ARCH: universal
steps:
- template: darwin/product-build-darwin-sign.yml
- ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), ne(variables['VSCODE_PUBLISH'], 'false')) }}:
- stage: Publish
dependsOn:
- Compile
pool:
vmImage: "Ubuntu-18.04"
variables:
- name: BUILDS_API_URL
value: $(System.CollectionUri)$(System.TeamProject)/_apis/build/builds/$(Build.BuildId)/
jobs:
- job: PublishBuild
timeoutInMinutes: 180
displayName: Publish Build
steps:
- template: product-publish.yml
- ${{ if or(eq(parameters.VSCODE_RELEASE, true), and(in(parameters.VSCODE_QUALITY, 'insider', 'exploration'), eq(variables['VSCODE_SCHEDULEDBUILD'], true))) }}:
- stage: Release
- stage: Publish
dependsOn:
- Publish
pool:
vmImage: "Ubuntu-18.04"
- Compile
pool: vscode-1es-linux
variables:
- name: BUILDS_API_URL
value: $(System.CollectionUri)$(System.TeamProject)/_apis/build/builds/$(Build.BuildId)/
jobs:
- job: ReleaseBuild
displayName: Release Build
- job: PublishBuild
timeoutInMinutes: 180
displayName: Publish Build
steps:
- template: product-release.yml
- template: product-publish.yml
- ${{ if or(and(parameters.VSCODE_RELEASE, eq(parameters.VSCODE_DISTRO_REF, ' ')), and(in(parameters.VSCODE_QUALITY, 'insider', 'exploration'), eq(variables['VSCODE_SCHEDULEDBUILD'], true))) }}:
- stage: Release
dependsOn:
- Publish
pool: vscode-1es-linux
jobs:
- job: ReleaseBuild
displayName: Release Build
steps:
- template: product-release.yml

View File

@@ -1,18 +1,14 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.x"
versionSpec: "16.x"
- task: AzureKeyVault@1
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: 'github-distro-mixin-password,ticino-storage-key'
SecretsFilter: "github-distro-mixin-password"
- script: |
set -e
@@ -26,6 +22,14 @@ steps:
git config user.name "VSCode"
displayName: Prepare tooling
- script: |
set -e
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
echo "##vso[task.setvariable variable=VSCODE_DISTRO_COMMIT;]$(git rev-parse FETCH_HEAD)"
git checkout FETCH_HEAD
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
displayName: Checkout override commit
- script: |
set -e
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
@@ -54,6 +58,7 @@ steps:
set -e
npx https://aka.ms/enablesecurefeed standAlone
timeoutInMinutes: 5
retryCountOnTaskFailure: 3
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
displayName: Switch to Terrapin packages
@@ -67,7 +72,7 @@ steps:
- script: |
set -e
for i in {1..3}; do # try 3 times, for Terrapin
yarn --frozen-lockfile && break
yarn --frozen-lockfile --check-files && break
if [ $i -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
@@ -98,6 +103,8 @@ steps:
- script: |
set -e
yarn npm-run-all -lp core-ci extensions-ci hygiene eslint valid-layers-check
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Compile & Hygiene
- script: |
@@ -107,9 +114,23 @@ steps:
displayName: Compile test suites
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- task: AzureCLI@2
inputs:
azureSubscription: "vscode-builds-subscription"
scriptType: pscore
scriptLocation: inlineScript
addSpnToEnvironment: true
inlineScript: |
Write-Host "##vso[task.setvariable variable=AZURE_TENANT_ID]$env:tenantId"
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_ID]$env:servicePrincipalId"
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_SECRET;issecret=true]$env:servicePrincipalKey"
- script: |
set -e
AZURE_STORAGE_ACCESS_KEY="$(ticino-storage-key)" \
AZURE_STORAGE_ACCOUNT="ticino" \
AZURE_TENANT_ID="$(AZURE_TENANT_ID)" \
AZURE_CLIENT_ID="$(AZURE_CLIENT_ID)" \
AZURE_CLIENT_SECRET="$(AZURE_CLIENT_SECRET)" \
node build/azure-pipelines/upload-sourcemaps
displayName: Upload sourcemaps
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))

View File

@@ -0,0 +1,46 @@
trigger: none
pr: none
variables:
LinuxContainerImage: "onebranch.azurecr.io/linux/ubuntu-2004:latest"
resources:
repositories:
- repository: templates
type: git
name: OneBranch.Pipelines/GovernedTemplates
ref: refs/heads/main
- repository: distro
type: github
name: microsoft/vscode-distro
ref: refs/heads/distro
endpoint: Monaco
extends:
template: v2/OneBranch.NonOfficial.CrossPlat.yml@templates
parameters:
git:
fetchDepth: 1
lfs: true
retryCount: 3
globalSdl:
policheck:
break: true
credscan:
suppressionsFile: $(Build.SourcesDirectory)\build\azure-pipelines\config\CredScanSuppressions.json
stages:
- stage: Compile
jobs:
- job: Compile
pool:
type: linux
variables:
ob_outputDirectory: '$(Build.SourcesDirectory)'
steps:
- checkout: distro

View File

@@ -15,7 +15,7 @@ function Get-PipelineArtifact {
return
}
$res.value | Where-Object { $_.name -Like $Name }
$res.value | Where-Object { $_.name -Like $Name -and $_.name -NotLike "*sbom" }
} catch {
Write-Warning $_
}
@@ -29,8 +29,8 @@ if (Test-Path $ARTIFACT_PROCESSED_WILDCARD_PATH) {
# This means that the latest artifact_processed_*.txt file has all of the contents of the previous ones.
# Note: The kusto-like syntax only works in PS7+ and only in scripts, not at the REPL.
Get-ChildItem $ARTIFACT_PROCESSED_WILDCARD_PATH
| Sort-Object
| Select-Object -Last 1
# Sort by file name length first and then Name to make sure we sort numerically. Ex. 12 comes after 9.
| Sort-Object { $_.Name.Length },Name -Bottom 1
| Get-Content
| ForEach-Object {
$set.Add($_) | Out-Null

View File

@@ -1,29 +1,72 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: "12.x"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.x"
versionSpec: "16.x"
- task: AzureKeyVault@1
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: 'builds-docdb-key-readwrite,github-distro-mixin-password,ticino-storage-key,vscode-storage-key,vscode-mooncake-storage-key'
SecretsFilter: "github-distro-mixin-password"
- script: |
set -e
cat << EOF > ~/.netrc
machine github.com
login vscode
password $(github-distro-mixin-password)
EOF
git config user.email "vscode@microsoft.com"
git config user.name "VSCode"
displayName: Prepare tooling
- script: |
set -e
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
echo "##vso[task.setvariable variable=VSCODE_DISTRO_COMMIT;]$(git rev-parse FETCH_HEAD)"
git checkout FETCH_HEAD
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
displayName: Checkout override commit
- script: |
set -e
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
displayName: Merge distro
- pwsh: |
. build/azure-pipelines/win32/exec.ps1
cd build
exec { yarn }
displayName: Install dependencies
displayName: Install build dependencies
- download: current
patterns: '**/artifacts_processed_*.txt'
patterns: "**/artifacts_processed_*.txt"
displayName: Download all artifacts_processed text files
- task: AzureCLI@2
inputs:
azureSubscription: "vscode-builds-subscription"
scriptType: pscore
scriptLocation: inlineScript
addSpnToEnvironment: true
inlineScript: |
Write-Host "##vso[task.setvariable variable=AZURE_TENANT_ID]$env:tenantId"
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_ID]$env:servicePrincipalId"
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_SECRET;issecret=true]$env:servicePrincipalKey"
- task: AzureCLI@2
inputs:
azureSubscription: "vscode-builds-mooncake-subscription"
scriptType: pscore
scriptLocation: inlineScript
addSpnToEnvironment: true
inlineScript: |
Write-Host "##vso[task.setvariable variable=AZURE_MOONCAKE_TENANT_ID]$env:tenantId"
Write-Host "##vso[task.setvariable variable=AZURE_MOONCAKE_CLIENT_ID]$env:servicePrincipalId"
Write-Host "##vso[task.setvariable variable=AZURE_MOONCAKE_CLIENT_SECRET;issecret=true]$env:servicePrincipalKey"
- pwsh: |
. build/azure-pipelines/win32/exec.ps1
@@ -32,7 +75,9 @@ steps:
return
}
$env:AZURE_DOCUMENTDB_MASTERKEY = "$(builds-docdb-key-readwrite)"
$env:AZURE_TENANT_ID = "$(AZURE_TENANT_ID)"
$env:AZURE_CLIENT_ID = "$(AZURE_CLIENT_ID)"
$env:AZURE_CLIENT_SECRET = "$(AZURE_CLIENT_SECRET)"
$VERSION = node -p "require('./package.json').version"
Write-Host "Creating build with version: $VERSION"
exec { node build/azure-pipelines/common/createBuild.js $VERSION }
@@ -40,10 +85,12 @@ steps:
- pwsh: |
$env:VSCODE_MIXIN_PASSWORD = "$(github-distro-mixin-password)"
$env:AZURE_DOCUMENTDB_MASTERKEY = "$(builds-docdb-key-readwrite)"
$env:AZURE_STORAGE_ACCESS_KEY = "$(ticino-storage-key)"
$env:AZURE_STORAGE_ACCESS_KEY_2 = "$(vscode-storage-key)"
$env:MOONCAKE_STORAGE_ACCESS_KEY = "$(vscode-mooncake-storage-key)"
$env:AZURE_TENANT_ID = "$(AZURE_TENANT_ID)"
$env:AZURE_CLIENT_ID = "$(AZURE_CLIENT_ID)"
$env:AZURE_CLIENT_SECRET = "$(AZURE_CLIENT_SECRET)"
$env:AZURE_MOONCAKE_TENANT_ID = "$(AZURE_MOONCAKE_TENANT_ID)"
$env:AZURE_MOONCAKE_CLIENT_ID = "$(AZURE_MOONCAKE_CLIENT_ID)"
$env:AZURE_MOONCAKE_CLIENT_SECRET = "$(AZURE_MOONCAKE_CLIENT_SECRET)"
build/azure-pipelines/product-publish.ps1
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)

View File

@@ -1,23 +1,23 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
versionSpec: "16.x"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.x"
- task: AzureKeyVault@1
displayName: "Azure Key Vault: Get Secrets"
- task: AzureCLI@2
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: 'builds-docdb-key-readwrite'
scriptType: pscore
scriptLocation: inlineScript
addSpnToEnvironment: true
inlineScript: |
Write-Host "##vso[task.setvariable variable=AZURE_TENANT_ID]$env:tenantId"
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_ID]$env:servicePrincipalId"
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_SECRET;issecret=true]$env:servicePrincipalKey"
- script: |
set -e
(cd build ; yarn)
AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
AZURE_TENANT_ID="$(AZURE_TENANT_ID)" \
AZURE_CLIENT_ID="$(AZURE_CLIENT_ID)" \
AZURE_CLIENT_SECRET="$(AZURE_CLIENT_SECRET)" \
node build/azure-pipelines/common/releaseBuild.js

View File

@@ -2,7 +2,7 @@
trigger:
branches:
include: ["refs/tags/*"]
include: ["refs/tags/*.0"] # {{SQL CARBON EDIT}} Only run on major version releases
pr: none
@@ -12,7 +12,7 @@ pool:
steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
versionSpec: "16.x"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@3
inputs:
@@ -20,7 +20,7 @@ steps:
# - bash: |
# TAG_VERSION=$(git describe --tags `git rev-list --tags --max-count=1`)
# CHANNEL="G1C14HJ2F"
# CHANNEL="G1C14HJ2F"
# if [ "$TAG_VERSION" == "1.999.0" ]; then
# MESSAGE="<!here>. Someone pushed 1.999.0 tag. Please delete it ASAP from remote and local."

View File

@@ -32,209 +32,223 @@ variables:
value: x64
stages:
- stage: Windows
condition: eq(variables.SCAN_WINDOWS, 'true')
pool:
vmImage: VS2017-Win2016
jobs:
- job: WindowsJob
timeoutInMinutes: 0
steps:
- task: CredScan@3
continueOnError: true
inputs:
scanFolder: '$(Build.SourcesDirectory)'
outputFormat: 'pre'
- task: NodeTool@0
inputs:
versionSpec: "14.x"
- stage: Windows
condition: eq(variables.SCAN_WINDOWS, 'true')
pool:
vmImage: windows-latest
jobs:
- job: WindowsJob
timeoutInMinutes: 0
steps:
- task: CredScan@3
continueOnError: true
inputs:
scanFolder: "$(Build.SourcesDirectory)"
outputFormat: "pre"
- task: NodeTool@0
inputs:
versionSpec: "16.x"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.x"
- task: AzureKeyVault@1
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: "github-distro-mixin-password"
- task: AzureKeyVault@1
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: "github-distro-mixin-password"
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
"machine github.com`nlogin vscode`npassword $(github-distro-mixin-password)" | Out-File "$env:USERPROFILE\_netrc" -Encoding ASCII
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
"machine github.com`nlogin vscode`npassword $(github-distro-mixin-password)" | Out-File "$env:USERPROFILE\_netrc" -Encoding ASCII
exec { git config user.email "vscode@microsoft.com" }
exec { git config user.name "VSCode" }
displayName: Prepare tooling
exec { git config user.email "vscode@microsoft.com" }
exec { git config user.name "VSCode" }
displayName: Prepare tooling
# - powershell: |
# . build/azure-pipelines/win32/exec.ps1
# $ErrorActionPreference = "Stop"
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro") }
displayName: Merge distro
# exec { git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $(VSCODE_DISTRO_REF) }
# exec { git checkout FETCH_HEAD }
# condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
# displayName: Checkout override commit
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { npx https://aka.ms/enablesecurefeed standAlone }
timeoutInMinutes: 5
condition: and(succeeded(), eq(variables['ENABLE_TERRAPIN'], 'true'))
displayName: Switch to Terrapin packages
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro") }
displayName: Merge distro
- task: Semmle@1
inputs:
sourceCodeDirectory: '$(Build.SourcesDirectory)'
language: 'cpp'
buildCommandsString: 'yarn --frozen-lockfile'
querySuite: 'Required'
timeout: '1800'
ram: '16384'
addProjectDirToScanningExclusionList: true
env:
npm_config_arch: "$(NPM_ARCH)"
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: CodeQL
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { npx https://aka.ms/enablesecurefeed standAlone }
timeoutInMinutes: 5
retryCountOnTaskFailure: 3
condition: and(succeeded(), eq(variables['ENABLE_TERRAPIN'], 'true'))
displayName: Switch to Terrapin packages
- powershell: |
. build/azure-pipelines/win32/exec.ps1
. build/azure-pipelines/win32/retry.ps1
$ErrorActionPreference = "Stop"
retry { exec { yarn --frozen-lockfile } }
env:
npm_config_arch: "$(NPM_ARCH)"
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
GITHUB_TOKEN: "$(github-distro-mixin-password)"
CHILD_CONCURRENCY: 1
displayName: Install dependencies
- task: Semmle@1
inputs:
sourceCodeDirectory: "$(Build.SourcesDirectory)"
language: "cpp"
buildCommandsString: "yarn --frozen-lockfile --check-files"
querySuite: "Required"
timeout: "1800"
ram: "16384"
addProjectDirToScanningExclusionList: true
env:
npm_config_arch: "$(NPM_ARCH)"
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: CodeQL
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { yarn gulp "vscode-symbols-win32-$(VSCODE_ARCH)" }
displayName: Download Symbols
- powershell: |
. build/azure-pipelines/win32/exec.ps1
. build/azure-pipelines/win32/retry.ps1
$ErrorActionPreference = "Stop"
retry { exec { yarn --frozen-lockfile --check-files } }
env:
npm_config_arch: "$(NPM_ARCH)"
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
GITHUB_TOKEN: "$(github-distro-mixin-password)"
CHILD_CONCURRENCY: 1
displayName: Install dependencies
- task: BinSkim@4
inputs:
InputType: 'Basic'
Function: 'analyze'
TargetPattern: 'guardianGlob'
AnalyzeTargetGlob: '$(agent.builddirectory)\scanbin\**.dll;$(agent.builddirectory)\scanbin\**.exe;$(agent.builddirectory)\scanbin\**.node'
AnalyzeLocalSymbolDirectories: '$(agent.builddirectory)\scanbin\VSCode-win32-$(VSCODE_ARCH)\pdb'
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { yarn gulp "vscode-symbols-win32-$(VSCODE_ARCH)" }
displayName: Download Symbols
- task: TSAUpload@2
inputs:
GdnPublishTsaOnboard: true
GdnPublishTsaConfigFile: '$(Build.SourcesDirectory)\build\azure-pipelines\.gdntsa'
- task: BinSkim@4
inputs:
InputType: "Basic"
Function: "analyze"
TargetPattern: "guardianGlob"
AnalyzeTargetGlob: '$(agent.builddirectory)\scanbin\**.dll;$(agent.builddirectory)\scanbin\**.exe;$(agent.builddirectory)\scanbin\**.node'
AnalyzeLocalSymbolDirectories: '$(agent.builddirectory)\scanbin\VSCode-win32-$(VSCODE_ARCH)\pdb'
- stage: Linux
dependsOn: []
condition: eq(variables.SCAN_LINUX, 'true')
pool:
vmImage: "Ubuntu-18.04"
jobs:
- job: LinuxJob
steps:
- task: CredScan@2
inputs:
toolMajorVersion: 'V2'
- task: NodeTool@0
inputs:
versionSpec: "14.x"
- task: TSAUpload@2
inputs:
GdnPublishTsaOnboard: true
GdnPublishTsaConfigFile: '$(Build.SourcesDirectory)\build\azure-pipelines\.gdntsa'
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.x"
- stage: Linux
dependsOn: []
condition: eq(variables.SCAN_LINUX, 'true')
pool:
vmImage: "Ubuntu-18.04"
jobs:
- job: LinuxJob
steps:
- task: CredScan@2
inputs:
toolMajorVersion: "V2"
- task: NodeTool@0
inputs:
versionSpec: "16.x"
- task: AzureKeyVault@1
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: "github-distro-mixin-password"
- task: AzureKeyVault@1
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: "github-distro-mixin-password"
- script: |
set -e
cat << EOF > ~/.netrc
machine github.com
login vscode
password $(github-distro-mixin-password)
EOF
- script: |
set -e
cat << EOF > ~/.netrc
machine github.com
login vscode
password $(github-distro-mixin-password)
EOF
git config user.email "vscode@microsoft.com"
git config user.name "VSCode"
displayName: Prepare tooling
git config user.email "vscode@microsoft.com"
git config user.name "VSCode"
displayName: Prepare tooling
- script: |
set -e
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
displayName: Merge distro
# - script: |
# set -e
# git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
# echo "##vso[task.setvariable variable=VSCODE_DISTRO_COMMIT;]$(git rev-parse FETCH_HEAD)"
# git checkout FETCH_HEAD
# condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
# displayName: Checkout override commit
- script: |
set -e
npx https://aka.ms/enablesecurefeed standAlone
timeoutInMinutes: 5
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
displayName: Switch to Terrapin packages
- script: |
set -e
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
displayName: Merge distro
- script: |
set -e
yarn --cwd build
yarn --cwd build compile
displayName: Compile build tools
- script: |
set -e
npx https://aka.ms/enablesecurefeed standAlone
timeoutInMinutes: 5
retryCountOnTaskFailure: 3
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
displayName: Switch to Terrapin packages
- script: |
set -e
export npm_config_arch=$(NPM_ARCH)
- script: |
set -e
for i in {1..3}; do # try 3 times, for Terrapin
yarn --cwd build --frozen-lockfile --check-files && break
if [ $i -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
fi
echo "Yarn failed $i, trying again..."
done
displayName: Install build dependencies
if [ -z "$CC" ] || [ -z "$CXX" ]; then
# Download clang based on chromium revision used by vscode
curl -s https://raw.githubusercontent.com/chromium/chromium/91.0.4472.164/tools/clang/scripts/update.py | python - --output-dir=$PWD/.build/CR_Clang --host-os=linux
# Download libcxx headers and objects from upstream electron releases
DEBUG=libcxx-fetcher \
VSCODE_LIBCXX_OBJECTS_DIR=$PWD/.build/libcxx-objects \
VSCODE_LIBCXX_HEADERS_DIR=$PWD/.build/libcxx_headers \
VSCODE_LIBCXXABI_HEADERS_DIR=$PWD/.build/libcxxabi_headers \
VSCODE_ARCH="$(NPM_ARCH)" \
node build/linux/libcxx-fetcher.js
# Set compiler toolchain
export CC=$PWD/.build/CR_Clang/bin/clang
export CXX=$PWD/.build/CR_Clang/bin/clang++
export CXXFLAGS="-nostdinc++ -D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS -isystem$PWD/.build/libcxx_headers/include -isystem$PWD/.build/libcxxabi_headers/include -fPIC -flto=thin -fsplit-lto-unit"
export LDFLAGS="-stdlib=libc++ -fuse-ld=lld -flto=thin -fsplit-lto-unit -L$PWD/.build/libcxx-objects -lc++abi"
fi
- script: |
set -e
export npm_config_arch=$(NPM_ARCH)
if [ "$VSCODE_ARCH" == "x64" ]; then
export VSCODE_REMOTE_CC=$(which gcc-4.8)
export VSCODE_REMOTE_CXX=$(which g++-4.8)
fi
if [ -z "$CC" ] || [ -z "$CXX" ]; then
# Download clang based on chromium revision used by vscode
curl -s https://raw.githubusercontent.com/chromium/chromium/96.0.4664.110/tools/clang/scripts/update.py | python - --output-dir=$PWD/.build/CR_Clang --host-os=linux
# Download libcxx headers and objects from upstream electron releases
DEBUG=libcxx-fetcher \
VSCODE_LIBCXX_OBJECTS_DIR=$PWD/.build/libcxx-objects \
VSCODE_LIBCXX_HEADERS_DIR=$PWD/.build/libcxx_headers \
VSCODE_LIBCXXABI_HEADERS_DIR=$PWD/.build/libcxxabi_headers \
VSCODE_ARCH="$(NPM_ARCH)" \
node build/linux/libcxx-fetcher.js
# Set compiler toolchain
export CC=$PWD/.build/CR_Clang/bin/clang
export CXX=$PWD/.build/CR_Clang/bin/clang++
export CXXFLAGS="-nostdinc++ -D__NO_INLINE__ -isystem$PWD/.build/libcxx_headers -isystem$PWD/.build/libcxx_headers/include -isystem$PWD/.build/libcxxabi_headers/include -fPIC -flto=thin -fsplit-lto-unit"
export LDFLAGS="-stdlib=libc++ -fuse-ld=lld -flto=thin -fsplit-lto-unit -L$PWD/.build/libcxx-objects -lc++abi"
export VSCODE_REMOTE_CC=$(which gcc)
export VSCODE_REMOTE_CXX=$(which g++)
fi
for i in {1..3}; do # try 3 times, for Terrapin
yarn --frozen-lockfile && break
if [ $i -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
fi
echo "Yarn failed $i, trying again..."
done
env:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Install dependencies
for i in {1..3}; do # try 3 times, for Terrapin
yarn --frozen-lockfile --check-files && break
if [ $i -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
fi
echo "Yarn failed $i, trying again..."
done
env:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Install dependencies
- script: |
set -e
yarn gulp vscode-symbols-linux-$(VSCODE_ARCH)
displayName: Build
- script: |
set -e
yarn gulp vscode-symbols-linux-$(VSCODE_ARCH)
displayName: Build
- task: BinSkim@3
inputs:
toolVersion: Latest
InputType: CommandLine
arguments: analyze $(agent.builddirectory)\scanbin\exe\*.* --recurse --local-symbol-directories $(agent.builddirectory)\scanbin\VSCode-linux-$(VSCODE_ARCH)\pdb
- task: BinSkim@3
inputs:
toolVersion: Latest
InputType: CommandLine
arguments: analyze $(agent.builddirectory)\scanbin\exe\*.* --recurse --local-symbol-directories $(agent.builddirectory)\scanbin\VSCode-linux-$(VSCODE_ARCH)\pdb
- task: TSAUpload@2
inputs:
GdnPublishTsaConfigFile: '$(Build.SourceDirectory)\build\azure-pipelines\.gdntsa'
- task: TSAUpload@2
inputs:
GdnPublishTsaConfigFile: '$(Build.SourceDirectory)\build\azure-pipelines\.gdntsa'

View File

@@ -0,0 +1,68 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
const json = require('gulp-json-editor');
const buffer = require('gulp-buffer');
const filter = require('gulp-filter');
const es = require('event-stream');
const vfs = require('vinyl-fs');
const fancyLog = require('fancy-log');
const ansiColors = require('ansi-colors');
const fs = require('fs');
const path = require('path');
function main() {
const quality = process.env['VSCODE_QUALITY'];
if (!quality) {
console.log('Missing VSCODE_QUALITY, skipping mixin');
return;
}
const productJsonFilter = filter(f => f.relative === 'product.json', { restore: true });
fancyLog(ansiColors.blue('[mixin]'), `Mixing in sources:`);
return vfs
.src(`quality/${quality}/**`, { base: `quality/${quality}` })
.pipe(filter(f => !f.isDirectory()))
.pipe(productJsonFilter)
.pipe(buffer())
.pipe(json(o => {
const ossProduct = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', 'product.json'), 'utf8'));
let builtInExtensions = ossProduct.builtInExtensions;
if (Array.isArray(o.builtInExtensions)) {
fancyLog(ansiColors.blue('[mixin]'), 'Overwriting built-in extensions:', o.builtInExtensions.map(e => e.name));
builtInExtensions = o.builtInExtensions;
} else if (o.builtInExtensions) {
const include = o.builtInExtensions['include'] || [];
const exclude = o.builtInExtensions['exclude'] || [];
fancyLog(ansiColors.blue('[mixin]'), 'OSS built-in extensions:', builtInExtensions.map(e => e.name));
fancyLog(ansiColors.blue('[mixin]'), 'Including built-in extensions:', include.map(e => e.name));
fancyLog(ansiColors.blue('[mixin]'), 'Excluding built-in extensions:', exclude);
builtInExtensions = builtInExtensions.filter(ext => !include.find(e => e.name === ext.name) && !exclude.find(name => name === ext.name));
builtInExtensions = [...builtInExtensions, ...include];
fancyLog(ansiColors.blue('[mixin]'), 'Final built-in extensions:', builtInExtensions.map(e => e.name));
} else {
fancyLog(ansiColors.blue('[mixin]'), 'Inheriting OSS built-in extensions', builtInExtensions.map(e => e.name));
}
return { ...ossProduct, ...o, builtInExtensions };
}))
.pipe(productJsonFilter.restore)
.pipe(es.mapSync(function (f) {
fancyLog(ansiColors.blue('[mixin]'), f.relative, ansiColors.green('✔︎'));
return f;
}))
.pipe(vfs.dest('.'));
}
main();

View File

@@ -4,87 +4,158 @@ resources:
image: sqltoolscontainers.azurecr.io/linux-build-agent:6
endpoint: SqlToolsContainers
jobs:
- job: Compile
pool:
vmImage: 'Ubuntu-18.04'
container: linux-x64
steps:
- script: |
set -e
echo "##vso[build.addbuildtag]$(VSCODE_QUALITY)"
displayName: Add Quality Build Tag
- template: sql-product-compile.yml
timeoutInMinutes: 120
stages:
- stage: Compile
jobs:
- job: Compile
pool:
vmImage: 'Ubuntu-20.04'
container: linux-x64
steps:
- script: |
set -e
echo "##vso[build.addbuildtag]$(VSCODE_QUALITY)"
displayName: Add Quality Build Tag
- template: sql-product-compile.yml
timeoutInMinutes: 120
- job: macOS
condition: and(succeeded(), eq(variables['VSCODE_BUILD_MACOS'], 'true'), ne(variables['VSCODE_QUALITY'], 'saw'))
pool:
vmImage: 'macOS-10.15'
dependsOn:
- Compile
steps:
- template: darwin/sql-product-build-darwin.yml
timeoutInMinutes: 90
- stage: macOS
condition: and(succeeded(), eq(variables['VSCODE_BUILD_MACOS'], 'true'), ne(variables['VSCODE_QUALITY'], 'saw'))
pool:
vmImage: 'macos-latest'
dependsOn:
- Compile
jobs:
- job: macOS
variables:
NPM_CONFIG_ARCH: x64
VSCODE_ARCH: x64
steps:
- template: darwin/sql-product-build-darwin.yml
timeoutInMinutes: 90
- job: macOS_Signing
condition: and(succeeded(), eq(variables['VSCODE_BUILD_MACOS'], 'true'), eq(variables['signed'], true), ne(variables['VSCODE_QUALITY'], 'saw'))
pool:
vmImage: 'macOS-10.15'
dependsOn:
- macOS
steps:
- template: darwin/sql-product-build-darwin-signing.yml
timeoutInMinutes: 60
- job: macOS_Signing
variables:
VSCODE_ARCH: x64
condition: and(succeeded(), eq(variables['signed'], true))
dependsOn:
- macOS
steps:
- template: darwin/sql-product-build-darwin-signing.yml
timeoutInMinutes: 60
- job: Linux
condition: and(succeeded(), eq(variables['VSCODE_BUILD_LINUX'], 'true'))
pool:
vmImage: 'Ubuntu-18.04'
container: linux-x64
dependsOn:
- Compile
steps:
- template: linux/sql-product-build-linux.yml
parameters:
extensionsToUnitTest: ["admin-tool-ext-win", "agent", "azcli", "azurecore", "cms", "dacpac", "data-workspace", "import", "machine-learning", "notebook", "resource-deployment", "schema-compare", "sql-bindings", "sql-database-projects"]
timeoutInMinutes: 90
- job: macOS_ARM64
variables:
NPM_CONFIG_ARCH: arm64
VSCODE_ARCH: arm64
# Do not run tests for arm64 build
RUN_TESTS: false
RUN_SMOKE_TESTS: false
condition: and(succeeded(), eq(variables['VSCODE_BUILD_MACOS_ARM64'], 'true'))
steps:
- template: darwin/sql-product-build-darwin.yml
timeoutInMinutes: 90
- job: Windows
condition: and(succeeded(), eq(variables['VSCODE_BUILD_WIN32'], 'true'))
pool:
vmImage: 'windows-2019'
dependsOn:
- Compile
steps:
- template: win32/sql-product-build-win32.yml
timeoutInMinutes: 90
- job: macOS_Signing_ARM64
variables:
VSCODE_ARCH: arm64
condition: and(succeeded(), eq(variables['signed'], true))
dependsOn:
- macOS_ARM64
steps:
- template: darwin/sql-product-build-darwin-signing.yml
timeoutInMinutes: 60
# disable due to invalid machine pool (karlb 3/9/2022)
# - job: Windows_Test
# condition: and(succeeded(), eq(variables['VSCODE_BUILD_WIN32'], 'true'))
# pool:
# name: mssqltools
# dependsOn:
# - Linux
# - Windows
# steps:
# - template: win32/sql-product-test-win32.yml
# timeoutInMinutes: 90
- job: macOS_Universal
variables:
NPM_CONFIG_ARCH: x64
VSCODE_ARCH: universal
# Do not run tests for universal build
RUN_TESTS: false
RUN_SMOKE_TESTS: false
dependsOn:
- macOS
- macOS_ARM64
steps:
- template: darwin/sql-product-build-darwin.yml
timeoutInMinutes: 90
- job: Release
condition: and(succeeded(), or(eq(variables['VSCODE_RELEASE'], 'true'), and(eq(variables['VSCODE_QUALITY'], 'insider'), eq(variables['Build.Reason'], 'Schedule'))))
pool:
vmImage: 'Ubuntu-18.04'
dependsOn:
- macOS
- Linux
- Windows
# disable due to invalid machine pool (karlb 3/9/2022)
# - Windows_Test
- macOS_Signing
steps:
- template: sql-release.yml
- job: macOS_Signing_Universal
variables:
VSCODE_ARCH: universal
condition: and(succeeded(), eq(variables['signed'], true))
dependsOn:
- macOS_Universal
steps:
- template: darwin/sql-product-build-darwin-signing.yml
timeoutInMinutes: 60
- stage: Linux
condition: and(succeeded(), eq(variables['VSCODE_BUILD_LINUX'], true))
dependsOn:
- Compile
jobs:
- job: Linux
pool:
vmImage: 'Ubuntu-20.04'
container: linux-x64
steps:
- template: linux/sql-product-build-linux.yml
parameters:
extensionsToUnitTest: ["admin-tool-ext-win", "agent", "azcli", "azurecore", "cms", "dacpac", "data-workspace", "import", "machine-learning", "notebook", "resource-deployment", "schema-compare", "sql-bindings", "sql-database-projects"]
timeoutInMinutes: 90
- stage: Windows
condition: and(succeeded(), eq(variables['VSCODE_BUILD_WIN32'], true))
pool:
vmImage: 'windows-2019'
dependsOn:
- Compile
jobs:
- job: Windows
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'))
# pool:
# name: mssqltools
# dependsOn:
# - Linux
# - Windows
# steps:
# - template: win32/sql-product-test-win32.yml
# timeoutInMinutes: 90
- stage: Release
# Requirements:
# 1. Release can be created only from builds of the official build pipeline, but not all builds of it should be released automatically.
# 2. A build should be released only when the release variable is set to true.
# 3. The daily scheduled Insiders build should be released automatically.
#
# Limitation:
# Ideally, we should be able to use the condition `and(succeeded(), eq(variables['VSCODE_RELEASE'], 'true')` to achieve what we want. The VSCODE_RELEASE variable can be defined as overwritable or non-overwritable based on whether we want to
# release from the pipeline. Unfortunately ADO doesn't allow overriding variable values for scheduled runs. (see https://learn.microsoft.com/en-us/azure/devops/pipelines/process/scheduled-triggers?view=azure-devops&tabs=yaml#scheduled-triggers).
# This means we can't simply set VSCODE_RELEASE to true only for scheduled builds and have to set it to true for all runs of the pipeline by default.
#
# Implementation:
# Set the VSCODE_RELEASE variable's default value to true and add the release tag for following scenarios:
# 1. The build is a scheduled insiders build.
# 2. The build is not an insiders build. e.g. rc1, stable, saw.
# To release an ad-hoc insiders build, manually add 'Release' tag to the build.
condition: and(succeeded(), eq(variables['VSCODE_RELEASE'], 'true'), or(ne(variables['VSCODE_QUALITY'], 'insider'), and(eq(variables['VSCODE_QUALITY'], 'insider'), eq(variables['Build.Reason'], 'Schedule'))))
pool:
vmImage: 'Ubuntu-20.04'
dependsOn:
- macOS
- Linux
- Windows
jobs:
- job: Add_Release_Tag
steps:
- template: sql-release.yml
trigger: none
pr: none

View File

@@ -74,7 +74,7 @@ steps:
# inline small SVGs
- script: |
set -e
node build/azure-pipelines/mixin
node build/azure-pipelines/sql-mixin
displayName: Mix in quality
# Run these separately to avoid OOM errors on pipeline machines

View File

@@ -7,7 +7,7 @@ resources:
jobs:
- job: LinuxWeb
pool:
vmImage: 'Ubuntu-18.04'
vmImage: 'Ubuntu-20.04'
container: linux-x64
variables:
VSCODE_ARCH: x64
@@ -17,7 +17,7 @@ jobs:
- job: Docker
pool:
vmImage: 'Ubuntu-18.04'
vmImage: 'Ubuntu-20.04'
container: linux-x64
dependsOn:
- LinuxWeb

View File

@@ -4,32 +4,55 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
const path = require("path");
const es = require("event-stream");
const Vinyl = require("vinyl");
const vfs = require("vinyl-fs");
const util = require("../lib/util");
const filter = require("gulp-filter");
const gzip = require("gulp-gzip");
const identity_1 = require("@azure/identity");
const azure = require('gulp-azure-storage');
const root = path.dirname(path.dirname(__dirname));
const commit = util.getVersion(root);
function main() {
return vfs.src('**', { cwd: '../vscode-web', base: '../vscode-web', dot: true })
.pipe(filter(f => !f.isDirectory()))
.pipe(gzip({ append: false }))
.pipe(es.through(function (data) {
console.log('Uploading CDN file:', data.relative); // debug
this.emit('data', data);
}))
.pipe(azure.upload({
const commit = process.env['VSCODE_DISTRO_COMMIT'] || process.env['BUILD_SOURCEVERSION'];
const credential = new identity_1.ClientSecretCredential(process.env['AZURE_TENANT_ID'], process.env['AZURE_CLIENT_ID'], process.env['AZURE_CLIENT_SECRET']);
async function main() {
const files = [];
const options = {
account: process.env.AZURE_STORAGE_ACCOUNT,
key: process.env.AZURE_STORAGE_ACCESS_KEY,
credential,
container: process.env.VSCODE_QUALITY,
prefix: commit + '/',
contentSettings: {
contentEncoding: 'gzip',
cacheControl: 'max-age=31536000, public'
}
}));
};
await new Promise((c, e) => {
vfs.src('**', { cwd: '../vscode-web', base: '../vscode-web', dot: true })
.pipe(filter(f => !f.isDirectory()))
.pipe(gzip({ append: false }))
.pipe(es.through(function (data) {
console.log('Uploading:', data.relative); // debug
files.push(data.relative);
this.emit('data', data);
}))
.pipe(azure.upload(options))
.on('end', () => c())
.on('error', (err) => e(err));
});
await new Promise((c, e) => {
const listing = new Vinyl({
path: 'files.txt',
contents: Buffer.from(files.join('\n')),
stat: { mode: 0o666 }
});
console.log(`Uploading: files.txt (${files.length} files)`); // debug
es.readArray([listing])
.pipe(gzip({ append: false }))
.pipe(azure.upload(options))
.on('end', () => c())
.on('error', (err) => e(err));
});
}
main();
main().catch(err => {
console.error(err);
process.exit(1);
});

View File

@@ -5,36 +5,61 @@
'use strict';
import * as path from 'path';
import * as es from 'event-stream';
import * as Vinyl from 'vinyl';
import * as vfs from 'vinyl-fs';
import * as util from '../lib/util';
import * as filter from 'gulp-filter';
import * as gzip from 'gulp-gzip';
import { ClientSecretCredential } from '@azure/identity';
const azure = require('gulp-azure-storage');
const root = path.dirname(path.dirname(__dirname));
const commit = util.getVersion(root);
const commit = process.env['VSCODE_DISTRO_COMMIT'] || process.env['BUILD_SOURCEVERSION'];
const credential = new ClientSecretCredential(process.env['AZURE_TENANT_ID']!, process.env['AZURE_CLIENT_ID']!, process.env['AZURE_CLIENT_SECRET']!);
function main() {
return vfs.src('**', { cwd: '../vscode-web', base: '../vscode-web', dot: true })
.pipe(filter(f => !f.isDirectory()))
.pipe(gzip({ append: false }))
.pipe(es.through(function (data: Vinyl) {
console.log('Uploading CDN file:', data.relative); // debug
this.emit('data', data);
}))
.pipe(azure.upload({
account: process.env.AZURE_STORAGE_ACCOUNT,
key: process.env.AZURE_STORAGE_ACCESS_KEY,
container: process.env.VSCODE_QUALITY,
prefix: commit + '/',
contentSettings: {
contentEncoding: 'gzip',
cacheControl: 'max-age=31536000, public'
}
}));
async function main(): Promise<void> {
const files: string[] = [];
const options = {
account: process.env.AZURE_STORAGE_ACCOUNT,
credential,
container: process.env.VSCODE_QUALITY,
prefix: commit + '/',
contentSettings: {
contentEncoding: 'gzip',
cacheControl: 'max-age=31536000, public'
}
};
await new Promise<void>((c, e) => {
vfs.src('**', { cwd: '../vscode-web', base: '../vscode-web', dot: true })
.pipe(filter(f => !f.isDirectory()))
.pipe(gzip({ append: false }))
.pipe(es.through(function (data: Vinyl) {
console.log('Uploading:', data.relative); // debug
files.push(data.relative);
this.emit('data', data);
}))
.pipe(azure.upload(options))
.on('end', () => c())
.on('error', (err: any) => e(err));
});
await new Promise<void>((c, e) => {
const listing = new Vinyl({
path: 'files.txt',
contents: Buffer.from(files.join('\n')),
stat: { mode: 0o666 } as any
});
console.log(`Uploading: files.txt (${files.length} files)`); // debug
es.readArray([listing])
.pipe(gzip({ append: false }))
.pipe(azure.upload(options))
.on('end', () => c())
.on('error', (err: any) => e(err));
});
}
main();
main().catch(err => {
console.error(err);
process.exit(1);
});

View File

@@ -0,0 +1,111 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSettingsSearchBuildId = exports.shouldSetupSettingsSearch = void 0;
const path = require("path");
const os = require("os");
const cp = require("child_process");
const vfs = require("vinyl-fs");
const util = require("../lib/util");
const identity_1 = require("@azure/identity");
const azure = require('gulp-azure-storage');
const packageJson = require("../../package.json");
const commit = process.env['VSCODE_DISTRO_COMMIT'] || process.env['BUILD_SOURCEVERSION'];
function generateVSCodeConfigurationTask() {
return new Promise((resolve, reject) => {
const buildDir = process.env['AGENT_BUILDDIRECTORY'];
if (!buildDir) {
return reject(new Error('$AGENT_BUILDDIRECTORY not set'));
}
if (!shouldSetupSettingsSearch()) {
console.log(`Only runs on main and release branches, not ${process.env.BUILD_SOURCEBRANCH}`);
return resolve(undefined);
}
if (process.env.VSCODE_QUALITY !== 'insider' && process.env.VSCODE_QUALITY !== 'stable') {
console.log(`Only runs on insider and stable qualities, not ${process.env.VSCODE_QUALITY}`);
return resolve(undefined);
}
const result = path.join(os.tmpdir(), 'configuration.json');
const userDataDir = path.join(os.tmpdir(), 'tmpuserdata');
const extensionsDir = path.join(os.tmpdir(), 'tmpextdir');
const arch = process.env['VSCODE_ARCH'];
const appRoot = path.join(buildDir, `VSCode-darwin-${arch}`);
const appName = process.env.VSCODE_QUALITY === 'insider' ? 'Visual\\ Studio\\ Code\\ -\\ Insiders.app' : 'Visual\\ Studio\\ Code.app';
const appPath = path.join(appRoot, appName, 'Contents', 'Resources', 'app', 'bin', 'code');
const codeProc = cp.exec(`${appPath} --export-default-configuration='${result}' --wait --user-data-dir='${userDataDir}' --extensions-dir='${extensionsDir}'`, (err, stdout, stderr) => {
clearTimeout(timer);
if (err) {
console.log(`err: ${err} ${err.message} ${err.toString()}`);
reject(err);
}
if (stdout) {
console.log(`stdout: ${stdout}`);
}
if (stderr) {
console.log(`stderr: ${stderr}`);
}
resolve(result);
});
const timer = setTimeout(() => {
codeProc.kill();
reject(new Error('export-default-configuration process timed out'));
}, 12 * 1000);
codeProc.on('error', err => {
clearTimeout(timer);
reject(err);
});
});
}
function shouldSetupSettingsSearch() {
const branch = process.env.BUILD_SOURCEBRANCH;
return !!(branch && (/\/main$/.test(branch) || branch.indexOf('/release/') >= 0));
}
exports.shouldSetupSettingsSearch = shouldSetupSettingsSearch;
function getSettingsSearchBuildId(packageJson) {
try {
const branch = process.env.BUILD_SOURCEBRANCH;
const branchId = branch.indexOf('/release/') >= 0 ? 0 :
/\/main$/.test(branch) ? 1 :
2; // Some unexpected branch
const out = cp.execSync(`git rev-list HEAD --count`);
const count = parseInt(out.toString());
// <version number><commit count><branchId (avoid unlikely conflicts)>
// 1.25.1, 1,234,567 commits, main = 1250112345671
return util.versionStringToNumber(packageJson.version) * 1e8 + count * 10 + branchId;
}
catch (e) {
throw new Error('Could not determine build number: ' + e.toString());
}
}
exports.getSettingsSearchBuildId = getSettingsSearchBuildId;
async function main() {
const configPath = await generateVSCodeConfigurationTask();
if (!configPath) {
return;
}
const settingsSearchBuildId = getSettingsSearchBuildId(packageJson);
if (!settingsSearchBuildId) {
throw new Error('Failed to compute build number');
}
const credential = new identity_1.ClientSecretCredential(process.env['AZURE_TENANT_ID'], process.env['AZURE_CLIENT_ID'], process.env['AZURE_CLIENT_SECRET']);
return new Promise((c, e) => {
vfs.src(configPath)
.pipe(azure.upload({
account: process.env.AZURE_STORAGE_ACCOUNT,
credential,
container: 'configuration',
prefix: `${settingsSearchBuildId}/${commit}/`
}))
.on('end', () => c())
.on('error', (err) => e(err));
});
}
if (require.main === module) {
main().catch(err => {
console.error(err);
process.exit(1);
});
}

View File

@@ -0,0 +1,131 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import * as path from 'path';
import * as os from 'os';
import * as cp from 'child_process';
import * as vfs from 'vinyl-fs';
import * as util from '../lib/util';
import { ClientSecretCredential } from '@azure/identity';
const azure = require('gulp-azure-storage');
import * as packageJson from '../../package.json';
const commit = process.env['VSCODE_DISTRO_COMMIT'] || process.env['BUILD_SOURCEVERSION'];
function generateVSCodeConfigurationTask(): Promise<string | undefined> {
return new Promise((resolve, reject) => {
const buildDir = process.env['AGENT_BUILDDIRECTORY'];
if (!buildDir) {
return reject(new Error('$AGENT_BUILDDIRECTORY not set'));
}
if (!shouldSetupSettingsSearch()) {
console.log(`Only runs on main and release branches, not ${process.env.BUILD_SOURCEBRANCH}`);
return resolve(undefined);
}
if (process.env.VSCODE_QUALITY !== 'insider' && process.env.VSCODE_QUALITY !== 'stable') {
console.log(`Only runs on insider and stable qualities, not ${process.env.VSCODE_QUALITY}`);
return resolve(undefined);
}
const result = path.join(os.tmpdir(), 'configuration.json');
const userDataDir = path.join(os.tmpdir(), 'tmpuserdata');
const extensionsDir = path.join(os.tmpdir(), 'tmpextdir');
const arch = process.env['VSCODE_ARCH'];
const appRoot = path.join(buildDir, `VSCode-darwin-${arch}`);
const appName = process.env.VSCODE_QUALITY === 'insider' ? 'Visual\\ Studio\\ Code\\ -\\ Insiders.app' : 'Visual\\ Studio\\ Code.app';
const appPath = path.join(appRoot, appName, 'Contents', 'Resources', 'app', 'bin', 'code');
const codeProc = cp.exec(
`${appPath} --export-default-configuration='${result}' --wait --user-data-dir='${userDataDir}' --extensions-dir='${extensionsDir}'`,
(err, stdout, stderr) => {
clearTimeout(timer);
if (err) {
console.log(`err: ${err} ${err.message} ${err.toString()}`);
reject(err);
}
if (stdout) {
console.log(`stdout: ${stdout}`);
}
if (stderr) {
console.log(`stderr: ${stderr}`);
}
resolve(result);
}
);
const timer = setTimeout(() => {
codeProc.kill();
reject(new Error('export-default-configuration process timed out'));
}, 12 * 1000);
codeProc.on('error', err => {
clearTimeout(timer);
reject(err);
});
});
}
export function shouldSetupSettingsSearch(): boolean {
const branch = process.env.BUILD_SOURCEBRANCH;
return !!(branch && (/\/main$/.test(branch) || branch.indexOf('/release/') >= 0));
}
export function getSettingsSearchBuildId(packageJson: { version: string }) {
try {
const branch = process.env.BUILD_SOURCEBRANCH!;
const branchId = branch.indexOf('/release/') >= 0 ? 0 :
/\/main$/.test(branch) ? 1 :
2; // Some unexpected branch
const out = cp.execSync(`git rev-list HEAD --count`);
const count = parseInt(out.toString());
// <version number><commit count><branchId (avoid unlikely conflicts)>
// 1.25.1, 1,234,567 commits, main = 1250112345671
return util.versionStringToNumber(packageJson.version) * 1e8 + count * 10 + branchId;
} catch (e) {
throw new Error('Could not determine build number: ' + e.toString());
}
}
async function main(): Promise<void> {
const configPath = await generateVSCodeConfigurationTask();
if (!configPath) {
return;
}
const settingsSearchBuildId = getSettingsSearchBuildId(packageJson);
if (!settingsSearchBuildId) {
throw new Error('Failed to compute build number');
}
const credential = new ClientSecretCredential(process.env['AZURE_TENANT_ID']!, process.env['AZURE_CLIENT_ID']!, process.env['AZURE_CLIENT_SECRET']!);
return new Promise((c, e) => {
vfs.src(configPath)
.pipe(azure.upload({
account: process.env.AZURE_STORAGE_ACCOUNT,
credential,
container: 'configuration',
prefix: `${settingsSearchBuildId}/${commit}/`
}))
.on('end', () => c())
.on('error', (err: any) => e(err));
});
}
if (require.main === module) {
main().catch(err => {
console.error(err);
process.exit(1);
});
}

View File

@@ -4,85 +4,92 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
const path = require("path");
const es = require("event-stream");
const vfs = require("vinyl-fs");
const util = require("../lib/util");
const merge = require("gulp-merge-json");
const gzip = require("gulp-gzip");
const identity_1 = require("@azure/identity");
const azure = require('gulp-azure-storage');
const root = path.dirname(path.dirname(__dirname));
const commit = util.getVersion(root);
const commit = process.env['VSCODE_DISTRO_COMMIT'] || process.env['BUILD_SOURCEVERSION'];
const credential = new identity_1.ClientSecretCredential(process.env['AZURE_TENANT_ID'], process.env['AZURE_CLIENT_ID'], process.env['AZURE_CLIENT_SECRET']);
function main() {
return es.merge(vfs.src('out-vscode-web-min/nls.metadata.json', { base: 'out-vscode-web-min' }), vfs.src('.build/extensions/**/nls.metadata.json', { base: '.build/extensions' }), vfs.src('.build/extensions/**/nls.metadata.header.json', { base: '.build/extensions' }), vfs.src('.build/extensions/**/package.nls.json', { base: '.build/extensions' }))
.pipe(merge({
fileName: 'combined.nls.metadata.json',
jsonSpace: '',
edit: (parsedJson, file) => {
let key;
if (file.base === 'out-vscode-web-min') {
return { vscode: parsedJson };
}
// Handle extensions and follow the same structure as the Core nls file.
switch (file.basename) {
case 'package.nls.json':
// put package.nls.json content in Core NlsMetadata format
// language packs use the key "package" to specify that
// translations are for the package.json file
parsedJson = {
messages: {
package: Object.values(parsedJson)
},
keys: {
package: Object.keys(parsedJson)
},
bundles: {
main: ['package']
return new Promise((c, e) => {
es.merge(vfs.src('out-vscode-web-min/nls.metadata.json', { base: 'out-vscode-web-min' }), vfs.src('.build/extensions/**/nls.metadata.json', { base: '.build/extensions' }), vfs.src('.build/extensions/**/nls.metadata.header.json', { base: '.build/extensions' }), vfs.src('.build/extensions/**/package.nls.json', { base: '.build/extensions' }))
.pipe(merge({
fileName: 'combined.nls.metadata.json',
jsonSpace: '',
edit: (parsedJson, file) => {
let key;
if (file.base === 'out-vscode-web-min') {
return { vscode: parsedJson };
}
// Handle extensions and follow the same structure as the Core nls file.
switch (file.basename) {
case 'package.nls.json':
// put package.nls.json content in Core NlsMetadata format
// language packs use the key "package" to specify that
// translations are for the package.json file
parsedJson = {
messages: {
package: Object.values(parsedJson)
},
keys: {
package: Object.keys(parsedJson)
},
bundles: {
main: ['package']
}
};
break;
case 'nls.metadata.header.json':
parsedJson = { header: parsedJson };
break;
case 'nls.metadata.json': {
// put nls.metadata.json content in Core NlsMetadata format
const modules = Object.keys(parsedJson);
const json = {
keys: {},
messages: {},
bundles: {
main: []
}
};
for (const module of modules) {
json.messages[module] = parsedJson[module].messages;
json.keys[module] = parsedJson[module].keys;
json.bundles.main.push(module);
}
};
break;
case 'nls.metadata.header.json':
parsedJson = { header: parsedJson };
break;
case 'nls.metadata.json':
// put nls.metadata.json content in Core NlsMetadata format
const modules = Object.keys(parsedJson);
const json = {
keys: {},
messages: {},
bundles: {
main: []
}
};
for (const module of modules) {
json.messages[module] = parsedJson[module].messages;
json.keys[module] = parsedJson[module].keys;
json.bundles.main.push(module);
parsedJson = json;
break;
}
parsedJson = json;
break;
}
key = 'vscode.' + file.relative.split('/')[0];
return { [key]: parsedJson };
},
}))
.pipe(gzip({ append: false }))
.pipe(vfs.dest('./nlsMetadata'))
.pipe(es.through(function (data) {
console.log(`Uploading ${data.path}`);
// trigger artifact upload
console.log(`##vso[artifact.upload containerfolder=nlsmetadata;artifactname=combined.nls.metadata.json]${data.path}`);
this.emit('data', data);
}))
.pipe(azure.upload({
account: process.env.AZURE_STORAGE_ACCOUNT,
credential,
container: 'nlsmetadata',
prefix: commit + '/',
contentSettings: {
contentEncoding: 'gzip',
cacheControl: 'max-age=31536000, public'
}
key = 'vscode.' + file.relative.split('/')[0];
return { [key]: parsedJson };
},
}))
.pipe(gzip({ append: false }))
.pipe(vfs.dest('./nlsMetadata'))
.pipe(es.through(function (data) {
console.log(`Uploading ${data.path}`);
// trigger artifact upload
console.log(`##vso[artifact.upload containerfolder=nlsmetadata;artifactname=combined.nls.metadata.json]${data.path}`);
this.emit('data', data);
}))
.pipe(azure.upload({
account: process.env.AZURE_STORAGE_ACCOUNT,
key: process.env.AZURE_STORAGE_ACCESS_KEY,
container: 'nlsmetadata',
prefix: commit + '/',
contentSettings: {
contentEncoding: 'gzip',
cacheControl: 'max-age=31536000, public'
}
}));
}))
.on('end', () => c())
.on('error', (err) => e(err));
});
}
main();
main().catch(err => {
console.error(err);
process.exit(1);
});

View File

@@ -5,103 +5,112 @@
'use strict';
import * as path from 'path';
import * as es from 'event-stream';
import * as Vinyl from 'vinyl';
import * as vfs from 'vinyl-fs';
import * as util from '../lib/util';
import * as merge from 'gulp-merge-json';
import * as gzip from 'gulp-gzip';
import { ClientSecretCredential } from '@azure/identity';
const azure = require('gulp-azure-storage');
const root = path.dirname(path.dirname(__dirname));
const commit = util.getVersion(root);
const commit = process.env['VSCODE_DISTRO_COMMIT'] || process.env['BUILD_SOURCEVERSION'];
const credential = new ClientSecretCredential(process.env['AZURE_TENANT_ID']!, process.env['AZURE_CLIENT_ID']!, process.env['AZURE_CLIENT_SECRET']!);
interface NlsMetadata {
keys: { [module: string]: string },
messages: { [module: string]: string },
bundles: { [bundle: string]: string[] },
keys: { [module: string]: string };
messages: { [module: string]: string };
bundles: { [bundle: string]: string[] };
}
function main() {
return es.merge(
vfs.src('out-vscode-web-min/nls.metadata.json', { base: 'out-vscode-web-min' }),
vfs.src('.build/extensions/**/nls.metadata.json', { base: '.build/extensions' }),
vfs.src('.build/extensions/**/nls.metadata.header.json', { base: '.build/extensions' }),
vfs.src('.build/extensions/**/package.nls.json', { base: '.build/extensions' }))
.pipe(merge({
fileName: 'combined.nls.metadata.json',
jsonSpace: '',
edit: (parsedJson, file) => {
let key;
if (file.base === 'out-vscode-web-min') {
return { vscode: parsedJson };
}
function main(): Promise<void> {
return new Promise((c, e) => {
// Handle extensions and follow the same structure as the Core nls file.
switch (file.basename) {
case 'package.nls.json':
// put package.nls.json content in Core NlsMetadata format
// language packs use the key "package" to specify that
// translations are for the package.json file
parsedJson = {
messages: {
package: Object.values(parsedJson)
},
keys: {
package: Object.keys(parsedJson)
},
bundles: {
main: ['package']
es.merge(
vfs.src('out-vscode-web-min/nls.metadata.json', { base: 'out-vscode-web-min' }),
vfs.src('.build/extensions/**/nls.metadata.json', { base: '.build/extensions' }),
vfs.src('.build/extensions/**/nls.metadata.header.json', { base: '.build/extensions' }),
vfs.src('.build/extensions/**/package.nls.json', { base: '.build/extensions' }))
.pipe(merge({
fileName: 'combined.nls.metadata.json',
jsonSpace: '',
edit: (parsedJson, file) => {
let key;
if (file.base === 'out-vscode-web-min') {
return { vscode: parsedJson };
}
// Handle extensions and follow the same structure as the Core nls file.
switch (file.basename) {
case 'package.nls.json':
// put package.nls.json content in Core NlsMetadata format
// language packs use the key "package" to specify that
// translations are for the package.json file
parsedJson = {
messages: {
package: Object.values(parsedJson)
},
keys: {
package: Object.keys(parsedJson)
},
bundles: {
main: ['package']
}
};
break;
case 'nls.metadata.header.json':
parsedJson = { header: parsedJson };
break;
case 'nls.metadata.json': {
// put nls.metadata.json content in Core NlsMetadata format
const modules = Object.keys(parsedJson);
const json: NlsMetadata = {
keys: {},
messages: {},
bundles: {
main: []
}
};
for (const module of modules) {
json.messages[module] = parsedJson[module].messages;
json.keys[module] = parsedJson[module].keys;
json.bundles.main.push(module);
}
};
break;
case 'nls.metadata.header.json':
parsedJson = { header: parsedJson };
break;
case 'nls.metadata.json':
// put nls.metadata.json content in Core NlsMetadata format
const modules = Object.keys(parsedJson);
const json: NlsMetadata = {
keys: {},
messages: {},
bundles: {
main: []
}
};
for (const module of modules) {
json.messages[module] = parsedJson[module].messages;
json.keys[module] = parsedJson[module].keys;
json.bundles.main.push(module);
parsedJson = json;
break;
}
parsedJson = json;
break;
}
key = 'vscode.' + file.relative.split('/')[0];
return { [key]: parsedJson };
},
}))
.pipe(gzip({ append: false }))
.pipe(vfs.dest('./nlsMetadata'))
.pipe(es.through(function (data: Vinyl) {
console.log(`Uploading ${data.path}`);
// trigger artifact upload
console.log(`##vso[artifact.upload containerfolder=nlsmetadata;artifactname=combined.nls.metadata.json]${data.path}`);
this.emit('data', data);
}))
.pipe(azure.upload({
account: process.env.AZURE_STORAGE_ACCOUNT,
credential,
container: 'nlsmetadata',
prefix: commit + '/',
contentSettings: {
contentEncoding: 'gzip',
cacheControl: 'max-age=31536000, public'
}
key = 'vscode.' + file.relative.split('/')[0];
return { [key]: parsedJson };
},
}))
.pipe(gzip({ append: false }))
.pipe(vfs.dest('./nlsMetadata'))
.pipe(es.through(function (data: Vinyl) {
console.log(`Uploading ${data.path}`);
// trigger artifact upload
console.log(`##vso[artifact.upload containerfolder=nlsmetadata;artifactname=combined.nls.metadata.json]${data.path}`);
this.emit('data', data);
}))
.pipe(azure.upload({
account: process.env.AZURE_STORAGE_ACCOUNT,
key: process.env.AZURE_STORAGE_ACCESS_KEY,
container: 'nlsmetadata',
prefix: commit + '/',
contentSettings: {
contentEncoding: 'gzip',
cacheControl: 'max-age=31536000, public'
}
}));
}))
.on('end', () => c())
.on('error', (err: any) => e(err));
});
}
main();
main().catch(err => {
console.error(err);
process.exit(1);
});

View File

@@ -1,18 +1,14 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.x"
versionSpec: "16.x"
- task: AzureKeyVault@1
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: 'github-distro-mixin-password,web-storage-account,web-storage-key,ticino-storage-key'
SecretsFilter: "github-distro-mixin-password"
- task: DownloadPipelineArtifact@2
inputs:
@@ -37,6 +33,14 @@ steps:
git config user.name "VSCode"
displayName: Prepare tooling
- script: |
set -e
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
echo "##vso[task.setvariable variable=VSCODE_DISTRO_COMMIT;]$(git rev-parse FETCH_HEAD)"
git checkout FETCH_HEAD
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
displayName: Checkout override commit
- script: |
set -e
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
@@ -49,7 +53,7 @@ steps:
- task: Cache@2
inputs:
key: 'nodeModules | $(Agent.OS) | .build/yarnlockhash'
key: "nodeModules | $(Agent.OS) | .build/yarnlockhash"
path: .build/node_modules_cache
cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache
@@ -64,13 +68,14 @@ steps:
set -e
npx https://aka.ms/enablesecurefeed standAlone
timeoutInMinutes: 5
retryCountOnTaskFailure: 3
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
displayName: Switch to Terrapin packages
- script: |
set -e
for i in {1..3}; do # try 3 times, for Terrapin
yarn --frozen-lockfile && break
yarn --frozen-lockfile --check-files && break
if [ $i -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
@@ -103,25 +108,44 @@ steps:
yarn gulp vscode-web-min-ci
displayName: Build
- task: AzureCLI@2
inputs:
azureSubscription: "vscode-builds-subscription"
scriptType: pscore
scriptLocation: inlineScript
addSpnToEnvironment: true
inlineScript: |
Write-Host "##vso[task.setvariable variable=AZURE_TENANT_ID]$env:tenantId"
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_ID]$env:servicePrincipalId"
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_SECRET;issecret=true]$env:servicePrincipalKey"
- script: |
set -e
AZURE_STORAGE_ACCOUNT="$(web-storage-account)" \
AZURE_STORAGE_ACCESS_KEY="$(web-storage-key)" \
node build/azure-pipelines/upload-cdn.js
AZURE_STORAGE_ACCOUNT="vscodeweb" \
AZURE_TENANT_ID="$(AZURE_TENANT_ID)" \
AZURE_CLIENT_ID="$(AZURE_CLIENT_ID)" \
AZURE_CLIENT_SECRET="$(AZURE_CLIENT_SECRET)" \
node build/azure-pipelines/upload-cdn
displayName: Upload to CDN
# upload only the workbench.web.api.js source maps because
# upload only the workbench.web.main.js source maps because
# we just compiled these bits in the previous step and the
# general task to upload source maps has already been run
- script: |
set -e
AZURE_STORAGE_ACCESS_KEY="$(ticino-storage-key)" \
node build/azure-pipelines/upload-sourcemaps out-vscode-web-min out-vscode-web-min/vs/workbench/workbench.web.api.js.map
AZURE_STORAGE_ACCOUNT="ticino" \
AZURE_TENANT_ID="$(AZURE_TENANT_ID)" \
AZURE_CLIENT_ID="$(AZURE_CLIENT_ID)" \
AZURE_CLIENT_SECRET="$(AZURE_CLIENT_SECRET)" \
node build/azure-pipelines/upload-sourcemaps out-vscode-web-min out-vscode-web-min/vs/workbench/workbench.web.main.js.map
displayName: Upload sourcemaps (Web)
- script: |
set -e
AZURE_STORAGE_ACCESS_KEY="$(ticino-storage-key)" \
AZURE_STORAGE_ACCOUNT="ticino" \
AZURE_TENANT_ID="$(AZURE_TENANT_ID)" \
AZURE_CLIENT_ID="$(AZURE_CLIENT_ID)" \
AZURE_CLIENT_SECRET="$(AZURE_CLIENT_SECRET)" \
node build/azure-pipelines/upload-nlsmetadata
displayName: Upload NLS Metadata
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))

View File

@@ -75,7 +75,7 @@ steps:
# inline small SVGs
- script: |
set -e
node build/azure-pipelines/mixin
node build/azure-pipelines/sql-mixin
displayName: Mix in quality
- script: |

View File

@@ -56,7 +56,7 @@ steps:
- powershell: |
.\scripts\test.bat --tfs "Unit Tests"
displayName: Run Unit Tests (Electron)
displayName: Run Core Unit Tests # {{SQL CARBON EDIT}} Rename to core for clarity
# - powershell: | {{SQL CARBON EDIT}} disable
# yarn test-browser --browser chromium --browser firefox --tfs "Browser Unit Tests"
@@ -64,7 +64,7 @@ steps:
# - powershell: | {{SQL CARBON EDIT}} disable
# .\scripts\test-integration.bat --tfs "Integration Tests"
# displayName: Run Integration Tests (Electron)
# displayName: Run Core Integration Tests # {{SQL CARBON EDIT}} Rename to core for clarity
- task: PublishPipelineArtifact@0
displayName: "Publish Crash Reports"

View File

@@ -0,0 +1,3 @@
echo "------------------------------------"
tasklist /V
echo "------------------------------------"

View File

@@ -1,15 +1,11 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.x"
versionSpec: "16.x"
- task: UsePythonVersion@0
inputs:
versionSpec: "2.x"
versionSpec: "3.x"
addToPath: true
- task: AzureKeyVault@1
@@ -17,7 +13,7 @@ steps:
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: "github-distro-mixin-password,vscode-storage-key,builds-docdb-key-readwrite,ESRP-PKI,esrp-aad-username,esrp-aad-password"
SecretsFilter: "github-distro-mixin-password,ESRP-PKI,esrp-aad-username,esrp-aad-password"
- task: DownloadPipelineArtifact@2
inputs:
@@ -25,11 +21,11 @@ steps:
path: $(Build.ArtifactStagingDirectory)
displayName: Download compilation output
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { tar --force-local -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz }
- task: ExtractFiles@1
displayName: Extract compilation output
inputs:
archiveFilePatterns: "$(Build.ArtifactStagingDirectory)/compilation.tar.gz"
cleanDestinationFolder: false
- powershell: |
. build/azure-pipelines/win32/exec.ps1
@@ -40,6 +36,16 @@ steps:
exec { git config user.name "VSCode" }
displayName: Prepare tooling
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $(VSCODE_DISTRO_REF) }
Write-Host "##vso[task.setvariable variable=VSCODE_DISTRO_COMMIT;]$(git rev-parse FETCH_HEAD)"
exec { git checkout FETCH_HEAD }
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
displayName: Checkout override commit
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
@@ -71,6 +77,7 @@ steps:
$ErrorActionPreference = "Stop"
exec { npx https://aka.ms/enablesecurefeed standAlone }
timeoutInMinutes: 5
retryCountOnTaskFailure: 3
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
displayName: Switch to Terrapin packages
@@ -80,7 +87,7 @@ steps:
$ErrorActionPreference = "Stop"
$env:npm_config_arch="$(VSCODE_ARCH)"
$env:CHILD_CONCURRENCY="1"
retry { exec { yarn --frozen-lockfile } }
retry { exec { yarn --frozen-lockfile --check-files } }
env:
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
@@ -127,6 +134,12 @@ steps:
displayName: Prepare Package
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { node build/azure-pipelines/mixin --server }
displayName: Mix in quality
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
@@ -151,15 +164,23 @@ steps:
exec { yarn electron $(VSCODE_ARCH) }
exec { .\scripts\test.bat --build --tfs "Unit Tests" }
displayName: Run unit tests (Electron)
timeoutInMinutes: 7
timeoutInMinutes: 15
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { yarn test-browser --build --browser chromium --browser firefox --tfs "Browser Unit Tests" }
displayName: Run unit tests (Browser)
timeoutInMinutes: 7
exec { yarn test-node --build }
displayName: Run unit tests (node.js)
timeoutInMinutes: 15
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { yarn test-browser-no-install --sequential --build --browser chromium --browser firefox --tfs "Browser Unit Tests" }
displayName: Run unit tests (Browser, Chromium & Firefox)
timeoutInMinutes: 20
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
- powershell: |
@@ -173,15 +194,15 @@ steps:
$AppNameShort = $AppProductJson.nameShort
exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"; .\scripts\test-integration.bat --build --tfs "Integration Tests" }
displayName: Run integration tests (Electron)
timeoutInMinutes: 10
timeoutInMinutes: 20
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-web-win32-$(VSCODE_ARCH)"; .\resources\server\test\test-web-integration.bat --browser firefox }
displayName: Run integration tests (Browser)
timeoutInMinutes: 10
exec { $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-web-win32-$(VSCODE_ARCH)"; .\scripts\test-web-integration.bat --browser firefox }
displayName: Run integration tests (Browser, Firefox)
timeoutInMinutes: 20
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
- powershell: |
@@ -190,25 +211,34 @@ steps:
$AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
$AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
$AppNameShort = $AppProductJson.nameShort
exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"; .\resources\server\test\test-remote-integration.bat }
displayName: Run remote integration tests (Electron)
timeoutInMinutes: 7
exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"; .\scripts\test-remote-integration.bat }
displayName: Run integration tests (Remote)
timeoutInMinutes: 20
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
exec {.\build\azure-pipelines\win32\listprocesses.bat }
displayName: Diagnostics before smoke test run
continueOnError: true
condition: and(succeededOrFailed(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { yarn --cwd test/smoke compile }
displayName: Compile smoke tests
$env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-web-win32-$(VSCODE_ARCH)"
exec { yarn smoketest-no-compile --web --tracing --headless }
displayName: Run smoke tests (Browser, Chromium)
timeoutInMinutes: 10
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
$AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
exec { yarn smoketest-no-compile --build "$AppRoot" --screenshots $(Build.SourcesDirectory)\.build\logs\smoke-tests }
exec { yarn smoketest-no-compile --tracing --build "$AppRoot" }
displayName: Run smoke tests (Electron)
timeoutInMinutes: 5
timeoutInMinutes: 20
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
- powershell: |
@@ -216,19 +246,17 @@ steps:
$ErrorActionPreference = "Stop"
$AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
$env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"
exec { yarn smoketest-no-compile --build "$AppRoot" --remote }
exec { yarn smoketest-no-compile --tracing --remote --build "$AppRoot" }
displayName: Run smoke tests (Remote)
timeoutInMinutes: 5
timeoutInMinutes: 20
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
$env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-web-win32-$(VSCODE_ARCH)"
exec { yarn smoketest-no-compile --web --browser firefox --headless }
displayName: Run smoke tests (Browser)
timeoutInMinutes: 5
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
exec {.\build\azure-pipelines\win32\listprocesses.bat }
displayName: Diagnostics after smoke test run
continueOnError: true
condition: and(succeededOrFailed(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- task: PublishPipelineArtifact@0
inputs:
@@ -238,13 +266,23 @@ steps:
continueOnError: true
condition: failed()
# In order to properly symbolify above crash reports
# (if any), we need the compiled native modules too
- task: PublishPipelineArtifact@0
inputs:
artifactName: node-modules-windows-$(VSCODE_ARCH)
targetPath: node_modules
displayName: "Publish Node Modules"
continueOnError: true
condition: failed()
- task: PublishPipelineArtifact@0
inputs:
artifactName: logs-windows-$(VSCODE_ARCH)-$(System.JobAttempt)
targetPath: .build\logs
displayName: "Publish Log Files"
continueOnError: true
condition: and(succeededOrFailed(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
condition: and(failed(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
- task: PublishTestResults@2
displayName: Publish Tests Results
@@ -262,14 +300,6 @@ steps:
displayName: Download ESRPClient
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { yarn --cwd build }
exec { yarn --cwd build compile }
displayName: Compile build tools
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
@@ -310,9 +340,6 @@ steps:
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
$env:AZURE_STORAGE_ACCESS_KEY_2 = "$(vscode-storage-key)"
$env:AZURE_DOCUMENTDB_MASTERKEY = "$(builds-docdb-key-readwrite)"
$env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
.\build\azure-pipelines\win32\prepare-publish.ps1
displayName: Publish
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
@@ -341,3 +368,27 @@ steps:
artifact: vscode_web_win32_$(VSCODE_ARCH)_archive
displayName: Publish web server archive
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
displayName: Generate SBOM (client)
inputs:
BuildDropPath: $(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)
PackageName: Visual Studio Code
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- publish: $(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)/_manifest
displayName: Publish SBOM (client)
artifact: vscode_client_win32_$(VSCODE_ARCH)_sbom
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
displayName: Generate SBOM (server)
inputs:
BuildDropPath: $(agent.builddirectory)/vscode-server-win32-$(VSCODE_ARCH)
PackageName: Visual Studio Code Server
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
- publish: $(agent.builddirectory)/vscode-server-win32-$(VSCODE_ARCH)/_manifest
displayName: Publish SBOM (server)
artifact: vscode_server_win32_$(VSCODE_ARCH)_sbom
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))

View File

@@ -95,7 +95,7 @@ steps:
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { node build/azure-pipelines/mixin }
exec { node build/azure-pipelines/sql-mixin }
displayName: Mix in quality
- powershell: |
@@ -137,29 +137,22 @@ steps:
# $ErrorActionPreference = "Stop"
# exec { yarn electron x64 }
# exec { .\scripts\test.bat --build --coverage --reporter mocha-junit-reporter --tfs "Unit Tests" }
# displayName: Run unit tests (Electron)
# displayName: Run core unit tests
# condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
- powershell: |
# Figure out the full absolute path of the product we just built
# including the remote server and configure the integration tests
# to run with these builds instead of running out of sources.
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
$AppRoot = "$(agent.builddirectory)\azuredatastudio-win32-x64"
$AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
$AppNameShort = $AppProductJson.nameShort
# exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\azuredatastudio-reh-win32-x64"; .\scripts\test-integration.bat --build --tfs "Integration Tests" }
displayName: Run integration tests (Electron)
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
# {{SQL CARBON TODO}} -- reenable
# - powershell: |
# # Figure out the full absolute path of the product we just built
# # including the remote server and configure the integration tests
# # to run with these builds instead of running out of sources.
# . build/azure-pipelines/win32/exec.ps1
# $ErrorActionPreference = "Stop"
# exec { .\scripts\test-unstable.bat --build --tfs }
# continueOnError: true
# condition: and(succeeded(), eq(variables['RUN_UNSTABLE_TESTS'], 'true'))
# displayName: Run unstable tests
# $AppRoot = "$(agent.builddirectory)\azuredatastudio-win32-x64"
# $AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
# $AppNameShort = $AppProductJson.nameShort
# # exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\azuredatastudio-reh-win32-x64"; .\scripts\test-integration.bat --build --tfs "Integration Tests" }
# displayName: Run core integration tests
# condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
displayName: 'Sign out code'

View File

@@ -67,30 +67,6 @@ steps:
STANDALONE_SQL_PWD_2019: $(ads-integration-test-standalone-server-password-2019)
STANDALONE_SQL_2019: $(ads-integration-test-standalone-server-2019)
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
$AppRoot = "$(Agent.TempDirectory)\azuredatastudio-win32-x64"
$AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
$AppNameShort = $AppProductJson.nameShort
exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; .\scripts\sql-test-integration-unstable.bat }
continueOnError: true
condition: and(succeeded(), and(eq(variables['RUN_UNSTABLE_TESTS'], 'true'), ne(variables['RUN_INTEGRATION_TESTS'], 'false')))
displayName: Run unstable integration tests
env:
BDC_BACKEND_USERNAME: $(ads-integration-test-bdc-server-username)
BDC_BACKEND_PWD: $(ads-integration-test-bdc-server-password)
BDC_BACKEND_HOSTNAME: $(ads-integration-test-bdc-server)
STANDALONE_SQL_USERNAME: $(ads-integration-test-standalone-server-username)
STANDALONE_SQL_PWD: $(ads-integration-test-standalone-server-password)
STANDALONE_SQL: $(ads-integration-test-standalone-server)
AZURE_SQL_USERNAME: $(ads-integration-test-azure-server-username)
AZURE_SQL_PWD: $(ads-integration-test-azure-server-password)
AZURE_SQL: $(ads-integration-test-azure-server)
STANDALONE_SQL_USERNAME_2019: $(ads-integration-test-standalone-server-username-2019)
STANDALONE_SQL_PWD_2019: $(ads-integration-test-standalone-server-password-2019)
STANDALONE_SQL_2019: $(ads-integration-test-standalone-server-2019)
- task: PublishTestResults@2
displayName: 'Publish Integration and Smoke Test Results'
inputs:

View File

@@ -8,8 +8,8 @@
"no-console": 0,
"no-cond-assign": 0,
"no-unused-vars": 1,
"no-extra-semi": "warn",
"semi": "warn"
"no-extra-semi": "off",
"semi": "off"
},
"extends": "eslint:recommended",
"parserOptions": {
@@ -17,4 +17,4 @@
"experimentalObjectRestSpread": true
}
}
}
}

View File

@@ -2,6 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
//@ts-check
const fs = require('fs');
const path = require('path');
@@ -11,14 +12,28 @@ const { ipcRenderer } = require('electron');
const builtInExtensionsPath = path.join(__dirname, '..', '..', 'product.json');
const controlFilePath = path.join(os.homedir(), '.vscode-oss-dev', 'extensions', 'control.json');
/**
* @param {string} filePath
*/
function readJson(filePath) {
return JSON.parse(fs.readFileSync(filePath, { encoding: 'utf8' }));
}
/**
* @param {string} filePath
* @param {any} obj
*/
function writeJson(filePath, obj) {
fs.writeFileSync(filePath, JSON.stringify(obj, null, 2));
}
/**
* @param {HTMLFormElement} form
* @param {string} id
* @param {string} title
* @param {string} value
* @param {boolean} checked
*/
function renderOption(form, id, title, value, checked) {
const input = document.createElement('input');
input.type = 'radio';
@@ -36,7 +51,14 @@ function renderOption(form, id, title, value, checked) {
return input;
}
/**
* @param {HTMLElement} el
* @param {any} state
*/
function render(el, state) {
/**
* @param {any} state
*/
function setState(state) {
try {
writeJson(controlFilePath, state.control);
@@ -114,7 +136,9 @@ function main() {
control = {};
}
render(el, { builtin, control });
if (el) {
render(el, { builtin, control });
}
}
window.onload = main;

View File

@@ -2,6 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// @ts-check
const { app, BrowserWindow, ipcMain, dialog } = require('electron');
const url = require('url');

View File

@@ -8,22 +8,53 @@ const vscode_universal_bundler_1 = require("vscode-universal-bundler");
const cross_spawn_promise_1 = require("@malept/cross-spawn-promise");
const fs = require("fs-extra");
const path = require("path");
const plist = require("plist");
const product = require("../../product.json");
const glob = require("glob"); // {{SQL CARBON EDIT}}
async function main() {
const buildDir = process.env['AGENT_BUILDDIRECTORY'];
const arch = process.env['VSCODE_ARCH'];
if (!buildDir) {
throw new Error('$AGENT_BUILDDIRECTORY not set');
}
// {{SQL CARBON EDIT}}
const x64AppNameBase = 'azuredatastudio-darwin-x64';
const arm64AppNameBase = 'azuredatastudio-darwin-arm64';
// {{SQL CARBON EDIT}} - END
const appName = product.nameLong + '.app';
const x64AppPath = path.join(buildDir, 'VSCode-darwin-x64', appName);
const arm64AppPath = path.join(buildDir, 'VSCode-darwin-arm64', appName);
const x64AppPath = path.join(buildDir, x64AppNameBase, appName); // {{SQL CARBON EDIT}} - CHANGE VSCode to azuredatastudio
const arm64AppPath = path.join(buildDir, arm64AppNameBase, appName); // {{SQL CARBON EDIT}} - CHANGE VSCode to azuredatastudio
const x64AsarPath = path.join(x64AppPath, 'Contents', 'Resources', 'app', 'node_modules.asar');
const arm64AsarPath = path.join(arm64AppPath, 'Contents', 'Resources', 'app', 'node_modules.asar');
const outAppPath = path.join(buildDir, `VSCode-darwin-${arch}`, appName);
const outAppPath = path.join(buildDir, `azuredatastudio-darwin-${arch}`, appName); // {{SQL CARBON EDIT}} - CHANGE VSCode to azuredatastudio
const productJsonPath = path.resolve(outAppPath, 'Contents', 'Resources', 'app', 'product.json');
const infoPlistPath = path.resolve(outAppPath, 'Contents', 'Info.plist');
// {{SQL CARBON EDIT}}
// Current STS arm64 builds doesn't work on osx-arm64, we need to use the x64 version of STS on osx-arm64 until the issue is fixed.
// Tracked by: https://github.com/microsoft/azuredatastudio/issues/20775
// makeUniversalApp function will complain if the x64 ADS and arm64 ADS have the same STS binaries, to workaround the issue, we need
// to delete STS from both of them and then copy it to the universal app.
const stsPath = '/Contents/Resources/app/extensions/mssql/sqltoolsservice';
const tempSTSDir = path.join(buildDir, 'sqltoolsservice');
const x64STSDir = path.join(x64AppPath, stsPath);
const arm64STSDir = path.join(arm64AppPath, stsPath);
const targetSTSDirs = [x64STSDir, arm64STSDir];
// backup the x64 STS to a temporary directory, later it will be copied to the universal app directory.
await fs.copy(x64STSDir, tempSTSDir);
// delete STS directories from both x64 ADS and arm64 ADS.
console.debug(`Removing SqlToolsService folders.`);
targetSTSDirs.forEach(async (dir) => {
await fs.remove(dir);
});
// makeUniversalApp requires the non-binary files in arm64 and x64 versions to be exactly the same,
// but sometimes the content of nls.metadata.json files could be different(only the order of the entries).
// To workaround the issue, we need to replace these files in arm64 ADS with the files from x64 ADS.
// Tracked by issue: https://github.com/microsoft/azuredatastudio/issues/20792
const sourceFiles = glob.sync(path.join(x64AppPath, '/Contents/Resources/app/**/nls.metadata.json'));
sourceFiles.forEach(source => {
const target = source.replace(x64AppNameBase, arm64AppNameBase);
console.debug(`Replacing file '${target}' with '${source}'`);
fs.copySync(source, target, { overwrite: true });
});
// {{SQL CARBON EDIT}} - END
await (0, vscode_universal_bundler_1.makeUniversalApp)({
x64AppPath,
arm64AppPath,
@@ -35,6 +66,7 @@ async function main() {
'CodeResources',
'fsevents.node',
'Info.plist',
'MainMenu.nib',
'.npmrc'
],
outAppPath,
@@ -45,18 +77,15 @@ async function main() {
darwinUniversalAssetId: 'darwin-universal'
});
await fs.writeJson(productJsonPath, productJson);
let infoPlistString = await fs.readFile(infoPlistPath, 'utf8');
let infoPlistJson = plist.parse(infoPlistString);
Object.assign(infoPlistJson, {
LSRequiresNativeExecution: true
});
await fs.writeFile(infoPlistPath, plist.build(infoPlistJson), 'utf8');
// Verify if native module architecture is correct
const findOutput = await (0, cross_spawn_promise_1.spawn)('find', [outAppPath, '-name', 'keytar.node']);
const lipoOutput = await (0, cross_spawn_promise_1.spawn)('lipo', ['-archs', findOutput.replace(/\n$/, "")]);
if (lipoOutput.replace(/\n$/, "") !== 'x86_64 arm64') {
const lipoOutput = await (0, cross_spawn_promise_1.spawn)('lipo', ['-archs', findOutput.replace(/\n$/, '')]);
if (lipoOutput.replace(/\n$/, '') !== 'x86_64 arm64') {
throw new Error(`Invalid arch, got : ${lipoOutput}`);
}
// {{SQL CARBON EDIT}}
console.debug(`Copying SqlToolsService to the universal app folder.`);
await fs.copy(tempSTSDir, path.join(outAppPath, stsPath), { overwrite: true });
}
if (require.main === module) {
main().catch(err => {

View File

@@ -9,8 +9,8 @@ import { makeUniversalApp } from 'vscode-universal-bundler';
import { spawn } from '@malept/cross-spawn-promise';
import * as fs from 'fs-extra';
import * as path from 'path';
import * as plist from 'plist';
import * as product from '../../product.json';
import * as glob from 'glob'; // {{SQL CARBON EDIT}}
async function main() {
const buildDir = process.env['AGENT_BUILDDIRECTORY'];
@@ -20,14 +20,48 @@ async function main() {
throw new Error('$AGENT_BUILDDIRECTORY not set');
}
// {{SQL CARBON EDIT}}
const x64AppNameBase = 'azuredatastudio-darwin-x64';
const arm64AppNameBase = 'azuredatastudio-darwin-arm64';
// {{SQL CARBON EDIT}} - END
const appName = product.nameLong + '.app';
const x64AppPath = path.join(buildDir, 'VSCode-darwin-x64', appName);
const arm64AppPath = path.join(buildDir, 'VSCode-darwin-arm64', appName);
const x64AppPath = path.join(buildDir, x64AppNameBase, appName); // {{SQL CARBON EDIT}} - CHANGE VSCode to azuredatastudio
const arm64AppPath = path.join(buildDir, arm64AppNameBase, appName); // {{SQL CARBON EDIT}} - CHANGE VSCode to azuredatastudio
const x64AsarPath = path.join(x64AppPath, 'Contents', 'Resources', 'app', 'node_modules.asar');
const arm64AsarPath = path.join(arm64AppPath, 'Contents', 'Resources', 'app', 'node_modules.asar');
const outAppPath = path.join(buildDir, `VSCode-darwin-${arch}`, appName);
const outAppPath = path.join(buildDir, `azuredatastudio-darwin-${arch}`, appName); // {{SQL CARBON EDIT}} - CHANGE VSCode to azuredatastudio
const productJsonPath = path.resolve(outAppPath, 'Contents', 'Resources', 'app', 'product.json');
const infoPlistPath = path.resolve(outAppPath, 'Contents', 'Info.plist');
// {{SQL CARBON EDIT}}
// Current STS arm64 builds doesn't work on osx-arm64, we need to use the x64 version of STS on osx-arm64 until the issue is fixed.
// Tracked by: https://github.com/microsoft/azuredatastudio/issues/20775
// makeUniversalApp function will complain if the x64 ADS and arm64 ADS have the same STS binaries, to workaround the issue, we need
// to delete STS from both of them and then copy it to the universal app.
const stsPath = '/Contents/Resources/app/extensions/mssql/sqltoolsservice';
const tempSTSDir = path.join(buildDir, 'sqltoolsservice');
const x64STSDir = path.join(x64AppPath, stsPath);
const arm64STSDir = path.join(arm64AppPath, stsPath);
const targetSTSDirs = [x64STSDir, arm64STSDir];
// backup the x64 STS to a temporary directory, later it will be copied to the universal app directory.
await fs.copy(x64STSDir, tempSTSDir);
// delete STS directories from both x64 ADS and arm64 ADS.
console.debug(`Removing SqlToolsService folders.`);
targetSTSDirs.forEach(async dir => {
await fs.remove(dir);
});
// makeUniversalApp requires the non-binary files in arm64 and x64 versions to be exactly the same,
// but sometimes the content of nls.metadata.json files could be different(only the order of the entries).
// To workaround the issue, we need to replace these files in arm64 ADS with the files from x64 ADS.
// Tracked by issue: https://github.com/microsoft/azuredatastudio/issues/20792
const sourceFiles = glob.sync(path.join(x64AppPath, '/Contents/Resources/app/**/nls.metadata.json'));
sourceFiles.forEach(source => {
const target = source.replace(x64AppNameBase, arm64AppNameBase);
console.debug(`Replacing file '${target}' with '${source}'`);
fs.copySync(source, target, { overwrite: true });
});
// {{SQL CARBON EDIT}} - END
await makeUniversalApp({
x64AppPath,
@@ -40,6 +74,7 @@ async function main() {
'CodeResources',
'fsevents.node',
'Info.plist', // TODO@deepak1556: regressed with 11.4.2 internal builds
'MainMenu.nib', // Generated sequence is not deterministic with Xcode 13
'.npmrc'
],
outAppPath,
@@ -52,19 +87,16 @@ async function main() {
});
await fs.writeJson(productJsonPath, productJson);
let infoPlistString = await fs.readFile(infoPlistPath, 'utf8');
let infoPlistJson = plist.parse(infoPlistString);
Object.assign(infoPlistJson, {
LSRequiresNativeExecution: true
});
await fs.writeFile(infoPlistPath, plist.build(infoPlistJson), 'utf8');
// Verify if native module architecture is correct
const findOutput = await spawn('find', [outAppPath, '-name', 'keytar.node'])
const lipoOutput = await spawn('lipo', ['-archs', findOutput.replace(/\n$/, "")]);
if (lipoOutput.replace(/\n$/, "") !== 'x86_64 arm64') {
throw new Error(`Invalid arch, got : ${lipoOutput}`)
const findOutput = await spawn('find', [outAppPath, '-name', 'keytar.node']);
const lipoOutput = await spawn('lipo', ['-archs', findOutput.replace(/\n$/, '')]);
if (lipoOutput.replace(/\n$/, '') !== 'x86_64 arm64') {
throw new Error(`Invalid arch, got : ${lipoOutput}`);
}
// {{SQL CARBON EDIT}}
console.debug(`Copying SqlToolsService to the universal app folder.`);
await fs.copy(tempSTSDir, path.join(outAppPath, stsPath), { overwrite: true });
}
if (require.main === module) {

Some files were not shown because too many files have changed in this diff Show More