mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-13 17:22:15 -05:00
Merge from vscode merge-base (#22769)
* Merge from vscode merge-base * Turn off basic checks * Enable compilation, unit, and integration tests
This commit is contained in:
@@ -770,6 +770,7 @@
|
|||||||
"chart.js",
|
"chart.js",
|
||||||
"plotly.js",
|
"plotly.js",
|
||||||
"angular2-grid",
|
"angular2-grid",
|
||||||
|
"kburtram-query-plan",
|
||||||
"html-to-image",
|
"html-to-image",
|
||||||
"turndown",
|
"turndown",
|
||||||
"gridstack",
|
"gridstack",
|
||||||
@@ -1146,6 +1147,7 @@
|
|||||||
"extensions/azuremonitor/src/prompts/**",
|
"extensions/azuremonitor/src/prompts/**",
|
||||||
"extensions/azuremonitor/src/typings/findRemove.d.ts",
|
"extensions/azuremonitor/src/typings/findRemove.d.ts",
|
||||||
"extensions/kusto/src/prompts/**",
|
"extensions/kusto/src/prompts/**",
|
||||||
|
"extensions/mssql/src/hdfs/webhdfs.ts",
|
||||||
"extensions/mssql/src/prompts/**",
|
"extensions/mssql/src/prompts/**",
|
||||||
"extensions/mssql/src/typings/bufferStreamReader.d.ts",
|
"extensions/mssql/src/typings/bufferStreamReader.d.ts",
|
||||||
"extensions/mssql/src/typings/findRemove.d.ts",
|
"extensions/mssql/src/typings/findRemove.d.ts",
|
||||||
|
|||||||
2
.github/pull_request_template.md
vendored
2
.github/pull_request_template.md
vendored
@@ -5,5 +5,3 @@
|
|||||||
* Ensure that the code is up-to-date with the `main` branch.
|
* Ensure that the code is up-to-date with the `main` branch.
|
||||||
* Include a description of the proposed changes and how to test them.
|
* Include a description of the proposed changes and how to test them.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
This PR fixes #
|
|
||||||
|
|||||||
22
.github/workflows/bad-tag.yml
vendored
Normal file
22
.github/workflows/bad-tag.yml
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
name: Bad Tag
|
||||||
|
on:
|
||||||
|
create
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
main:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.event.ref == '1.999.0'
|
||||||
|
steps:
|
||||||
|
- name: Checkout Actions
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
repository: "microsoft/vscode-github-triage-actions"
|
||||||
|
ref: stable
|
||||||
|
path: ./actions
|
||||||
|
- name: Install Actions
|
||||||
|
run: npm install --production --prefix ./actions
|
||||||
|
- name: Run Bad Tag
|
||||||
|
uses: ./actions/tag-alert
|
||||||
|
with:
|
||||||
|
token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
|
||||||
|
tag-name: '1.999.0'
|
||||||
177
.github/workflows/basic.yml
vendored
Normal file
177
.github/workflows/basic.yml
vendored
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
name: Basic checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
main:
|
||||||
|
if: github.ref != 'refs/heads/main'
|
||||||
|
name: Compilation, Unit and Integration Tests
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 40
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
# TODO: rename azure-pipelines/linux/xvfb.init to github-actions
|
||||||
|
- name: Setup Build Environment
|
||||||
|
run: |
|
||||||
|
sudo cp build/azure-pipelines/linux/xvfb.init /etc/init.d/xvfb
|
||||||
|
sudo chmod +x /etc/init.d/xvfb
|
||||||
|
sudo update-rc.d xvfb defaults
|
||||||
|
sudo service xvfb start
|
||||||
|
|
||||||
|
- uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 16
|
||||||
|
|
||||||
|
- name: Compute node modules cache key
|
||||||
|
id: nodeModulesCacheKey
|
||||||
|
run: echo "::set-output name=value::$(node build/azure-pipelines/common/computeNodeModulesCacheKey.js)"
|
||||||
|
- name: Cache node modules
|
||||||
|
id: cacheNodeModules
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: "**/node_modules"
|
||||||
|
key: ${{ runner.os }}-cacheNodeModules23-${{ steps.nodeModulesCacheKey.outputs.value }}
|
||||||
|
restore-keys: ${{ runner.os }}-cacheNodeModules23-
|
||||||
|
- name: Get yarn cache directory path
|
||||||
|
id: yarnCacheDirPath
|
||||||
|
if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
|
||||||
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
||||||
|
- name: Cache yarn directory
|
||||||
|
if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: ${{ steps.yarnCacheDirPath.outputs.dir }}
|
||||||
|
key: ${{ runner.os }}-yarnCacheDir-${{ steps.nodeModulesCacheKey.outputs.value }}
|
||||||
|
restore-keys: ${{ runner.os }}-yarnCacheDir-
|
||||||
|
- name: Execute yarn
|
||||||
|
if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
|
||||||
|
env:
|
||||||
|
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
|
||||||
|
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
|
||||||
|
run: yarn --frozen-lockfile --network-timeout 180000
|
||||||
|
|
||||||
|
- name: Compile and Download
|
||||||
|
run: yarn npm-run-all --max_old_space_size=4095 -lp compile "electron x64"
|
||||||
|
|
||||||
|
- name: Run Unit Tests
|
||||||
|
id: electron-unit-tests
|
||||||
|
run: DISPLAY=:10 ./scripts/test.sh
|
||||||
|
|
||||||
|
- name: Run Integration Tests (Electron)
|
||||||
|
id: electron-integration-tests
|
||||||
|
run: DISPLAY=:10 ./scripts/test-integration.sh
|
||||||
|
|
||||||
|
# {{SQL CARBON TODO}} Bring back "Hygiene and Layering" and "Warm up node modules cache"
|
||||||
|
# hygiene:
|
||||||
|
# if: github.ref != 'refs/heads/main'
|
||||||
|
# name: Hygiene and Layering
|
||||||
|
# runs-on: ubuntu-latest
|
||||||
|
# timeout-minutes: 40
|
||||||
|
# env:
|
||||||
|
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
# steps:
|
||||||
|
# - uses: actions/checkout@v3
|
||||||
|
|
||||||
|
# - uses: actions/setup-node@v3
|
||||||
|
# with:
|
||||||
|
# node-version: 16
|
||||||
|
|
||||||
|
# - name: Compute node modules cache key
|
||||||
|
# id: nodeModulesCacheKey
|
||||||
|
# run: echo "::set-output name=value::$(node build/azure-pipelines/common/computeNodeModulesCacheKey.js)"
|
||||||
|
# - name: Cache node modules
|
||||||
|
# id: cacheNodeModules
|
||||||
|
# uses: actions/cache@v3
|
||||||
|
# with:
|
||||||
|
# path: "**/node_modules"
|
||||||
|
# key: ${{ runner.os }}-cacheNodeModules23-${{ steps.nodeModulesCacheKey.outputs.value }}
|
||||||
|
# restore-keys: ${{ runner.os }}-cacheNodeModules23-
|
||||||
|
# - name: Get yarn cache directory path
|
||||||
|
# id: yarnCacheDirPath
|
||||||
|
# if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
|
||||||
|
# run: echo "::set-output name=dir::$(yarn cache dir)"
|
||||||
|
# - name: Cache yarn directory
|
||||||
|
# if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
|
||||||
|
# uses: actions/cache@v3
|
||||||
|
# with:
|
||||||
|
# path: ${{ steps.yarnCacheDirPath.outputs.dir }}
|
||||||
|
# key: ${{ runner.os }}-yarnCacheDir-${{ steps.nodeModulesCacheKey.outputs.value }}
|
||||||
|
# restore-keys: ${{ runner.os }}-yarnCacheDir-
|
||||||
|
# - name: Execute yarn
|
||||||
|
# if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
|
||||||
|
# env:
|
||||||
|
# PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
|
||||||
|
# ELECTRON_SKIP_BINARY_DOWNLOAD: 1
|
||||||
|
# run: yarn --frozen-lockfile --network-timeout 180000
|
||||||
|
|
||||||
|
# - name: Run Hygiene Checks
|
||||||
|
# run: yarn gulp hygiene
|
||||||
|
|
||||||
|
# - name: Run Valid Layers Checks
|
||||||
|
# run: yarn valid-layers-check
|
||||||
|
|
||||||
|
# - name: Compile /build/
|
||||||
|
# run: yarn --cwd build compile
|
||||||
|
|
||||||
|
# - name: Check clean git state
|
||||||
|
# run: ./.github/workflows/check-clean-git-state.sh
|
||||||
|
|
||||||
|
# - name: Run eslint
|
||||||
|
# run: yarn eslint
|
||||||
|
|
||||||
|
# - name: Run vscode-dts Compile Checks
|
||||||
|
# run: yarn vscode-dts-compile-check
|
||||||
|
|
||||||
|
# - name: Run Trusted Types Checks
|
||||||
|
# run: yarn tsec-compile-check
|
||||||
|
|
||||||
|
# warm-cache:
|
||||||
|
# name: Warm up node modules cache
|
||||||
|
# if: github.ref == 'refs/heads/main'
|
||||||
|
# runs-on: ubuntu-latest
|
||||||
|
# timeout-minutes: 40
|
||||||
|
# env:
|
||||||
|
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
# steps:
|
||||||
|
# - uses: actions/checkout@v3
|
||||||
|
|
||||||
|
# - uses: actions/setup-node@v3
|
||||||
|
# with:
|
||||||
|
# node-version: 16
|
||||||
|
|
||||||
|
# - name: Compute node modules cache key
|
||||||
|
# id: nodeModulesCacheKey
|
||||||
|
# run: echo "::set-output name=value::$(node build/azure-pipelines/common/computeNodeModulesCacheKey.js)"
|
||||||
|
# - name: Cache node modules
|
||||||
|
# id: cacheNodeModules
|
||||||
|
# uses: actions/cache@v3
|
||||||
|
# with:
|
||||||
|
# path: "**/node_modules"
|
||||||
|
# key: ${{ runner.os }}-cacheNodeModules23-${{ steps.nodeModulesCacheKey.outputs.value }}
|
||||||
|
# restore-keys: ${{ runner.os }}-cacheNodeModules23-
|
||||||
|
# - name: Get yarn cache directory path
|
||||||
|
# id: yarnCacheDirPath
|
||||||
|
# if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
|
||||||
|
# run: echo "::set-output name=dir::$(yarn cache dir)"
|
||||||
|
# - name: Cache yarn directory
|
||||||
|
# if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
|
||||||
|
# uses: actions/cache@v3
|
||||||
|
# with:
|
||||||
|
# path: ${{ steps.yarnCacheDirPath.outputs.dir }}
|
||||||
|
# key: ${{ runner.os }}-yarnCacheDir-${{ steps.nodeModulesCacheKey.outputs.value }}
|
||||||
|
# restore-keys: ${{ runner.os }}-yarnCacheDir-
|
||||||
|
# - name: Execute yarn
|
||||||
|
# if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
|
||||||
|
# env:
|
||||||
|
# PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
|
||||||
|
# ELECTRON_SKIP_BINARY_DOWNLOAD: 1
|
||||||
|
# run: yarn --frozen-lockfile --network-timeout 180000
|
||||||
118
.github/workflows/ci.yml
vendored
118
.github/workflows/ci.yml
vendored
@@ -1,27 +1,29 @@
|
|||||||
name: CI
|
name: CI
|
||||||
|
|
||||||
on:
|
on: workflow_dispatch
|
||||||
push:
|
|
||||||
branches:
|
# on:
|
||||||
- main
|
# push:
|
||||||
- release/*
|
# branches:
|
||||||
pull_request:
|
# - main
|
||||||
branches:
|
# - release/*
|
||||||
- main
|
# pull_request:
|
||||||
- release/*
|
# branches:
|
||||||
|
# - main
|
||||||
|
# - release/*
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
windows:
|
windows:
|
||||||
name: Windows
|
name: Windows
|
||||||
runs-on: windows-2019
|
runs-on: windows-2022
|
||||||
timeout-minutes: 30
|
timeout-minutes: 60
|
||||||
env:
|
env:
|
||||||
CHILD_CONCURRENCY: "1"
|
CHILD_CONCURRENCY: "1"
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
- uses: actions/setup-node@v2
|
- uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: 16
|
node-version: 16
|
||||||
|
|
||||||
@@ -248,8 +250,8 @@ jobs:
|
|||||||
uses: actions/cache@v2
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: "**/node_modules"
|
path: "**/node_modules"
|
||||||
key: ${{ runner.os }}-cacheNodeModules14-${{ steps.nodeModulesCacheKey.outputs.value }}
|
key: ${{ runner.os }}-cacheNodeModules23-${{ steps.nodeModulesCacheKey.outputs.value }}
|
||||||
restore-keys: ${{ runner.os }}-cacheNodeModules14-
|
restore-keys: ${{ runner.os }}-cacheNodeModules23-
|
||||||
- name: Get yarn cache directory path
|
- name: Get yarn cache directory path
|
||||||
id: yarnCacheDirPath
|
id: yarnCacheDirPath
|
||||||
if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
|
if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
|
||||||
@@ -273,24 +275,98 @@ jobs:
|
|||||||
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
|
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
|
||||||
run: yarn --frozen-lockfile --network-timeout 180000
|
run: yarn --frozen-lockfile --network-timeout 180000
|
||||||
|
|
||||||
|
- name: Compile and Download
|
||||||
|
run: yarn npm-run-all --max_old_space_size=4095 -lp compile "electron x64" playwright-install download-builtin-extensions
|
||||||
|
|
||||||
|
- name: Compile Integration Tests
|
||||||
|
run: yarn --cwd test/integration/browser compile
|
||||||
|
|
||||||
|
# This is required for keytar unittests, otherwise we hit
|
||||||
|
# https://github.com/atom/node-keytar/issues/76
|
||||||
|
- name: Create temporary keychain
|
||||||
|
run: |
|
||||||
|
security create-keychain -p pwd $RUNNER_TEMP/buildagent.keychain
|
||||||
|
security default-keychain -s $RUNNER_TEMP/buildagent.keychain
|
||||||
|
security unlock-keychain -p pwd $RUNNER_TEMP/buildagent.keychain
|
||||||
|
|
||||||
|
- name: Run Unit Tests (Electron)
|
||||||
|
run: DISPLAY=:10 ./scripts/test.sh
|
||||||
|
|
||||||
|
- name: Run Unit Tests (node.js)
|
||||||
|
run: yarn test-node
|
||||||
|
|
||||||
|
- name: Run Unit Tests (Browser, Chromium)
|
||||||
|
run: DISPLAY=:10 yarn test-browser-no-install --browser chromium
|
||||||
|
|
||||||
|
- name: Run Integration Tests (Electron)
|
||||||
|
run: DISPLAY=:10 ./scripts/test-integration.sh
|
||||||
|
|
||||||
|
- name: Run Integration Tests (Browser, Webkit)
|
||||||
|
run: DISPLAY=:10 ./scripts/test-web-integration.sh --browser webkit
|
||||||
|
|
||||||
|
- name: Run Integration Tests (Remote)
|
||||||
|
timeout-minutes: 15
|
||||||
|
run: DISPLAY=:10 ./scripts/test-remote-integration.sh
|
||||||
|
|
||||||
|
hygiene:
|
||||||
|
name: Hygiene and Layering
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 40
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 16
|
||||||
|
|
||||||
|
- name: Compute node modules cache key
|
||||||
|
id: nodeModulesCacheKey
|
||||||
|
run: echo "::set-output name=value::$(node build/azure-pipelines/common/computeNodeModulesCacheKey.js)"
|
||||||
|
- name: Cache node modules
|
||||||
|
id: cacheNodeModules
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: "**/node_modules"
|
||||||
|
key: ${{ runner.os }}-cacheNodeModules23-${{ steps.nodeModulesCacheKey.outputs.value }}
|
||||||
|
restore-keys: ${{ runner.os }}-cacheNodeModules23-
|
||||||
|
- name: Get yarn cache directory path
|
||||||
|
id: yarnCacheDirPath
|
||||||
|
if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
|
||||||
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
||||||
|
- name: Cache yarn directory
|
||||||
|
if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ${{ steps.yarnCacheDirPath.outputs.dir }}
|
||||||
|
key: ${{ runner.os }}-yarnCacheDir-${{ steps.nodeModulesCacheKey.outputs.value }}
|
||||||
|
restore-keys: ${{ runner.os }}-yarnCacheDir-
|
||||||
|
- name: Execute yarn
|
||||||
|
if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
|
||||||
|
env:
|
||||||
|
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
|
||||||
|
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
|
||||||
|
run: yarn --frozen-lockfile --network-timeout 180000
|
||||||
|
|
||||||
|
- name: Download Playwright
|
||||||
|
run: yarn playwright-install
|
||||||
|
|
||||||
- name: Run Hygiene Checks
|
- name: Run Hygiene Checks
|
||||||
run: yarn gulp hygiene
|
run: yarn gulp hygiene
|
||||||
|
|
||||||
- name: Run Valid Layers Checks
|
- name: Run Valid Layers Checks
|
||||||
run: yarn valid-layers-check
|
run: yarn valid-layers-check
|
||||||
|
|
||||||
# - name: Run Monaco Editor Checks {{SQL CARBON EDIT}} Remove Monaco checks
|
|
||||||
# run: yarn monaco-compile-check
|
|
||||||
|
|
||||||
- name: Compile /build/
|
- name: Compile /build/
|
||||||
run: yarn --cwd build compile
|
run: yarn --cwd build compile
|
||||||
|
|
||||||
|
- name: Check clean git state
|
||||||
|
run: ./.github/workflows/check-clean-git-state.sh
|
||||||
|
|
||||||
- name: Run eslint
|
- name: Run eslint
|
||||||
run: yarn eslint
|
run: yarn eslint
|
||||||
|
|
||||||
# {{SQL CARBON EDIT}} Don't need this
|
|
||||||
# - name: Run Monaco Editor Checks
|
|
||||||
# run: yarn monaco-compile-check
|
|
||||||
|
|
||||||
# {{SQL CARBON EDIT}} Don't need this
|
# {{SQL CARBON EDIT}} Don't need this
|
||||||
# - name: Run vscode-dts Compile Checks
|
# - name: Run vscode-dts Compile Checks
|
||||||
|
|||||||
26
.github/workflows/pr-chat.yml
vendored
Normal file
26
.github/workflows/pr-chat.yml
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
name: PR Chat
|
||||||
|
on:
|
||||||
|
pull_request_target:
|
||||||
|
types: [opened, ready_for_review, closed]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
main:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: ${{ !github.event.pull_request.draft }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout Actions
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
repository: "microsoft/vscode-github-triage-actions"
|
||||||
|
ref: stable
|
||||||
|
path: ./actions
|
||||||
|
- name: Install Actions
|
||||||
|
run: npm install --production --prefix ./actions
|
||||||
|
- name: Run Code Review Chat
|
||||||
|
uses: ./actions/code-review-chat
|
||||||
|
with:
|
||||||
|
token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
|
||||||
|
slack_token: ${{ secrets.SLACK_TOKEN }}
|
||||||
|
slack_user_token: ${{ secrets.SLACK_USER_TOKEN }}
|
||||||
|
slack_bot_name: "VSCodeBot"
|
||||||
|
notification_channel: codereview
|
||||||
2
.vscode/extensions.json
vendored
2
.vscode/extensions.json
vendored
@@ -4,6 +4,6 @@
|
|||||||
"recommendations": [
|
"recommendations": [
|
||||||
"dbaeumer.vscode-eslint",
|
"dbaeumer.vscode-eslint",
|
||||||
"EditorConfig.EditorConfig",
|
"EditorConfig.EditorConfig",
|
||||||
"redhat.vscode-yaml"
|
"ms-vscode.vscode-selfhost-test-provider"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
185
.vscode/launch.json
vendored
185
.vscode/launch.json
vendored
@@ -13,14 +13,182 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "node",
|
"type": "node",
|
||||||
"request": "launch",
|
"timeout": 0,
|
||||||
"name": "Launch Azure Data Studio",
|
"port": 5870,
|
||||||
"runtimeExecutable": "${workspaceFolder}/scripts/sql.sh",
|
"outFiles": [
|
||||||
"windows": {
|
"${workspaceFolder}/out/**/*.js",
|
||||||
"runtimeExecutable": "${workspaceFolder}/scripts/sql.bat",
|
"${workspaceFolder}/extensions/*/out/**/*.js"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"runtimeArgs": [
|
{
|
||||||
"--no-cached-data"
|
"type": "pwa-chrome",
|
||||||
|
"request": "attach",
|
||||||
|
"name": "Attach to Shared Process",
|
||||||
|
"timeout": 30000,
|
||||||
|
"port": 9222,
|
||||||
|
"urlFilter": "*sharedProcess.html*",
|
||||||
|
"presentation": {
|
||||||
|
"hidden": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "node",
|
||||||
|
"request": "attach",
|
||||||
|
"name": "Attach to Search Process",
|
||||||
|
"port": 5876,
|
||||||
|
"outFiles": [
|
||||||
|
"${workspaceFolder}/out/**/*.js"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "node",
|
||||||
|
"request": "attach",
|
||||||
|
"name": "Attach to Pty Host Process",
|
||||||
|
"port": 5877,
|
||||||
|
"outFiles": [
|
||||||
|
"${workspaceFolder}/out/**/*.js"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "node",
|
||||||
|
"request": "attach",
|
||||||
|
"name": "Attach to CLI Process",
|
||||||
|
"port": 5874,
|
||||||
|
"outFiles": [
|
||||||
|
"${workspaceFolder}/out/**/*.js"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "node",
|
||||||
|
"request": "attach",
|
||||||
|
"name": "Attach to Main Process",
|
||||||
|
"timeout": 30000,
|
||||||
|
"port": 5875,
|
||||||
|
"outFiles": [
|
||||||
|
"${workspaceFolder}/out/**/*.js"
|
||||||
|
],
|
||||||
|
"presentation": {
|
||||||
|
"hidden": true,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "extensionHost",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "VS Code Emmet Tests",
|
||||||
|
"runtimeExecutable": "${execPath}",
|
||||||
|
"args": [
|
||||||
|
"${workspaceFolder}/extensions/emmet/test-workspace",
|
||||||
|
"--extensionDevelopmentPath=${workspaceFolder}/extensions/emmet",
|
||||||
|
"--extensionTestsPath=${workspaceFolder}/extensions/emmet/out/test"
|
||||||
|
],
|
||||||
|
"outFiles": [
|
||||||
|
"${workspaceFolder}/out/**/*.js"
|
||||||
|
],
|
||||||
|
"presentation": {
|
||||||
|
"group": "5_tests",
|
||||||
|
"order": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "extensionHost",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "VS Code Configuration Editing Tests",
|
||||||
|
"runtimeExecutable": "${execPath}",
|
||||||
|
"args": [
|
||||||
|
"--extensionDevelopmentPath=${workspaceFolder}/extensions/configuration-editing",
|
||||||
|
"--extensionTestsPath=${workspaceFolder}/extensions/configuration-editing/out/test"
|
||||||
|
],
|
||||||
|
"outFiles": [
|
||||||
|
"${workspaceFolder}/out/**/*.js"
|
||||||
|
],
|
||||||
|
"presentation": {
|
||||||
|
"group": "5_tests",
|
||||||
|
"order": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "extensionHost",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "VS Code Git Tests",
|
||||||
|
"runtimeExecutable": "${execPath}",
|
||||||
|
"args": [
|
||||||
|
"/tmp/my4g9l",
|
||||||
|
"--extensionDevelopmentPath=${workspaceFolder}/extensions/git",
|
||||||
|
"--extensionTestsPath=${workspaceFolder}/extensions/git/out/test"
|
||||||
|
],
|
||||||
|
"outFiles": [
|
||||||
|
"${workspaceFolder}/extensions/git/out/**/*.js"
|
||||||
|
],
|
||||||
|
"presentation": {
|
||||||
|
"group": "5_tests",
|
||||||
|
"order": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "extensionHost",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "VS Code Github Tests",
|
||||||
|
"runtimeExecutable": "${execPath}",
|
||||||
|
"args": [
|
||||||
|
"${workspaceFolder}/extensions/github/testWorkspace",
|
||||||
|
"--extensionDevelopmentPath=${workspaceFolder}/extensions/github",
|
||||||
|
"--extensionTestsPath=${workspaceFolder}/extensions/github/out/test"
|
||||||
|
],
|
||||||
|
"outFiles": [
|
||||||
|
"${workspaceFolder}/extensions/github/out/**/*.js"
|
||||||
|
],
|
||||||
|
"presentation": {
|
||||||
|
"group": "5_tests",
|
||||||
|
"order": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "extensionHost",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "VS Code API Tests (single folder)",
|
||||||
|
"runtimeExecutable": "${execPath}",
|
||||||
|
"args": [
|
||||||
|
// "${workspaceFolder}", // Uncomment for running out of sources.
|
||||||
|
"${workspaceFolder}/extensions/vscode-api-tests/testWorkspace",
|
||||||
|
"--extensionDevelopmentPath=${workspaceFolder}/extensions/vscode-api-tests",
|
||||||
|
"--extensionTestsPath=${workspaceFolder}/extensions/vscode-api-tests/out/singlefolder-tests",
|
||||||
|
"--disable-extensions"
|
||||||
|
],
|
||||||
|
"outFiles": [
|
||||||
|
"${workspaceFolder}/out/**/*.js"
|
||||||
|
],
|
||||||
|
"presentation": {
|
||||||
|
"group": "5_tests",
|
||||||
|
"order": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "extensionHost",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "VS Code API Tests (workspace)",
|
||||||
|
"runtimeExecutable": "${execPath}",
|
||||||
|
"args": [
|
||||||
|
"${workspaceFolder}/extensions/vscode-api-tests/testworkspace.code-workspace",
|
||||||
|
"--extensionDevelopmentPath=${workspaceFolder}/extensions/vscode-api-tests",
|
||||||
|
"--extensionTestsPath=${workspaceFolder}/extensions/vscode-api-tests/out/workspace-tests"
|
||||||
|
],
|
||||||
|
"outFiles": [
|
||||||
|
"${workspaceFolder}/out/**/*.js"
|
||||||
|
],
|
||||||
|
"presentation": {
|
||||||
|
"group": "5_tests",
|
||||||
|
"order": 4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "extensionHost",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "VS Code Tokenizer Tests",
|
||||||
|
"runtimeExecutable": "${execPath}",
|
||||||
|
"args": [
|
||||||
|
"${workspaceFolder}/extensions/vscode-colorize-tests/test",
|
||||||
|
"--extensionDevelopmentPath=${workspaceFolder}/extensions/vscode-colorize-tests",
|
||||||
|
"--extensionTestsPath=${workspaceFolder}/extensions/vscode-colorize-tests/out"
|
||||||
],
|
],
|
||||||
"outFiles": [
|
"outFiles": [
|
||||||
"${workspaceFolder}/out/**/*.js"
|
"${workspaceFolder}/out/**/*.js"
|
||||||
@@ -53,6 +221,9 @@
|
|||||||
"runtimeArgs": [
|
"runtimeArgs": [
|
||||||
"--inspect=5875",
|
"--inspect=5875",
|
||||||
"--no-cached-data",
|
"--no-cached-data",
|
||||||
|
"--crash-reporter-directory=${workspaceFolder}/.profile-oss/crashes",
|
||||||
|
// for general runtime freezes: https://github.com/microsoft/vscode/issues/127861#issuecomment-904144910
|
||||||
|
"--disable-features=CalculateNativeWinOcclusion",
|
||||||
],
|
],
|
||||||
"webRoot": "${workspaceFolder}",
|
"webRoot": "${workspaceFolder}",
|
||||||
"cascadeTerminateToConfigurations": [
|
"cascadeTerminateToConfigurations": [
|
||||||
|
|||||||
2
.vscode/notebooks/api.github-issues
vendored
2
.vscode/notebooks/api.github-issues
vendored
@@ -7,7 +7,7 @@
|
|||||||
{
|
{
|
||||||
"kind": 2,
|
"kind": 2,
|
||||||
"language": "github-issues",
|
"language": "github-issues",
|
||||||
"value": "$repo=repo:microsoft/vscode\n$milestone=milestone:\"May 2022\""
|
"value": "$repo=repo:microsoft/vscode\n$milestone=milestone:\"July 2022\""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"kind": 1,
|
"kind": 1,
|
||||||
|
|||||||
2
.vscode/notebooks/endgame.github-issues
vendored
2
.vscode/notebooks/endgame.github-issues
vendored
@@ -7,7 +7,7 @@
|
|||||||
{
|
{
|
||||||
"kind": 2,
|
"kind": 2,
|
||||||
"language": "github-issues",
|
"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:\"April 2022\""
|
"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:\"July 2022\""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"kind": 1,
|
"kind": 1,
|
||||||
|
|||||||
2
.vscode/notebooks/inbox.github-issues
vendored
2
.vscode/notebooks/inbox.github-issues
vendored
@@ -7,7 +7,7 @@
|
|||||||
{
|
{
|
||||||
"kind": 2,
|
"kind": 2,
|
||||||
"language": "github-issues",
|
"language": "github-issues",
|
||||||
"value": "$inbox -label:\"needs more info\" sort:created-desc"
|
"value": "$inbox -label:\"info-needed\" sort:created-desc"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"kind": 2,
|
"kind": 2,
|
||||||
|
|||||||
4
.vscode/notebooks/my-endgame.github-issues
vendored
4
.vscode/notebooks/my-endgame.github-issues
vendored
@@ -7,7 +7,7 @@
|
|||||||
{
|
{
|
||||||
"kind": 2,
|
"kind": 2,
|
||||||
"language": "github-issues",
|
"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:\"April 2022\"\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:\"July 2022\"\n\n$MINE=assignee:@me"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"kind": 1,
|
"kind": 1,
|
||||||
@@ -147,7 +147,7 @@
|
|||||||
{
|
{
|
||||||
"kind": 2,
|
"kind": 2,
|
||||||
"language": "github-issues",
|
"language": "github-issues",
|
||||||
"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"
|
"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:triage-needed -label:verification-found"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"kind": 1,
|
"kind": 1,
|
||||||
|
|||||||
4
.vscode/notebooks/my-work.github-issues
vendored
4
.vscode/notebooks/my-work.github-issues
vendored
@@ -7,7 +7,7 @@
|
|||||||
{
|
{
|
||||||
"kind": 2,
|
"kind": 2,
|
||||||
"language": "github-issues",
|
"language": "github-issues",
|
||||||
"value": "// list of repos we work in\n$repos=repo:microsoft/vscode 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-internalbacklog repo:microsoft/vscode-dev repo:microsoft/vscode-unpkg repo:microsoft/vscode-references-view repo:microsoft/vscode-anycode repo:microsoft/vscode-hexeditor repo:microsoft/vscode-extension-telemetry repo:microsoft/vscode-livepreview repo:microsoft/vscode-remotehub repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-remote-repositories-github repo:microsoft/monaco-editor repo:microsoft/vscode-vsce\n\n// current milestone name\n$milestone=milestone:\"May 2022\""
|
"value": "// list of repos we work in\n$repos=repo:microsoft/vscode 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-internalbacklog repo:microsoft/vscode-dev repo:microsoft/vscode-unpkg repo:microsoft/vscode-references-view repo:microsoft/vscode-anycode repo:microsoft/vscode-hexeditor repo:microsoft/vscode-extension-telemetry repo:microsoft/vscode-livepreview repo:microsoft/vscode-remotehub repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-remote-repositories-github repo:microsoft/monaco-editor repo:microsoft/vscode-vsce\n\n// current milestone name\n$milestone=milestone:\"July 2022\""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"kind": 1,
|
"kind": 1,
|
||||||
@@ -114,7 +114,7 @@
|
|||||||
{
|
{
|
||||||
"kind": 2,
|
"kind": 2,
|
||||||
"language": "github-issues",
|
"language": "github-issues",
|
||||||
"value": "$repos assignee:@me is:open label:\"needs more info\"",
|
"value": "$repos assignee:@me is:open label:\"needs more info\""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"kind": 1,
|
"kind": 1,
|
||||||
|
|||||||
2
.vscode/notebooks/verification.github-issues
vendored
2
.vscode/notebooks/verification.github-issues
vendored
@@ -12,7 +12,7 @@
|
|||||||
{
|
{
|
||||||
"kind": 2,
|
"kind": 2,
|
||||||
"language": "github-issues",
|
"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:\"March 2022\""
|
"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:\"May 2022\""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"kind": 1,
|
"kind": 1,
|
||||||
|
|||||||
6
.vscode/notebooks/vscode-dev.github-issues
vendored
6
.vscode/notebooks/vscode-dev.github-issues
vendored
@@ -7,7 +7,7 @@
|
|||||||
{
|
{
|
||||||
"kind": 2,
|
"kind": 2,
|
||||||
"language": "github-issues",
|
"language": "github-issues",
|
||||||
"value": "repo:microsoft/vscode-dev milestone:\"December 2021\" is:open"
|
"value": "repo:microsoft/vscode-dev milestone:\"May 2022\" is:open"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"kind": 2,
|
"kind": 2,
|
||||||
@@ -32,11 +32,11 @@
|
|||||||
{
|
{
|
||||||
"kind": 2,
|
"kind": 2,
|
||||||
"language": "github-issues",
|
"language": "github-issues",
|
||||||
"value": "repo:microsoft/vscode-remote-repositories-github milestone:\"December 2021\" is:open"
|
"value": "repo:microsoft/vscode-remote-repositories-github milestone:\"May 2022\" is:open"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"kind": 2,
|
"kind": 2,
|
||||||
"language": "github-issues",
|
"language": "github-issues",
|
||||||
"value": "repo:microsoft/vscode-remotehub milestone:\"December 2021\" is:open"
|
"value": "repo:microsoft/vscode-remotehub milestone:\"May 2022\" is:open"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
7
.vscode/settings.json
vendored
7
.vscode/settings.json
vendored
@@ -67,6 +67,13 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"git.ignoreLimitWarning": true,
|
"git.ignoreLimitWarning": true,
|
||||||
|
"git.branchProtection": [
|
||||||
|
"main",
|
||||||
|
"release/*"
|
||||||
|
],
|
||||||
|
"git.branchProtectionPrompt": "alwaysCommitToNewBranch",
|
||||||
|
"git.branchRandomName.enable": true,
|
||||||
|
"git.mergeEditor": true,
|
||||||
"remote.extensionKind": {
|
"remote.extensionKind": {
|
||||||
"msjsdiag.debugger-for-chrome": "workspace"
|
"msjsdiag.debugger-for-chrome": "workspace"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -112,47 +112,53 @@ Microsoft PROSE SDK: https://microsoft.github.io/prose
|
|||||||
23. Ionic documentation version 1.2.4 (https://github.com/ionic-team/ionic-site)
|
23. Ionic documentation version 1.2.4 (https://github.com/ionic-team/ionic-site)
|
||||||
24. ionide/ionide-fsgrammar (https://github.com/ionide/ionide-fsgrammar)
|
24. ionide/ionide-fsgrammar (https://github.com/ionide/ionide-fsgrammar)
|
||||||
25. James-Yu/LaTeX-Workshop version 8.19.1 (https://github.com/James-Yu/LaTeX-Workshop)
|
25. James-Yu/LaTeX-Workshop version 8.19.1 (https://github.com/James-Yu/LaTeX-Workshop)
|
||||||
26. jeff-hykin/cpp-textmate-grammar version 1.12.11 (https://github.com/jeff-hykin/cpp-textmate-grammar)
|
26. jeff-hykin/better-c-syntax version 1.13.2 (https://github.com/jeff-hykin/better-c-syntax)
|
||||||
27. jeff-hykin/cpp-textmate-grammar version 1.15.5 (https://github.com/jeff-hykin/cpp-textmate-grammar)
|
27. jeff-hykin/better-cpp-syntax version 1.15.18 (https://github.com/jeff-hykin/better-cpp-syntax)
|
||||||
28. js-beautify version 1.6.8 (https://github.com/beautify-web/js-beautify)
|
28. jeff-hykin/better-objc-syntax version 0.2.0 (https://github.com/jeff-hykin/better-objc-syntax)
|
||||||
29. JuliaEditorSupport/atom-language-julia version 0.21.1 (https://github.com/JuliaEditorSupport/atom-language-julia)
|
29. jeff-hykin/better-objcpp-syntax version 0.1.0 (https://github.com/jeff-hykin/better-objcpp-syntax)
|
||||||
30. Jxck/assert version 1.0.0 (https://github.com/Jxck/assert)
|
30. jlelong/vscode-latex-basics version 1.3.0 (https://github.com/jlelong/vscode-latex-basics)
|
||||||
31. language-docker (https://github.com/moby/moby)
|
31. js-beautify version 1.6.8 (https://github.com/beautify-web/js-beautify)
|
||||||
32. language-less version 0.34.2 (https://github.com/atom/language-less)
|
32. JuliaEditorSupport/atom-language-julia version 0.22.1 (https://github.com/JuliaEditorSupport/atom-language-julia)
|
||||||
33. language-php version 0.46.2 (https://github.com/atom/language-php)
|
33. Jxck/assert version 1.0.0 (https://github.com/Jxck/assert)
|
||||||
34. MagicStack/MagicPython version 1.1.1 (https://github.com/MagicStack/MagicPython)
|
34. language-docker (https://github.com/moby/moby)
|
||||||
35. marked version 1.1.0 (https://github.com/markedjs/marked)
|
35. language-less version 0.34.2 (https://github.com/atom/language-less)
|
||||||
36. mdn-data version 1.1.12 (https://github.com/mdn/data)
|
36. language-php version 0.48.1 (https://github.com/atom/language-php)
|
||||||
37. microsoft/TypeScript-TmLanguage version 0.0.1 (https://github.com/microsoft/TypeScript-TmLanguage)
|
37. MagicStack/MagicPython version 1.1.1 (https://github.com/MagicStack/MagicPython)
|
||||||
38. microsoft/vscode-JSON.tmLanguage (https://github.com/microsoft/vscode-JSON.tmLanguage)
|
38. marked version 4.0.16 (https://github.com/markedjs/marked)
|
||||||
39. microsoft/vscode-markdown-tm-grammar version 1.0.0 (https://github.com/microsoft/vscode-markdown-tm-grammar)
|
39. mdn-data version 1.1.12 (https://github.com/mdn/data)
|
||||||
40. microsoft/vscode-mssql version 1.9.0 (https://github.com/microsoft/vscode-mssql)
|
40. microsoft/TypeScript-TmLanguage version 0.0.1 (https://github.com/microsoft/TypeScript-TmLanguage)
|
||||||
41. mmims/language-batchfile version 0.7.6 (https://github.com/mmims/language-batchfile)
|
41. microsoft/vscode-JSON.tmLanguage (https://github.com/microsoft/vscode-JSON.tmLanguage)
|
||||||
42. NVIDIA/cuda-cpp-grammar (https://github.com/NVIDIA/cuda-cpp-grammar)
|
42. microsoft/vscode-markdown-tm-grammar version 1.0.0 (https://github.com/microsoft/vscode-markdown-tm-grammar)
|
||||||
43. PowerShell/EditorSyntax version 1.0.0 (https://github.com/PowerShell/EditorSyntax)
|
43. microsoft/vscode-mssql version 1.16.0 (https://github.com/microsoft/vscode-mssql)
|
||||||
44. rust-syntax version 0.5.0 (https://github.com/dustypomerleau/rust-syntax)
|
44. mmims/language-batchfile version 0.7.6 (https://github.com/mmims/language-batchfile)
|
||||||
45. seti-ui version 0.1.0 (https://github.com/jesseweed/seti-ui)
|
45. NVIDIA/cuda-cpp-grammar (https://github.com/NVIDIA/cuda-cpp-grammar)
|
||||||
46. shaders-tmLanguage version 0.1.0 (https://github.com/tgjones/shaders-tmLanguage)
|
46. PowerShell/EditorSyntax version 1.0.0 (https://github.com/PowerShell/EditorSyntax)
|
||||||
47. textmate/asp.vb.net.tmbundle (https://github.com/textmate/asp.vb.net.tmbundle)
|
47. rust-syntax version 0.5.0 (https://github.com/dustypomerleau/rust-syntax)
|
||||||
48. textmate/c.tmbundle (https://github.com/textmate/c.tmbundle)
|
48. semver version 5.5.0 (https://github.com/npm/node-semver)
|
||||||
49. textmate/diff.tmbundle (https://github.com/textmate/diff.tmbundle)
|
49. seti-ui version 0.1.0 (https://github.com/jesseweed/seti-ui)
|
||||||
50. textmate/git.tmbundle (https://github.com/textmate/git.tmbundle)
|
50. shaders-tmLanguage version 0.1.0 (https://github.com/tgjones/shaders-tmLanguage)
|
||||||
51. textmate/groovy.tmbundle (https://github.com/textmate/groovy.tmbundle)
|
51. sumneko/lua.tmbundle version 1.0.0 (https://github.com/sumneko/lua.tmbundle)
|
||||||
52. textmate/html.tmbundle (https://github.com/textmate/html.tmbundle)
|
52. textmate/asp.vb.net.tmbundle (https://github.com/textmate/asp.vb.net.tmbundle)
|
||||||
53. textmate/ini.tmbundle (https://github.com/textmate/ini.tmbundle)
|
53. textmate/c.tmbundle (https://github.com/textmate/c.tmbundle)
|
||||||
54. textmate/javascript.tmbundle (https://github.com/textmate/javascript.tmbundle)
|
54. textmate/diff.tmbundle (https://github.com/textmate/diff.tmbundle)
|
||||||
55. textmate/lua.tmbundle (https://github.com/textmate/lua.tmbundle)
|
55. textmate/git.tmbundle (https://github.com/textmate/git.tmbundle)
|
||||||
56. textmate/markdown.tmbundle (https://github.com/textmate/markdown.tmbundle)
|
56. textmate/groovy.tmbundle (https://github.com/textmate/groovy.tmbundle)
|
||||||
57. textmate/perl.tmbundle (https://github.com/textmate/perl.tmbundle)
|
57. textmate/html.tmbundle (https://github.com/textmate/html.tmbundle)
|
||||||
58. textmate/ruby.tmbundle (https://github.com/textmate/ruby.tmbundle)
|
58. textmate/ini.tmbundle (https://github.com/textmate/ini.tmbundle)
|
||||||
59. textmate/yaml.tmbundle (https://github.com/textmate/yaml.tmbundle)
|
59. textmate/javascript.tmbundle (https://github.com/textmate/javascript.tmbundle)
|
||||||
60. TypeScript-TmLanguage version 0.1.8 (https://github.com/microsoft/TypeScript-TmLanguage)
|
60. textmate/markdown.tmbundle (https://github.com/textmate/markdown.tmbundle)
|
||||||
61. TypeScript-TmLanguage version 1.0.0 (https://github.com/microsoft/TypeScript-TmLanguage)
|
61. textmate/perl.tmbundle (https://github.com/textmate/perl.tmbundle)
|
||||||
62. Unicode version 12.0.0 (https://home.unicode.org/)
|
62. textmate/ruby.tmbundle (https://github.com/textmate/ruby.tmbundle)
|
||||||
63. vscode-codicons version 0.0.14 (https://github.com/microsoft/vscode-codicons)
|
63. textmate/yaml.tmbundle (https://github.com/textmate/yaml.tmbundle)
|
||||||
64. vscode-logfile-highlighter version 2.11.0 (https://github.com/emilast/vscode-logfile-highlighter)
|
64. trond-snekvik/vscode-rst version 1.5.1 (https://github.com/trond-snekvik/vscode-rst)
|
||||||
65. vscode-swift version 0.0.1 (https://github.com/owensd/vscode-swift)
|
65. TypeScript-TmLanguage version 0.1.8 (https://github.com/microsoft/TypeScript-TmLanguage)
|
||||||
66. Web Background Synchronization (https://github.com/WICG/background-sync)
|
66. TypeScript-TmLanguage version 1.0.0 (https://github.com/microsoft/TypeScript-TmLanguage)
|
||||||
|
67. Unicode version 12.0.0 (https://home.unicode.org/)
|
||||||
|
68. vscode-codicons version 0.0.14 (https://github.com/microsoft/vscode-codicons)
|
||||||
|
69. vscode-logfile-highlighter version 2.15.0 (https://github.com/emilast/vscode-logfile-highlighter)
|
||||||
|
70. vscode-swift version 0.0.1 (https://github.com/owensd/vscode-swift)
|
||||||
|
71. vscode-win32-app-container-tokens (https://github.com/microsoft/vscode-win32-app-container-tokens)
|
||||||
|
72. Web Background Synchronization (https://github.com/WICG/background-sync)
|
||||||
|
|
||||||
|
|
||||||
%% atom/language-clojure NOTICES AND INFORMATION BEGIN HERE
|
%% atom/language-clojure NOTICES AND INFORMATION BEGIN HERE
|
||||||
@@ -1467,7 +1473,50 @@ END OF make-error NOTICES AND INFORMATION
|
|||||||
=========================================
|
=========================================
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2021 REditorSupport
|
Copyright (c) 2014 Darin Morrison
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
=========================================
|
||||||
|
END OF freebroccolo/atom-language-swift NOTICES AND INFORMATION
|
||||||
|
|
||||||
|
%% HTML 5.1 W3C Working Draft NOTICES AND INFORMATION BEGIN HERE
|
||||||
|
=========================================
|
||||||
|
Copyright © 2015 W3C® (MIT, ERCIM, Keio, Beihang). This software or document includes material copied
|
||||||
|
from or derived from HTML 5.1 W3C Working Draft (http://www.w3.org/TR/2015/WD-html51-20151008/.)
|
||||||
|
|
||||||
|
THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT
|
||||||
|
NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF
|
||||||
|
THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY
|
||||||
|
PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
|
||||||
|
|
||||||
|
COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE
|
||||||
|
DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.
|
||||||
|
|
||||||
|
The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to this document or its contents
|
||||||
|
without specific, written prior permission. Title to copyright in this document will at all times remain with copyright holders.
|
||||||
|
=========================================
|
||||||
|
END OF HTML 5.1 W3C Working Draft NOTICES AND INFORMATION
|
||||||
|
|
||||||
|
%% Ikuyadeu/vscode-R NOTICES AND INFORMATION BEGIN HERE
|
||||||
|
=========================================
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2022 REditorSupport
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -1493,58 +1542,247 @@ END OF mark.js NOTICES AND INFORMATION
|
|||||||
=========================================
|
=========================================
|
||||||
This software is released under the MIT license:
|
This software is released under the MIT license:
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
this software and associated documentation files (the "Software"), to deal in
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
the Software without restriction, including without limitation the rights to
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
subject to the following conditions:
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
=========================================
|
||||||
|
END OF ionide/ionide-fsgrammar NOTICES AND INFORMATION
|
||||||
|
|
||||||
|
%% James-Yu/LaTeX-Workshop NOTICES AND INFORMATION BEGIN HERE
|
||||||
|
=========================================
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2016 James Yu
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
The above copyright notice and this permission notice shall be included in all
|
||||||
copies or substantial portions of the Software.
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
=========================================
|
=========================================
|
||||||
END OF minimist NOTICES AND INFORMATION
|
END OF James-Yu/LaTeX-Workshop NOTICES AND INFORMATION
|
||||||
|
|
||||||
%% moment NOTICES AND INFORMATION BEGIN HERE
|
%% jeff-hykin/better-c-syntax NOTICES AND INFORMATION BEGIN HERE
|
||||||
=========================================
|
=========================================
|
||||||
Copyright (c) JS Foundation and other contributors
|
MIT License
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person
|
Copyright (c) 2019 Jeff Hykin
|
||||||
obtaining a copy of this software and associated documentation
|
|
||||||
files (the "Software"), to deal in the Software without
|
|
||||||
restriction, including without limitation the rights to use,
|
|
||||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the
|
|
||||||
Software is furnished to do so, subject to the following
|
|
||||||
conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
included in all copies or substantial portions of the Software.
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
The above copyright notice and this permission notice shall be included in all
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
copies or substantial portions of the Software.
|
||||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
OTHER DEALINGS IN THE SOFTWARE.
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
=========================================
|
=========================================
|
||||||
END OF moment NOTICES AND INFORMATION
|
END OF jeff-hykin/better-c-syntax NOTICES AND INFORMATION
|
||||||
|
|
||||||
|
%% jeff-hykin/better-cpp-syntax NOTICES AND INFORMATION BEGIN HERE
|
||||||
%% mxgraph NOTICES AND INFORMATION BEGIN HERE
|
|
||||||
=========================================
|
=========================================
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
MIT License
|
||||||
|
|
||||||
1. Definitions.
|
Copyright (c) 2019 Jeff Hykin
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
=========================================
|
||||||
|
END OF jeff-hykin/better-cpp-syntax NOTICES AND INFORMATION
|
||||||
|
|
||||||
|
%% jeff-hykin/better-objc-syntax NOTICES AND INFORMATION BEGIN HERE
|
||||||
|
=========================================
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2019 Jeff Hykin
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
=========================================
|
||||||
|
END OF jeff-hykin/better-objc-syntax NOTICES AND INFORMATION
|
||||||
|
|
||||||
|
%% jeff-hykin/better-objcpp-syntax NOTICES AND INFORMATION BEGIN HERE
|
||||||
|
=========================================
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2019 Jeff Hykin
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
=========================================
|
||||||
|
END OF jeff-hykin/better-objcpp-syntax NOTICES AND INFORMATION
|
||||||
|
|
||||||
|
%% jlelong/vscode-latex-basics NOTICES AND INFORMATION BEGIN HERE
|
||||||
|
=========================================
|
||||||
|
Copyright (c) vscode-latex-basics authors
|
||||||
|
|
||||||
|
If not otherwise specified (see below), files in this repository fall under the MIT License
|
||||||
|
|
||||||
|
|
||||||
|
The file syntaxes/LaTeX.tmLanguage.json is based on https://github.com/textmate/latex.tmbundle/blob/master/Syntaxes/LaTeX.plist
|
||||||
|
but has been largely modified. The original file falls under the following license
|
||||||
|
|
||||||
|
Permission to copy, use, modify, sell and distribute this
|
||||||
|
software is granted. This software is provided "as is" without
|
||||||
|
express or implied warranty, and with no claim as to its
|
||||||
|
suitability for any purpose.
|
||||||
|
|
||||||
|
The file syntaxes/markdown-latex-combined.tmLanguage.json is generated from the Markdown grammar
|
||||||
|
included in VSCode and falls under the license described in markdown-latex-combined-license.txt.
|
||||||
|
|
||||||
|
The file syntaxes/cpp-grammar-bailout.tmLanguage.json is generated from https://github.com/jeff-hykin/better-cpp-syntax
|
||||||
|
and falls under the license described in cpp-bailout-license.txt.
|
||||||
|
=========================================
|
||||||
|
END OF jlelong/vscode-latex-basics NOTICES AND INFORMATION
|
||||||
|
|
||||||
|
%% js-beautify NOTICES AND INFORMATION BEGIN HERE
|
||||||
|
=========================================
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
=========================================
|
||||||
|
END OF js-beautify NOTICES AND INFORMATION
|
||||||
|
|
||||||
|
%% JuliaEditorSupport/atom-language-julia NOTICES AND INFORMATION BEGIN HERE
|
||||||
|
=========================================
|
||||||
|
The atom-language-julia package is licensed under the MIT "Expat" License:
|
||||||
|
|
||||||
|
> Copyright (c) 2015
|
||||||
|
>
|
||||||
|
> Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
> a copy of this software and associated documentation files (the
|
||||||
|
> "Software"), to deal in the Software without restriction, including
|
||||||
|
> without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
> distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
> permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
> the following conditions:
|
||||||
|
>
|
||||||
|
> The above copyright notice and this permission notice shall be
|
||||||
|
> included in all copies or substantial portions of the Software.
|
||||||
|
>
|
||||||
|
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
=========================================
|
||||||
|
END OF JuliaEditorSupport/atom-language-julia NOTICES AND INFORMATION
|
||||||
|
|
||||||
|
%% Jxck/assert NOTICES AND INFORMATION BEGIN HERE
|
||||||
|
=========================================
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2011 Jxck
|
||||||
|
|
||||||
|
Originally from node.js (http://nodejs.org)
|
||||||
|
Copyright Joyent, Inc.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
=========================================
|
||||||
|
END OF Jxck/assert NOTICES AND INFORMATION
|
||||||
|
|
||||||
|
%% language-docker NOTICES AND INFORMATION BEGIN HERE
|
||||||
|
=========================================
|
||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
https://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
@@ -1603,14 +1841,14 @@ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|||||||
on behalf of whom a Contribution has been received by Licensor and
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
subsequently incorporated within the Work.
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
Work and such Derivative Works in Source or Object form.
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
(except as stated in this section) patent license to make, have made,
|
(except as stated in this section) patent license to make, have made,
|
||||||
@@ -1626,7 +1864,7 @@ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|||||||
granted to You under this License for that Work shall terminate
|
granted to You under this License for that Work shall terminate
|
||||||
as of the date such litigation is filed.
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
modifications, and in Source or Object form, provided that You
|
modifications, and in Source or Object form, provided that You
|
||||||
meet the following conditions:
|
meet the following conditions:
|
||||||
@@ -1660,11 +1898,6 @@ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|||||||
that such additional attribution notices cannot be construed
|
that such additional attribution notices cannot be construed
|
||||||
as modifying the License.
|
as modifying the License.
|
||||||
|
|
||||||
(e) Neither the Work nor Derivative Works may be used or form any
|
|
||||||
part of a larger work that integrates or is supposed to be
|
|
||||||
integrated with a product or service owned or marketed by an
|
|
||||||
Atlassian entity, including its successors and assignees in title.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
You may add Your own copyright statement to Your modifications and
|
||||||
may provide additional or different license terms and conditions
|
may provide additional or different license terms and conditions
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
@@ -1672,7 +1905,7 @@ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|||||||
reproduction, and distribution of the Work otherwise complies with
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
the conditions stated in this License.
|
the conditions stated in this License.
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
this License, without any additional terms or conditions.
|
this License, without any additional terms or conditions.
|
||||||
@@ -1680,12 +1913,12 @@ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|||||||
the terms of any separate license agreement you may have executed
|
the terms of any separate license agreement you may have executed
|
||||||
with Licensor regarding such Contributions.
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
except as required for reasonable and customary use in describing the
|
except as required for reasonable and customary use in describing the
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
@@ -1695,7 +1928,7 @@ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|||||||
appropriateness of using or redistributing the Work and assume any
|
appropriateness of using or redistributing the Work and assume any
|
||||||
risks associated with Your exercise of permissions under this License.
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
unless required by applicable law (such as deliberate and grossly
|
unless required by applicable law (such as deliberate and grossly
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
@@ -1707,7 +1940,7 @@ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|||||||
other commercial damages or losses), even if such Contributor
|
other commercial damages or losses), even if such Contributor
|
||||||
has been advised of the possibility of such damages.
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
or other liability obligations and/or rights consistent with this
|
or other liability obligations and/or rights consistent with this
|
||||||
@@ -1718,18 +1951,176 @@ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|||||||
incurred by, or claims asserted against, such Contributor by reason
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
of your accepting any such warranty or additional liability.
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
//SEIBERT/MEDIA GmbH, Wiesbaden, Germany is the exclusive licensee of
|
Copyright 2013-2018 Docker, Inc.
|
||||||
JGraph for software products based on this codebase within the Atlassian
|
|
||||||
ecosystem of products.
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
=========================================
|
=========================================
|
||||||
END OF mxgraph NOTICES AND INFORMATION
|
END OF language-docker NOTICES AND INFORMATION
|
||||||
|
|
||||||
%% native-keymap NOTICES AND INFORMATION BEGIN HERE
|
%% language-less NOTICES AND INFORMATION BEGIN HERE
|
||||||
=========================================
|
=========================================
|
||||||
Copyright (c) Microsoft Corporation
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2014 GitHub Inc.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
|
||||||
|
This package was derived from a TextMate bundle located at
|
||||||
|
https://github.com/textmate/less.tmbundle and distributed under the following
|
||||||
|
license, located in `LICENSE.md`:
|
||||||
|
|
||||||
|
Copyright (c) 2010 Scott Kyle and Rasmus Andersson
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
=========================================
|
||||||
|
END OF language-less NOTICES AND INFORMATION
|
||||||
|
|
||||||
|
%% language-php NOTICES AND INFORMATION BEGIN HERE
|
||||||
|
=========================================
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2014 GitHub Inc.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
|
||||||
|
This package was derived from a TextMate bundle located at
|
||||||
|
https://github.com/textmate/php.tmbundle and distributed under the following
|
||||||
|
license, located in `README.mdown`:
|
||||||
|
|
||||||
|
Permission to copy, use, modify, sell and distribute this
|
||||||
|
software is granted. This software is provided "as is" without
|
||||||
|
express or implied warranty, and with no claim as to its
|
||||||
|
suitability for any purpose.
|
||||||
|
=========================================
|
||||||
|
END OF language-php NOTICES AND INFORMATION
|
||||||
|
|
||||||
|
%% MagicStack/MagicPython NOTICES AND INFORMATION BEGIN HERE
|
||||||
|
=========================================
|
||||||
|
The MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2015-present MagicStack Inc. http://magic.io
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
=========================================
|
||||||
|
END OF MagicStack/MagicPython NOTICES AND INFORMATION
|
||||||
|
|
||||||
|
%% marked NOTICES AND INFORMATION BEGIN HERE
|
||||||
|
=========================================
|
||||||
|
information
|
||||||
|
|
||||||
|
## Contribution License Agreement
|
||||||
|
|
||||||
|
If you contribute code to this project, you are implicitly allowing your code
|
||||||
|
to be distributed under the MIT license. You are also implicitly verifying that
|
||||||
|
all code is your original work. `</legalese>`
|
||||||
|
|
||||||
|
## Marked
|
||||||
|
|
||||||
|
Copyright (c) 2018+, MarkedJS (https://github.com/markedjs/)
|
||||||
|
Copyright (c) 2011-2018, Christopher Jeffrey (https://github.com/chjj/)
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
|
||||||
|
## Markdown
|
||||||
|
|
||||||
|
Copyright © 2004, John Gruber
|
||||||
|
http://daringfireball.net/
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
@@ -1958,23 +2349,11 @@ THE SOFTWARE.
|
|||||||
=========================================
|
=========================================
|
||||||
END OF optimist NOTICES AND INFORMATION
|
END OF optimist NOTICES AND INFORMATION
|
||||||
|
|
||||||
%% primeng NOTICES AND INFORMATION BEGIN HERE
|
%% vscode-swift NOTICES AND INFORMATION BEGIN HERE
|
||||||
=========================================
|
=========================================
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2016-2017 PrimeTek
|
Copyright (c) 2015 David Owens II
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
=========================================
|
|
||||||
END OF primeng NOTICES AND INFORMATION
|
|
||||||
|
|
||||||
%% process-nextick-args NOTICES AND INFORMATION BEGIN HERE
|
|
||||||
=========================================
|
|
||||||
Copyright (c) 2012-2015, Christopher Jeffrey (https://github.com/chjj/)
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -1983,174 +2362,45 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|||||||
copies of the Software, and to permit persons to whom the Software is
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
furnished to do so, subject to the following conditions:
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
The above copyright notice and this permission notice shall be included in all
|
||||||
all copies or substantial portions of the Software.
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
THE SOFTWARE.
|
|
||||||
=========================================
|
=========================================
|
||||||
END OF pty.js NOTICES AND INFORMATION
|
END OF vscode-swift NOTICES AND INFORMATION
|
||||||
|
|
||||||
%% PyZMQ NOTICES AND INFORMATION BEGIN HERE
|
%% vscode-win32-app-container-tokens NOTICES AND INFORMATION BEGIN HERE
|
||||||
=========================================
|
=========================================
|
||||||
Copyright (c) 2009-2012, Brian Granger, Min Ragan-Kelley
|
MIT License
|
||||||
|
|
||||||
All rights reserved.
|
Copyright (c) Microsoft Corporation.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
modification, are permitted provided that the following conditions are met:
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
Redistributions of source code must retain the above copyright notice, this
|
The above copyright notice and this permission notice shall be included in all
|
||||||
list of conditions and the following disclaimer.
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
Redistributions in binary form must reproduce the above copyright notice, this
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
list of conditions and the following disclaimer in the documentation and/or
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
other materials provided with the distribution.
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
Neither the name of PyZMQ nor the names of its contributors may be used to
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
endorse or promote products derived from this software without specific prior
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
written permission.
|
SOFTWARE
|
||||||
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
|
||||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
=========================================
|
=========================================
|
||||||
END OF pyzmq NOTICES AND INFORMATION
|
END OF vscode-win32-app-container-tokens NOTICES AND INFORMATION
|
||||||
|
|
||||||
%% reflect-metadata NOTICES AND INFORMATION BEGIN HERE
|
%% Web Background Synchronization NOTICES AND INFORMATION BEGIN HERE
|
||||||
=========================================
|
|
||||||
Apache License
|
|
||||||
|
|
||||||
Version 2.0, January 2004
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
|
|
||||||
|
|
||||||
You must give any other recipients of the Work or Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
You must cause any modified files to carry prominent notices stating that You changed the files; and
|
|
||||||
|
|
||||||
You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
|
|
||||||
|
|
||||||
If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
=========================================
|
|
||||||
END OF reflect-metadata NOTICES AND INFORMATION
|
|
||||||
|
|
||||||
%% request NOTICES AND INFORMATION BEGIN HERE
|
|
||||||
=========================================
|
|
||||||
Apache License
|
|
||||||
|
|
||||||
Version 2.0, January 2004
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
|
|
||||||
|
|
||||||
You must give any other recipients of the Work or Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
You must cause any modified files to carry prominent notices stating that You changed the files; and
|
|
||||||
|
|
||||||
You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
|
|
||||||
|
|
||||||
If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
=========================================
|
|
||||||
END OF request NOTICES AND INFORMATION
|
|
||||||
|
|
||||||
%% rxjs NOTICES AND INFORMATION BEGIN HERE
|
|
||||||
=========================================
|
=========================================
|
||||||
Apache License
|
Apache License
|
||||||
Version 2.0, January 2004
|
Version 2.0, January 2004
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
2022-10-06T02:27:18.022Z
|
2022-07-19T07:55:26.168Z
|
||||||
|
|||||||
1
build/.gitignore
vendored
Normal file
1
build/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.yarnrc
|
||||||
@@ -139,6 +139,14 @@ vscode-encrypt/binding.gyp
|
|||||||
vscode-encrypt/README.md
|
vscode-encrypt/README.md
|
||||||
!vscode-encrypt/build/Release/vscode-encrypt-native.node
|
!vscode-encrypt/build/Release/vscode-encrypt-native.node
|
||||||
|
|
||||||
|
vscode-policy-watcher/build/**
|
||||||
|
vscode-policy-watcher/.husky/**
|
||||||
|
vscode-policy-watcher/src/**
|
||||||
|
vscode-policy-watcher/binding.gyp
|
||||||
|
vscode-policy-watcher/README.md
|
||||||
|
vscode-policy-watcher/index.d.ts
|
||||||
|
!vscode-policy-watcher/build/Release/vscode-policy-watcher.node
|
||||||
|
|
||||||
vscode-windows-ca-certs/**/*
|
vscode-windows-ca-certs/**/*
|
||||||
!vscode-windows-ca-certs/package.json
|
!vscode-windows-ca-certs/package.json
|
||||||
!vscode-windows-ca-certs/**/*.node
|
!vscode-windows-ca-certs/**/*.node
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
@@ -14,7 +14,7 @@ shasum.update(fs.readFileSync(path.join(ROOT, 'build/.cachesalt')));
|
|||||||
shasum.update(fs.readFileSync(path.join(ROOT, '.yarnrc')));
|
shasum.update(fs.readFileSync(path.join(ROOT, '.yarnrc')));
|
||||||
shasum.update(fs.readFileSync(path.join(ROOT, 'remote/.yarnrc')));
|
shasum.update(fs.readFileSync(path.join(ROOT, 'remote/.yarnrc')));
|
||||||
// Add `package.json` and `yarn.lock` files
|
// Add `package.json` and `yarn.lock` files
|
||||||
for (let dir of dirs) {
|
for (const dir of dirs) {
|
||||||
const packageJsonPath = path.join(ROOT, dir, 'package.json');
|
const packageJsonPath = path.join(ROOT, dir, 'package.json');
|
||||||
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath).toString());
|
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath).toString());
|
||||||
const relevantPackageJsonSections = {
|
const relevantPackageJsonSections = {
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as crypto from 'crypto';
|
import * as crypto from 'crypto';
|
||||||
@@ -19,7 +17,7 @@ shasum.update(fs.readFileSync(path.join(ROOT, '.yarnrc')));
|
|||||||
shasum.update(fs.readFileSync(path.join(ROOT, 'remote/.yarnrc')));
|
shasum.update(fs.readFileSync(path.join(ROOT, 'remote/.yarnrc')));
|
||||||
|
|
||||||
// Add `package.json` and `yarn.lock` files
|
// Add `package.json` and `yarn.lock` files
|
||||||
for (let dir of dirs) {
|
for (const dir of dirs) {
|
||||||
const packageJsonPath = path.join(ROOT, dir, 'package.json');
|
const packageJsonPath = path.join(ROOT, dir, 'package.json');
|
||||||
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath).toString());
|
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath).toString());
|
||||||
const relevantPackageJsonSections = {
|
const relevantPackageJsonSections = {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
const crypto = require("crypto");
|
const crypto = require("crypto");
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import { Readable } from 'stream';
|
import { Readable } from 'stream';
|
||||||
import * as crypto from 'crypto';
|
import * as crypto from 'crypto';
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const identity_1 = require("@azure/identity");
|
const identity_1 = require("@azure/identity");
|
||||||
const cosmos_1 = require("@azure/cosmos");
|
const cosmos_1 = require("@azure/cosmos");
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import { ClientSecretCredential } from '@azure/identity';
|
import { ClientSecretCredential } from '@azure/identity';
|
||||||
import { CosmosClient } from '@azure/cosmos';
|
import { CosmosClient } from '@azure/cosmos';
|
||||||
import { retry } from './retry';
|
import { retry } from './retry';
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const identity_1 = require("@azure/identity");
|
const identity_1 = require("@azure/identity");
|
||||||
const cosmos_1 = require("@azure/cosmos");
|
const cosmos_1 = require("@azure/cosmos");
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import { ClientSecretCredential } from '@azure/identity';
|
import { ClientSecretCredential } from '@azure/identity';
|
||||||
import { CosmosClient } from '@azure/cosmos';
|
import { CosmosClient } from '@azure/cosmos';
|
||||||
import { retry } from './retry';
|
import { retry } from './retry';
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.retry = void 0;
|
exports.retry = void 0;
|
||||||
async function retry(fn) {
|
async function retry(fn) {
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
export async function retry<T>(fn: () => Promise<T>): Promise<T> {
|
export async function retry<T>(fn: () => Promise<T>): Promise<T> {
|
||||||
let lastError: Error | undefined;
|
let lastError: Error | undefined;
|
||||||
|
|
||||||
|
|||||||
@@ -35,25 +35,66 @@ steps:
|
|||||||
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
|
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
|
||||||
displayName: Merge 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
|
||||||
|
condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))
|
||||||
|
|
||||||
|
- 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: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
npx https://aka.ms/enablesecurefeed standAlone
|
npx https://aka.ms/enablesecurefeed standAlone
|
||||||
timeoutInMinutes: 5
|
timeoutInMinutes: 5
|
||||||
retryCountOnTaskFailure: 3
|
retryCountOnTaskFailure: 3
|
||||||
condition: and(succeeded(), eq(variables['ENABLE_TERRAPIN'], 'true'))
|
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
|
||||||
displayName: Switch to Terrapin packages
|
displayName: Switch to Terrapin packages
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
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
|
for i in {1..3}; do # try 3 times, for Terrapin
|
||||||
yarn --cwd build --frozen-lockfile --check-files && break
|
yarn --frozen-lockfile --check-files && break
|
||||||
if [ $i -eq 3 ]; then
|
if [ $i -eq 3 ]; then
|
||||||
echo "Yarn failed too many times" >&2
|
echo "Yarn failed too many times" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "Yarn failed $i, trying again..."
|
echo "Yarn failed $i, trying again..."
|
||||||
done
|
done
|
||||||
displayName: Install build dependencies
|
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
|
||||||
|
|
||||||
- download: current
|
- download: current
|
||||||
artifact: unsigned_vscode_client_darwin_$(VSCODE_ARCH)_archive
|
artifact: unsigned_vscode_client_darwin_$(VSCODE_ARCH)_archive
|
||||||
|
|||||||
@@ -1,159 +1,41 @@
|
|||||||
|
parameters:
|
||||||
|
- name: VSCODE_QUALITY
|
||||||
|
type: string
|
||||||
|
- name: VSCODE_RUN_UNIT_TESTS
|
||||||
|
type: boolean
|
||||||
|
- name: VSCODE_RUN_INTEGRATION_TESTS
|
||||||
|
type: boolean
|
||||||
|
- name: VSCODE_RUN_SMOKE_TESTS
|
||||||
|
type: boolean
|
||||||
|
|
||||||
steps:
|
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: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
||||||
yarn npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install"
|
yarn npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install"
|
||||||
displayName: Download Electron and Playwright
|
displayName: Download Electron and Playwright
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
|
|
||||||
|
|
||||||
# Setting hardened entitlements is a requirement for:
|
- ${{ if eq(parameters.VSCODE_RUN_UNIT_TESTS, true) }}:
|
||||||
# * Running tests on Big Sur (because Big Sur has additional security precautions)
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
security create-keychain -p pwd $(agent.tempdirectory)/buildagent.keychain
|
./scripts/test.sh --tfs "Unit Tests"
|
||||||
security default-keychain -s $(agent.tempdirectory)/buildagent.keychain
|
displayName: Run unit tests (Electron)
|
||||||
security unlock-keychain -p pwd $(agent.tempdirectory)/buildagent.keychain
|
timeoutInMinutes: 15
|
||||||
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
|
||||||
|
yarn test-node
|
||||||
|
displayName: Run unit tests (node.js)
|
||||||
|
timeoutInMinutes: 15
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
DEBUG=*browser* yarn test-browser-no-install --sequential --browser chromium --browser webkit --tfs "Browser Unit Tests"
|
||||||
|
displayName: Run unit tests (Browser, Chromium & Webkit)
|
||||||
|
timeoutInMinutes: 30
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
./scripts/test.sh --build --tfs "Unit Tests"
|
./scripts/test.sh --build --tfs "Unit Tests"
|
||||||
@@ -172,6 +54,36 @@ steps:
|
|||||||
displayName: Run unit tests (Browser, Chromium & Webkit)
|
displayName: Run unit tests (Browser, Chromium & Webkit)
|
||||||
timeoutInMinutes: 30
|
timeoutInMinutes: 30
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}:
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
yarn gulp \
|
||||||
|
compile-extension:configuration-editing \
|
||||||
|
compile-extension:css-language-features-server \
|
||||||
|
compile-extension:emmet \
|
||||||
|
compile-extension:git \
|
||||||
|
compile-extension:github-authentication \
|
||||||
|
compile-extension:html-language-features-server \
|
||||||
|
compile-extension:ipynb \
|
||||||
|
compile-extension:json-language-features-server \
|
||||||
|
compile-extension:markdown-language-features-server \
|
||||||
|
compile-extension:markdown-language-features \
|
||||||
|
compile-extension-media \
|
||||||
|
compile-extension:microsoft-authentication \
|
||||||
|
compile-extension:typescript-language-features \
|
||||||
|
compile-extension:vscode-api-tests \
|
||||||
|
compile-extension:vscode-colorize-tests \
|
||||||
|
compile-extension:vscode-notebook-tests \
|
||||||
|
compile-extension:vscode-test-resolver
|
||||||
|
displayName: Build integration tests
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- script: |
|
||||||
|
./scripts/test-integration.sh --tfs "Integration Tests"
|
||||||
|
displayName: Run integration tests (Electron)
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
# Figure out the full absolute path of the product we just built
|
# Figure out the full absolute path of the product we just built
|
||||||
# including the remote server and configure the integration tests
|
# including the remote server and configure the integration tests
|
||||||
@@ -202,6 +114,7 @@ steps:
|
|||||||
displayName: Run integration tests (Remote)
|
displayName: Run integration tests (Remote)
|
||||||
timeoutInMinutes: 20
|
timeoutInMinutes: 20
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
ps -ef
|
ps -ef
|
||||||
@@ -209,13 +122,19 @@ steps:
|
|||||||
continueOnError: true
|
continueOnError: true
|
||||||
condition: succeededOrFailed()
|
condition: succeededOrFailed()
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-darwin-$(VSCODE_ARCH)" \
|
yarn --cwd test/smoke compile
|
||||||
yarn smoketest-no-compile --web --tracing --headless
|
displayName: Compile smoke tests
|
||||||
timeoutInMinutes: 10
|
|
||||||
displayName: Run smoke tests (Browser, Chromium)
|
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
yarn smoketest-no-compile --tracing
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
displayName: Run smoke tests (Electron)
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
|
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
|
||||||
@@ -226,6 +145,14 @@ steps:
|
|||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
|
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-darwin-$(VSCODE_ARCH)" \
|
||||||
|
yarn smoketest-no-compile --web --tracing --headless
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
displayName: Run smoke tests (Browser, Chromium)
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
yarn gulp compile-extension:vscode-test-resolver
|
||||||
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
|
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
|
||||||
APP_NAME="`ls $APP_ROOT | head -n 1`"
|
APP_NAME="`ls $APP_ROOT | head -n 1`"
|
||||||
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin-$(VSCODE_ARCH)" \
|
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin-$(VSCODE_ARCH)" \
|
||||||
@@ -240,10 +167,16 @@ steps:
|
|||||||
continueOnError: true
|
continueOnError: true
|
||||||
condition: succeededOrFailed()
|
condition: succeededOrFailed()
|
||||||
|
|
||||||
|
- ${{ if or(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
|
||||||
- task: PublishPipelineArtifact@0
|
- task: PublishPipelineArtifact@0
|
||||||
inputs:
|
inputs:
|
||||||
artifactName: crash-dump-macos-$(VSCODE_ARCH)
|
|
||||||
targetPath: .build/crashes
|
targetPath: .build/crashes
|
||||||
|
${{ if and(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
|
artifactName: crash-dump-macos-$(VSCODE_ARCH)-integration-$(System.JobAttempt)
|
||||||
|
${{ elseif and(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
|
||||||
|
artifactName: crash-dump-macos-$(VSCODE_ARCH)-smoke-$(System.JobAttempt)
|
||||||
|
${{ else }}:
|
||||||
|
artifactName: crash-dump-macos-$(VSCODE_ARCH)-$(System.JobAttempt)
|
||||||
displayName: "Publish Crash Reports"
|
displayName: "Publish Crash Reports"
|
||||||
continueOnError: true
|
continueOnError: true
|
||||||
condition: failed()
|
condition: failed()
|
||||||
@@ -252,19 +185,29 @@ steps:
|
|||||||
# (if any), we need the compiled native modules too
|
# (if any), we need the compiled native modules too
|
||||||
- task: PublishPipelineArtifact@0
|
- task: PublishPipelineArtifact@0
|
||||||
inputs:
|
inputs:
|
||||||
artifactName: node-modules-macos-$(VSCODE_ARCH)
|
|
||||||
targetPath: node_modules
|
targetPath: node_modules
|
||||||
|
${{ if and(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
|
artifactName: node-modules-macos-$(VSCODE_ARCH)-integration-$(System.JobAttempt)
|
||||||
|
${{ elseif and(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
|
||||||
|
artifactName: node-modules-macos-$(VSCODE_ARCH)-smoke-$(System.JobAttempt)
|
||||||
|
${{ else }}:
|
||||||
|
artifactName: node-modules-macos-$(VSCODE_ARCH)-$(System.JobAttempt)
|
||||||
displayName: "Publish Node Modules"
|
displayName: "Publish Node Modules"
|
||||||
continueOnError: true
|
continueOnError: true
|
||||||
condition: failed()
|
condition: failed()
|
||||||
|
|
||||||
- task: PublishPipelineArtifact@0
|
- task: PublishPipelineArtifact@0
|
||||||
inputs:
|
inputs:
|
||||||
artifactName: logs-macos-$(VSCODE_ARCH)-$(System.JobAttempt)
|
|
||||||
targetPath: .build/logs
|
targetPath: .build/logs
|
||||||
|
${{ if and(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
|
artifactName: logs-macos-$(VSCODE_ARCH)-integration-$(System.JobAttempt)
|
||||||
|
${{ elseif and(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
|
||||||
|
artifactName: logs-macos-$(VSCODE_ARCH)-smoke-$(System.JobAttempt)
|
||||||
|
${{ else }}:
|
||||||
|
artifactName: logs-macos-$(VSCODE_ARCH)-$(System.JobAttempt)
|
||||||
displayName: "Publish Log Files"
|
displayName: "Publish Log Files"
|
||||||
continueOnError: true
|
continueOnError: true
|
||||||
condition: failed()
|
condition: succeededOrFailed()
|
||||||
|
|
||||||
- task: PublishTestResults@2
|
- task: PublishTestResults@2
|
||||||
displayName: Publish Tests Results
|
displayName: Publish Tests Results
|
||||||
|
|||||||
@@ -51,6 +51,50 @@ steps:
|
|||||||
set -e
|
set -e
|
||||||
tar -xzf .build/node_modules_cache/cache.tgz
|
tar -xzf .build/node_modules_cache/cache.tgz
|
||||||
displayName: Extract node_modules cache
|
displayName: Extract node_modules cache
|
||||||
|
condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))
|
||||||
|
|
||||||
|
- 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
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
|
|||||||
@@ -1,8 +1,26 @@
|
|||||||
|
parameters:
|
||||||
|
- name: VSCODE_PUBLISH
|
||||||
|
type: boolean
|
||||||
|
- name: VSCODE_QUALITY
|
||||||
|
type: string
|
||||||
|
- name: VSCODE_RUN_UNIT_TESTS
|
||||||
|
type: boolean
|
||||||
|
- name: VSCODE_RUN_INTEGRATION_TESTS
|
||||||
|
type: boolean
|
||||||
|
- name: VSCODE_RUN_SMOKE_TESTS
|
||||||
|
type: boolean
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- checkout: self
|
||||||
|
fetchDepth: 1
|
||||||
|
retryCountOnTaskFailure: 3
|
||||||
|
|
||||||
- task: NodeTool@0
|
- task: NodeTool@0
|
||||||
inputs:
|
inputs:
|
||||||
versionSpec: "16.x"
|
versionSpec: "16.x"
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- task: AzureKeyVault@1
|
- task: AzureKeyVault@1
|
||||||
displayName: "Azure Key Vault: Get Secrets"
|
displayName: "Azure Key Vault: Get Secrets"
|
||||||
inputs:
|
inputs:
|
||||||
@@ -10,17 +28,20 @@ steps:
|
|||||||
KeyVaultName: vscode
|
KeyVaultName: vscode
|
||||||
SecretsFilter: "github-distro-mixin-password,macos-developer-certificate,macos-developer-certificate-key"
|
SecretsFilter: "github-distro-mixin-password,macos-developer-certificate,macos-developer-certificate-key"
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- task: DownloadPipelineArtifact@2
|
- task: DownloadPipelineArtifact@2
|
||||||
inputs:
|
inputs:
|
||||||
artifact: Compilation
|
artifact: Compilation
|
||||||
path: $(Build.ArtifactStagingDirectory)
|
path: $(Build.ArtifactStagingDirectory)
|
||||||
displayName: Download compilation output
|
displayName: Download compilation output
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
tar -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz
|
tar -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz
|
||||||
displayName: Extract compilation output
|
displayName: Extract compilation output
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
cat << EOF > ~/.netrc
|
cat << EOF > ~/.netrc
|
||||||
@@ -33,6 +54,7 @@ steps:
|
|||||||
git config user.name "VSCode"
|
git config user.name "VSCode"
|
||||||
displayName: Prepare tooling
|
displayName: Prepare tooling
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
|
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
|
||||||
@@ -41,6 +63,7 @@ steps:
|
|||||||
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
|
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
|
||||||
displayName: Checkout override commit
|
displayName: Checkout override commit
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
|
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
|
||||||
@@ -64,13 +87,6 @@ steps:
|
|||||||
condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))
|
condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))
|
||||||
displayName: Extract node_modules cache
|
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: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
npx https://aka.ms/enablesecurefeed standAlone
|
npx https://aka.ms/enablesecurefeed standAlone
|
||||||
@@ -107,23 +123,27 @@ steps:
|
|||||||
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
|
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
|
||||||
displayName: Create node_modules archive
|
displayName: Create node_modules archive
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
# This script brings in the right resources (images, icons, etc) based on the quality (insiders, stable, exploration)
|
# This script brings in the right resources (images, icons, etc) based on the quality (insiders, stable, exploration)
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
node build/azure-pipelines/mixin
|
node build/azure-pipelines/mixin
|
||||||
displayName: Mix in quality
|
displayName: Mix in quality
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
||||||
yarn gulp vscode-darwin-$(VSCODE_ARCH)-min-ci
|
yarn gulp vscode-darwin-$(VSCODE_ARCH)-min-ci
|
||||||
displayName: Build client
|
displayName: Build client
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
node build/azure-pipelines/mixin --server
|
node build/azure-pipelines/mixin --server
|
||||||
displayName: Mix in server quality
|
displayName: Mix in server quality
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
||||||
@@ -132,6 +152,22 @@ steps:
|
|||||||
yarn gulp vscode-reh-web-darwin-$(VSCODE_ARCH)-min-ci
|
yarn gulp vscode-reh-web-darwin-$(VSCODE_ARCH)-min-ci
|
||||||
displayName: Build Server
|
displayName: Build Server
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
||||||
|
yarn gulp "transpile-client" "transpile-extensions"
|
||||||
|
displayName: Transpile
|
||||||
|
|
||||||
|
- ${{ if or(eq(parameters.VSCODE_RUN_UNIT_TESTS, true), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
|
||||||
|
- template: product-build-darwin-test.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_QUALITY: ${{ parameters.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: ${{ parameters.VSCODE_RUN_UNIT_TESTS }}
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: ${{ parameters.VSCODE_RUN_INTEGRATION_TESTS }}
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: ${{ parameters.VSCODE_RUN_SMOKE_TESTS }}
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
# Setting hardened entitlements is a requirement for:
|
# Setting hardened entitlements is a requirement for:
|
||||||
# * Apple notarization
|
# * Apple notarization
|
||||||
# * Running tests on Big Sur (because Big Sur has additional security precautions)
|
# * Running tests on Big Sur (because Big Sur has additional security precautions)
|
||||||
@@ -146,11 +182,13 @@ steps:
|
|||||||
VSCODE_ARCH=$(VSCODE_ARCH) DEBUG=electron-osx-sign* node build/darwin/sign.js
|
VSCODE_ARCH=$(VSCODE_ARCH) DEBUG=electron-osx-sign* node build/darwin/sign.js
|
||||||
displayName: Set Hardened Entitlements
|
displayName: Set Hardened Entitlements
|
||||||
|
|
||||||
|
- ${{ if and(eq(parameters.VSCODE_PUBLISH, true), eq(parameters.VSCODE_RUN_UNIT_TESTS, false), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
pushd $(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH) && zip -r -X -y $(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH).zip * && popd
|
pushd $(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH) && zip -r -X -y $(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH).zip * && popd
|
||||||
displayName: Archive build
|
displayName: Archive build
|
||||||
|
|
||||||
|
- ${{ if and(eq(parameters.VSCODE_PUBLISH, true), eq(parameters.VSCODE_RUN_UNIT_TESTS, false), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
@@ -161,18 +199,46 @@ steps:
|
|||||||
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
|
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
|
displayName: Prepare to publish servers
|
||||||
|
|
||||||
|
- ${{ if and(eq(parameters.VSCODE_PUBLISH, true), eq(parameters.VSCODE_RUN_UNIT_TESTS, false), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
|
- 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
|
||||||
|
|
||||||
|
- ${{ if and(eq(parameters.VSCODE_PUBLISH, true), eq(parameters.VSCODE_RUN_UNIT_TESTS, false), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
|
- publish: $(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)/_manifest
|
||||||
|
displayName: Publish SBOM (client)
|
||||||
|
artifact: vscode_client_darwin_$(VSCODE_ARCH)_sbom
|
||||||
|
|
||||||
|
- ${{ if and(eq(parameters.VSCODE_PUBLISH, true), eq(parameters.VSCODE_RUN_UNIT_TESTS, false), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, 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
|
||||||
|
|
||||||
|
- ${{ if and(eq(parameters.VSCODE_PUBLISH, true), eq(parameters.VSCODE_RUN_UNIT_TESTS, false), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
|
- publish: $(agent.builddirectory)/vscode-server-darwin-$(VSCODE_ARCH)/_manifest
|
||||||
|
displayName: Publish SBOM (server)
|
||||||
|
artifact: vscode_server_darwin_$(VSCODE_ARCH)_sbom
|
||||||
|
|
||||||
|
- ${{ if and(eq(parameters.VSCODE_PUBLISH, true), eq(parameters.VSCODE_RUN_UNIT_TESTS, false), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
- publish: $(Agent.BuildDirectory)/VSCode-darwin-$(VSCODE_ARCH).zip
|
- publish: $(Agent.BuildDirectory)/VSCode-darwin-$(VSCODE_ARCH).zip
|
||||||
artifact: unsigned_vscode_client_darwin_$(VSCODE_ARCH)_archive
|
artifact: unsigned_vscode_client_darwin_$(VSCODE_ARCH)_archive
|
||||||
displayName: Publish client archive
|
displayName: Publish client archive
|
||||||
|
|
||||||
|
- ${{ if and(eq(parameters.VSCODE_PUBLISH, true), eq(parameters.VSCODE_RUN_UNIT_TESTS, false), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
- publish: $(Agent.BuildDirectory)/vscode-server-darwin-$(VSCODE_ARCH).zip
|
- publish: $(Agent.BuildDirectory)/vscode-server-darwin-$(VSCODE_ARCH).zip
|
||||||
artifact: vscode_server_darwin_$(VSCODE_ARCH)_archive-unsigned
|
artifact: vscode_server_darwin_$(VSCODE_ARCH)_archive-unsigned
|
||||||
displayName: Publish server archive
|
displayName: Publish server archive
|
||||||
|
|
||||||
|
- ${{ if and(eq(parameters.VSCODE_PUBLISH, true), eq(parameters.VSCODE_RUN_UNIT_TESTS, false), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
- publish: $(Agent.BuildDirectory)/vscode-server-darwin-$(VSCODE_ARCH)-web.zip
|
- publish: $(Agent.BuildDirectory)/vscode-server-darwin-$(VSCODE_ARCH)-web.zip
|
||||||
artifact: vscode_web_darwin_$(VSCODE_ARCH)_archive-unsigned
|
artifact: vscode_web_darwin_$(VSCODE_ARCH)_archive-unsigned
|
||||||
displayName: Publish web server archive
|
displayName: Publish web server archive
|
||||||
|
|
||||||
|
- ${{ if and(eq(parameters.VSCODE_PUBLISH, true), eq(parameters.VSCODE_RUN_UNIT_TESTS, false), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
- task: AzureCLI@2
|
- task: AzureCLI@2
|
||||||
inputs:
|
inputs:
|
||||||
azureSubscription: "vscode-builds-subscription"
|
azureSubscription: "vscode-builds-subscription"
|
||||||
@@ -184,6 +250,7 @@ steps:
|
|||||||
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_ID]$env:servicePrincipalId"
|
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_ID]$env:servicePrincipalId"
|
||||||
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_SECRET;issecret=true]$env:servicePrincipalKey"
|
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_SECRET;issecret=true]$env:servicePrincipalKey"
|
||||||
|
|
||||||
|
- ${{ if and(eq(parameters.VSCODE_PUBLISH, true), eq(parameters.VSCODE_RUN_UNIT_TESTS, false), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
AZURE_STORAGE_ACCOUNT="ticino" \
|
AZURE_STORAGE_ACCOUNT="ticino" \
|
||||||
@@ -193,29 +260,5 @@ steps:
|
|||||||
VSCODE_ARCH="$(VSCODE_ARCH)" \
|
VSCODE_ARCH="$(VSCODE_ARCH)" \
|
||||||
node build/azure-pipelines/upload-configuration
|
node build/azure-pipelines/upload-configuration
|
||||||
displayName: Upload configuration (for Bing settings search)
|
displayName: Upload configuration (for Bing settings search)
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), ne(variables['VSCODE_PUBLISH'], 'false'))
|
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'))
|
||||||
continueOnError: true
|
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'))
|
|
||||||
|
|||||||
@@ -112,18 +112,19 @@ steps:
|
|||||||
displayName: Run unit tests
|
displayName: Run unit tests
|
||||||
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
|
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
|
||||||
|
|
||||||
- script: |
|
# {{SQL CARBON TODO}} Reenable "Run Core Integration Tests"
|
||||||
# Figure out the full absolute path of the product we just built
|
# - script: |
|
||||||
# including the remote server and configure the integration tests
|
# # Figure out the full absolute path of the product we just built
|
||||||
# to run with these builds instead of running out of sources.
|
# # including the remote server and configure the integration tests
|
||||||
set -e
|
# # to run with these builds instead of running out of sources.
|
||||||
APP_ROOT=$(agent.builddirectory)/azuredatastudio-darwin-x64
|
# set -e
|
||||||
APP_NAME="`ls $APP_ROOT | head -n 1`"
|
# APP_ROOT=$(agent.builddirectory)/azuredatastudio-darwin-x64
|
||||||
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME/Contents/MacOS/Electron" \
|
# APP_NAME="`ls $APP_ROOT | head -n 1`"
|
||||||
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/azuredatastudio-reh-darwin" \
|
# INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME/Contents/MacOS/Electron" \
|
||||||
./scripts/test-integration.sh --build --tfs "Integration Tests"
|
# VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/azuredatastudio-reh-darwin" \
|
||||||
displayName: Run core integration tests
|
# ./scripts/test-integration.sh --build --tfs "Integration Tests"
|
||||||
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
|
# displayName: Run core integration tests
|
||||||
|
# condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
|
|||||||
@@ -4,9 +4,7 @@ pool:
|
|||||||
trigger:
|
trigger:
|
||||||
branches:
|
branches:
|
||||||
include: ["main", "release/*"]
|
include: ["main", "release/*"]
|
||||||
pr:
|
pr: none
|
||||||
branches:
|
|
||||||
include: ["main", "release/*"]
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- task: NodeTool@0
|
- task: NodeTool@0
|
||||||
|
|||||||
@@ -118,7 +118,9 @@ steps:
|
|||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
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/scripts/install-remote-dependencies.sh
|
docker run -e VSCODE_QUALITY -e GITHUB_TOKEN -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
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: "$(github-distro-mixin-password)"
|
||||||
displayName: Prebuild
|
displayName: Prebuild
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
|
|||||||
272
build/azure-pipelines/linux/product-build-linux-client-test.yml
Normal file
272
build/azure-pipelines/linux/product-build-linux-client-test.yml
Normal file
@@ -0,0 +1,272 @@
|
|||||||
|
parameters:
|
||||||
|
- name: VSCODE_QUALITY
|
||||||
|
type: string
|
||||||
|
- name: VSCODE_RUN_UNIT_TESTS
|
||||||
|
type: boolean
|
||||||
|
- name: VSCODE_RUN_INTEGRATION_TESTS
|
||||||
|
type: boolean
|
||||||
|
- name: VSCODE_RUN_SMOKE_TESTS
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- 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
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 dbus xvfb libgtk-3-0 libgbm1
|
||||||
|
sudo cp build/azure-pipelines/linux/xvfb.init /etc/init.d/xvfb
|
||||||
|
sudo chmod +x /etc/init.d/xvfb
|
||||||
|
sudo update-rc.d xvfb defaults
|
||||||
|
sudo service xvfb start
|
||||||
|
displayName: Setup build environment
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
APP_ROOT=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
|
||||||
|
ELECTRON_ROOT=.build/electron
|
||||||
|
sudo chown root $APP_ROOT/chrome-sandbox
|
||||||
|
sudo chown root $ELECTRON_ROOT/chrome-sandbox
|
||||||
|
sudo chmod 4755 $APP_ROOT/chrome-sandbox
|
||||||
|
sudo chmod 4755 $ELECTRON_ROOT/chrome-sandbox
|
||||||
|
stat $APP_ROOT/chrome-sandbox
|
||||||
|
stat $ELECTRON_ROOT/chrome-sandbox
|
||||||
|
displayName: Change setuid helper binary permission
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_RUN_UNIT_TESTS, true) }}:
|
||||||
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
DISPLAY=:10 ./scripts/test.sh --tfs "Unit Tests"
|
||||||
|
displayName: Run unit tests (Electron)
|
||||||
|
timeoutInMinutes: 15
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
yarn test-node
|
||||||
|
displayName: Run unit tests (node.js)
|
||||||
|
timeoutInMinutes: 15
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
DEBUG=*browser* yarn test-browser-no-install --browser chromium --tfs "Browser Unit Tests"
|
||||||
|
displayName: Run unit tests (Browser, Chromium)
|
||||||
|
timeoutInMinutes: 15
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- 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 --build --browser chromium --tfs "Browser Unit Tests"
|
||||||
|
displayName: Run unit tests (Browser, Chromium)
|
||||||
|
timeoutInMinutes: 15
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}:
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
yarn gulp \
|
||||||
|
compile-extension:configuration-editing \
|
||||||
|
compile-extension:css-language-features-server \
|
||||||
|
compile-extension:emmet \
|
||||||
|
compile-extension:git \
|
||||||
|
compile-extension:github-authentication \
|
||||||
|
compile-extension:html-language-features-server \
|
||||||
|
compile-extension:ipynb \
|
||||||
|
compile-extension:json-language-features-server \
|
||||||
|
compile-extension:markdown-language-features-server \
|
||||||
|
compile-extension:markdown-language-features \
|
||||||
|
compile-extension-media \
|
||||||
|
compile-extension:microsoft-authentication \
|
||||||
|
compile-extension:typescript-language-features \
|
||||||
|
compile-extension:vscode-api-tests \
|
||||||
|
compile-extension:vscode-colorize-tests \
|
||||||
|
compile-extension:vscode-notebook-tests \
|
||||||
|
compile-extension:vscode-test-resolver
|
||||||
|
displayName: Build integration tests
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}:
|
||||||
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
DISPLAY=:10 ./scripts/test-integration.sh --tfs "Integration Tests"
|
||||||
|
displayName: Run integration tests (Electron)
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
./scripts/test-web-integration.sh --browser chromium
|
||||||
|
displayName: Run integration tests (Browser, Chromium)
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
./scripts/test-remote-integration.sh
|
||||||
|
displayName: Run integration tests (Remote)
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- 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-linux-$(VSCODE_ARCH)
|
||||||
|
APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
|
||||||
|
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)" \
|
||||||
|
./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-linux-$(VSCODE_ARCH)" \
|
||||||
|
./scripts/test-web-integration.sh --browser chromium
|
||||||
|
displayName: Run integration tests (Browser, Chromium)
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
APP_ROOT=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
|
||||||
|
APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
|
||||||
|
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)" \
|
||||||
|
./scripts/test-remote-integration.sh
|
||||||
|
displayName: Run integration tests (Remote)
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}:
|
||||||
|
- 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: succeededOrFailed()
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
yarn --cwd test/smoke compile
|
||||||
|
displayName: Compile smoke tests
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
yarn smoketest-no-compile --tracing
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
displayName: Run smoke tests (Electron)
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
yarn smoketest-no-compile --web --tracing --headless --electronArgs="--disable-dev-shm-usage"
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
displayName: Run smoke tests (Browser, Chromium)
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
yarn gulp compile-extension:vscode-test-resolver
|
||||||
|
yarn smoketest-no-compile --remote --tracing
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
displayName: Run smoke tests (Remote)
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
APP_PATH=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
|
||||||
|
yarn smoketest-no-compile --tracing --build "$APP_PATH"
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
displayName: Run smoke tests (Electron)
|
||||||
|
|
||||||
|
- 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: 20
|
||||||
|
displayName: Run smoke tests (Browser, Chromium)
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
yarn gulp compile-extension:vscode-test-resolver
|
||||||
|
APP_PATH=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
|
||||||
|
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-$(VSCODE_ARCH)" \
|
||||||
|
yarn smoketest-no-compile --tracing --remote --build "$APP_PATH"
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
displayName: Run smoke tests (Remote)
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
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: succeededOrFailed()
|
||||||
|
|
||||||
|
- ${{ if or(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
|
||||||
|
- task: PublishPipelineArtifact@0
|
||||||
|
inputs:
|
||||||
|
targetPath: .build/crashes
|
||||||
|
${{ if and(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
|
artifactName: crash-dump-linux-$(VSCODE_ARCH)-integration-$(System.JobAttempt)
|
||||||
|
${{ elseif and(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
|
||||||
|
artifactName: crash-dump-linux-$(VSCODE_ARCH)-smoke-$(System.JobAttempt)
|
||||||
|
${{ else }}:
|
||||||
|
artifactName: crash-dump-linux-$(VSCODE_ARCH)-$(System.JobAttempt)
|
||||||
|
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:
|
||||||
|
targetPath: node_modules
|
||||||
|
${{ if and(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
|
artifactName: node-modules-linux-$(VSCODE_ARCH)-integration-$(System.JobAttempt)
|
||||||
|
${{ elseif and(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
|
||||||
|
artifactName: node-modules-linux-$(VSCODE_ARCH)-smoke-$(System.JobAttempt)
|
||||||
|
${{ else }}:
|
||||||
|
artifactName: node-modules-linux-$(VSCODE_ARCH)-$(System.JobAttempt)
|
||||||
|
displayName: "Publish Node Modules"
|
||||||
|
continueOnError: true
|
||||||
|
condition: failed()
|
||||||
|
|
||||||
|
- task: PublishPipelineArtifact@0
|
||||||
|
inputs:
|
||||||
|
targetPath: .build/logs
|
||||||
|
${{ if and(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
|
artifactName: logs-linux-$(VSCODE_ARCH)-integration-$(System.JobAttempt)
|
||||||
|
${{ elseif and(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
|
||||||
|
artifactName: logs-linux-$(VSCODE_ARCH)-smoke-$(System.JobAttempt)
|
||||||
|
${{ else }}:
|
||||||
|
artifactName: logs-linux-$(VSCODE_ARCH)-$(System.JobAttempt)
|
||||||
|
displayName: "Publish Log Files"
|
||||||
|
continueOnError: true
|
||||||
|
condition: succeededOrFailed()
|
||||||
|
|
||||||
|
- task: PublishTestResults@2
|
||||||
|
displayName: Publish Tests Results
|
||||||
|
inputs:
|
||||||
|
testResultsFiles: "*-results.xml"
|
||||||
|
searchFolder: "$(Build.ArtifactStagingDirectory)/test-results"
|
||||||
|
condition: succeededOrFailed()
|
||||||
@@ -1,8 +1,26 @@
|
|||||||
|
parameters:
|
||||||
|
- name: VSCODE_PUBLISH
|
||||||
|
type: boolean
|
||||||
|
- name: VSCODE_QUALITY
|
||||||
|
type: string
|
||||||
|
- name: VSCODE_RUN_UNIT_TESTS
|
||||||
|
type: boolean
|
||||||
|
- name: VSCODE_RUN_INTEGRATION_TESTS
|
||||||
|
type: boolean
|
||||||
|
- name: VSCODE_RUN_SMOKE_TESTS
|
||||||
|
type: boolean
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- checkout: self
|
||||||
|
fetchDepth: 1
|
||||||
|
retryCountOnTaskFailure: 3
|
||||||
|
|
||||||
- task: NodeTool@0
|
- task: NodeTool@0
|
||||||
inputs:
|
inputs:
|
||||||
versionSpec: "16.x"
|
versionSpec: "16.x"
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- task: AzureKeyVault@1
|
- task: AzureKeyVault@1
|
||||||
displayName: "Azure Key Vault: Get Secrets"
|
displayName: "Azure Key Vault: Get Secrets"
|
||||||
inputs:
|
inputs:
|
||||||
@@ -10,12 +28,14 @@ steps:
|
|||||||
KeyVaultName: vscode
|
KeyVaultName: vscode
|
||||||
SecretsFilter: "github-distro-mixin-password,ESRP-PKI,esrp-aad-username,esrp-aad-password"
|
SecretsFilter: "github-distro-mixin-password,ESRP-PKI,esrp-aad-username,esrp-aad-password"
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- task: DownloadPipelineArtifact@2
|
- task: DownloadPipelineArtifact@2
|
||||||
inputs:
|
inputs:
|
||||||
artifact: Compilation
|
artifact: Compilation
|
||||||
path: $(Build.ArtifactStagingDirectory)
|
path: $(Build.ArtifactStagingDirectory)
|
||||||
displayName: Download compilation output
|
displayName: Download compilation output
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- task: DownloadPipelineArtifact@2
|
- task: DownloadPipelineArtifact@2
|
||||||
inputs:
|
inputs:
|
||||||
artifact: reh_node_modules-$(VSCODE_ARCH)
|
artifact: reh_node_modules-$(VSCODE_ARCH)
|
||||||
@@ -23,6 +43,7 @@ steps:
|
|||||||
displayName: Download server build dependencies
|
displayName: Download server build dependencies
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'armhf'))
|
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'armhf'))
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
# Start X server
|
# Start X server
|
||||||
@@ -33,11 +54,13 @@ steps:
|
|||||||
displayName: Setup system services
|
displayName: Setup system services
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'))
|
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'))
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
tar -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz
|
tar -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz
|
||||||
displayName: Extract compilation output
|
displayName: Extract compilation output
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
cat << EOF > ~/.netrc
|
cat << EOF > ~/.netrc
|
||||||
@@ -50,6 +73,7 @@ steps:
|
|||||||
git config user.name "VSCode"
|
git config user.name "VSCode"
|
||||||
displayName: Prepare tooling
|
displayName: Prepare tooling
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
|
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
|
||||||
@@ -58,6 +82,7 @@ steps:
|
|||||||
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
|
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
|
||||||
displayName: Checkout override commit
|
displayName: Checkout override commit
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
|
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
|
||||||
@@ -68,6 +93,15 @@ steps:
|
|||||||
node build/azure-pipelines/common/computeNodeModulesCacheKey.js $VSCODE_ARCH $ENABLE_TERRAPIN > .build/yarnlockhash
|
node build/azure-pipelines/common/computeNodeModulesCacheKey.js $VSCODE_ARCH $ENABLE_TERRAPIN > .build/yarnlockhash
|
||||||
displayName: Prepare yarn cache flags
|
displayName: Prepare yarn cache flags
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- task: Cache@2
|
||||||
|
inputs:
|
||||||
|
key: "genericNodeModules | $(Agent.OS) | .build/yarnlockhash"
|
||||||
|
path: .build/node_modules_cache
|
||||||
|
cacheHitVar: NODE_MODULES_RESTORED
|
||||||
|
displayName: Restore node_modules cache
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- task: Cache@2
|
- task: Cache@2
|
||||||
inputs:
|
inputs:
|
||||||
key: "nodeModules | $(Agent.OS) | .build/yarnlockhash"
|
key: "nodeModules | $(Agent.OS) | .build/yarnlockhash"
|
||||||
@@ -91,6 +125,7 @@ steps:
|
|||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
|
node build/npm/setupBuildYarnrc
|
||||||
for i in {1..3}; do # try 3 times, for Terrapin
|
for i in {1..3}; do # try 3 times, for Terrapin
|
||||||
yarn --cwd build --frozen-lockfile --check-files && break
|
yarn --cwd build --frozen-lockfile --check-files && break
|
||||||
if [ $i -eq 3 ]; then
|
if [ $i -eq 3 ]; then
|
||||||
@@ -103,7 +138,16 @@ steps:
|
|||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
|
if [ "$NPM_ARCH" = "armv7l" ]; then
|
||||||
|
# There is no target_arch="armv7l" supported by node_gyp,
|
||||||
|
# arm versions for compilation are decided based on the CC
|
||||||
|
# macros.
|
||||||
|
# Mapping value is based on
|
||||||
|
# https://github.com/nodejs/node/blob/0903515e126c2697042d6546c6aa4b72e1a4b33e/configure.py#L49-L50
|
||||||
|
export npm_config_arch="arm"
|
||||||
|
else
|
||||||
export npm_config_arch=$(NPM_ARCH)
|
export npm_config_arch=$(NPM_ARCH)
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z "$CC" ] || [ -z "$CXX" ]; then
|
if [ -z "$CC" ] || [ -z "$CXX" ]; then
|
||||||
# Download clang based on chromium revision used by vscode
|
# Download clang based on chromium revision used by vscode
|
||||||
@@ -143,6 +187,7 @@ steps:
|
|||||||
displayName: Install dependencies
|
displayName: Install dependencies
|
||||||
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
|
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
rm -rf remote/node_modules
|
rm -rf remote/node_modules
|
||||||
@@ -158,22 +203,26 @@ steps:
|
|||||||
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
|
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
|
||||||
displayName: Create node_modules archive
|
displayName: Create node_modules archive
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
node build/azure-pipelines/mixin
|
node build/azure-pipelines/mixin
|
||||||
displayName: Mix in quality
|
displayName: Mix in quality
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
||||||
yarn gulp vscode-linux-$(VSCODE_ARCH)-min-ci
|
yarn gulp vscode-linux-$(VSCODE_ARCH)-min-ci
|
||||||
displayName: Build
|
displayName: Build
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
node build/azure-pipelines/mixin --server
|
node build/azure-pipelines/mixin --server
|
||||||
displayName: Mix in server quality
|
displayName: Mix in server quality
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
||||||
@@ -182,243 +231,108 @@ steps:
|
|||||||
yarn gulp vscode-reh-web-linux-$(VSCODE_ARCH)-min-ci
|
yarn gulp vscode-reh-web-linux-$(VSCODE_ARCH)-min-ci
|
||||||
displayName: Build Server
|
displayName: Build Server
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
||||||
yarn npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install"
|
yarn gulp "transpile-client" "transpile-extensions"
|
||||||
displayName: Download Electron and Playwright
|
displayName: Transpile
|
||||||
|
|
||||||
- script: |
|
- ${{ if or(eq(parameters.VSCODE_RUN_UNIT_TESTS, true), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
|
||||||
set -e
|
- template: product-build-linux-client-test.yml
|
||||||
APP_ROOT=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
|
parameters:
|
||||||
ELECTRON_ROOT=.build/electron
|
VSCODE_QUALITY: ${{ parameters.VSCODE_QUALITY }}
|
||||||
sudo chown root $APP_ROOT/chrome-sandbox
|
VSCODE_RUN_UNIT_TESTS: ${{ parameters.VSCODE_RUN_UNIT_TESTS }}
|
||||||
sudo chown root $ELECTRON_ROOT/chrome-sandbox
|
VSCODE_RUN_INTEGRATION_TESTS: ${{ parameters.VSCODE_RUN_INTEGRATION_TESTS }}
|
||||||
sudo chmod 4755 $APP_ROOT/chrome-sandbox
|
VSCODE_RUN_SMOKE_TESTS: ${{ parameters.VSCODE_RUN_SMOKE_TESTS }}
|
||||||
sudo chmod 4755 $ELECTRON_ROOT/chrome-sandbox
|
|
||||||
stat $APP_ROOT/chrome-sandbox
|
|
||||||
stat $ELECTRON_ROOT/chrome-sandbox
|
|
||||||
displayName: Change setuid helper binary permission
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
./scripts/test.sh --build --tfs "Unit Tests"
|
|
||||||
displayName: Run unit tests (Electron)
|
|
||||||
timeoutInMinutes: 15
|
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
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: |
|
|
||||||
# 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-linux-$(VSCODE_ARCH)
|
|
||||||
APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
|
|
||||||
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)" \
|
|
||||||
./scripts/test-integration.sh --build --tfs "Integration Tests"
|
|
||||||
displayName: Run integration tests (Electron)
|
|
||||||
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)" \
|
|
||||||
./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: |
|
|
||||||
set -e
|
|
||||||
APP_ROOT=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
|
|
||||||
APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
|
|
||||||
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)" \
|
|
||||||
./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 --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'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
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 --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
|
|
||||||
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:
|
|
||||||
artifactName: crash-dump-linux-$(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-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(failed(), 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'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
yarn gulp "vscode-linux-$(VSCODE_ARCH)-build-deb"
|
yarn gulp "vscode-linux-$(VSCODE_ARCH)-build-deb"
|
||||||
yarn gulp "vscode-linux-$(VSCODE_ARCH)-build-rpm"
|
yarn gulp "vscode-linux-$(VSCODE_ARCH)-build-rpm"
|
||||||
displayName: Build deb, rpm packages
|
displayName: Build deb, rpm packages
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
yarn gulp "vscode-linux-$(VSCODE_ARCH)-prepare-snap"
|
yarn gulp "vscode-linux-$(VSCODE_ARCH)-prepare-snap"
|
||||||
displayName: Prepare snap package
|
displayName: Prepare snap package
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- task: UseDotNet@2
|
- task: UseDotNet@2
|
||||||
inputs:
|
inputs:
|
||||||
version: 2.x
|
version: 2.x
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- task: EsrpClientTool@1
|
- task: EsrpClientTool@1
|
||||||
displayName: Download ESRPClient
|
displayName: Download ESRPClient
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
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'
|
node build/azure-pipelines/common/sign "$(esrpclient.toolpath)/$(esrpclient.toolname)" rpm $(ESRP-PKI) $(esrp-aad-username) $(esrp-aad-password) .build/linux/rpm '*.rpm'
|
||||||
displayName: Codesign rpm
|
displayName: Codesign rpm
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
VSCODE_ARCH="$(VSCODE_ARCH)" \
|
VSCODE_ARCH="$(VSCODE_ARCH)" \
|
||||||
./build/azure-pipelines/linux/prepare-publish.sh
|
./build/azure-pipelines/linux/prepare-publish.sh
|
||||||
displayName: Prepare for Publish
|
displayName: Prepare for Publish
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
- publish: $(DEB_PATH)
|
|
||||||
artifact: vscode_client_linux_$(VSCODE_ARCH)_deb-package
|
|
||||||
displayName: Publish deb package
|
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
- publish: $(RPM_PATH)
|
|
||||||
artifact: vscode_client_linux_$(VSCODE_ARCH)_rpm-package
|
|
||||||
displayName: Publish rpm package
|
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
- publish: $(TARBALL_PATH)
|
|
||||||
artifact: vscode_client_linux_$(VSCODE_ARCH)_archive-unsigned
|
|
||||||
displayName: Publish client archive
|
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
- publish: $(Agent.BuildDirectory)/vscode-server-linux-$(VSCODE_ARCH).tar.gz
|
|
||||||
artifact: vscode_server_linux_$(VSCODE_ARCH)_archive-unsigned
|
|
||||||
displayName: Publish server archive
|
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
- publish: $(Agent.BuildDirectory)/vscode-server-linux-$(VSCODE_ARCH)-web.tar.gz
|
|
||||||
artifact: vscode_web_linux_$(VSCODE_ARCH)_archive-unsigned
|
|
||||||
displayName: Publish web server archive
|
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
- task: PublishPipelineArtifact@0
|
|
||||||
displayName: "Publish Pipeline Artifact"
|
|
||||||
inputs:
|
|
||||||
artifactName: "snap-$(VSCODE_ARCH)"
|
|
||||||
targetPath: .build/linux/snap-tarball
|
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
|
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
|
||||||
displayName: Generate SBOM (client)
|
displayName: Generate SBOM (client)
|
||||||
inputs:
|
inputs:
|
||||||
BuildDropPath: $(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
|
BuildDropPath: $(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
|
||||||
PackageName: Visual Studio Code
|
PackageName: Visual Studio Code
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- publish: $(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)/_manifest
|
- publish: $(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)/_manifest
|
||||||
displayName: Publish SBOM (client)
|
displayName: Publish SBOM (client)
|
||||||
artifact: vscode_client_linux_$(VSCODE_ARCH)_sbom
|
artifact: vscode_client_linux_$(VSCODE_ARCH)_sbom
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
|
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
|
||||||
displayName: Generate SBOM (server)
|
displayName: Generate SBOM (server)
|
||||||
inputs:
|
inputs:
|
||||||
BuildDropPath: $(agent.builddirectory)/vscode-server-linux-$(VSCODE_ARCH)
|
BuildDropPath: $(agent.builddirectory)/vscode-server-linux-$(VSCODE_ARCH)
|
||||||
PackageName: Visual Studio Code Server
|
PackageName: Visual Studio Code Server
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- publish: $(agent.builddirectory)/vscode-server-linux-$(VSCODE_ARCH)/_manifest
|
- publish: $(agent.builddirectory)/vscode-server-linux-$(VSCODE_ARCH)/_manifest
|
||||||
displayName: Publish SBOM (server)
|
displayName: Publish SBOM (server)
|
||||||
artifact: vscode_server_linux_$(VSCODE_ARCH)_sbom
|
artifact: vscode_server_linux_$(VSCODE_ARCH)_sbom
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
|
- publish: $(DEB_PATH)
|
||||||
|
artifact: vscode_client_linux_$(VSCODE_ARCH)_deb-package
|
||||||
|
displayName: Publish deb package
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
|
- publish: $(RPM_PATH)
|
||||||
|
artifact: vscode_client_linux_$(VSCODE_ARCH)_rpm-package
|
||||||
|
displayName: Publish rpm package
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
|
- publish: $(TARBALL_PATH)
|
||||||
|
artifact: vscode_client_linux_$(VSCODE_ARCH)_archive-unsigned
|
||||||
|
displayName: Publish client archive
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
|
- publish: $(Agent.BuildDirectory)/vscode-server-linux-$(VSCODE_ARCH).tar.gz
|
||||||
|
artifact: vscode_server_linux_$(VSCODE_ARCH)_archive-unsigned
|
||||||
|
displayName: Publish server archive
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
|
- publish: $(Agent.BuildDirectory)/vscode-server-linux-$(VSCODE_ARCH)-web.tar.gz
|
||||||
|
artifact: vscode_web_linux_$(VSCODE_ARCH)_archive-unsigned
|
||||||
|
displayName: Publish web server archive
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
|
- task: PublishPipelineArtifact@0
|
||||||
|
displayName: "Publish Pipeline Artifact"
|
||||||
|
inputs:
|
||||||
|
artifactName: "snap-$(VSCODE_ARCH)"
|
||||||
|
targetPath: .build/linux/snap-tarball
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
|
parameters:
|
||||||
|
- name: VSCODE_QUALITY
|
||||||
|
type: string
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- task: NodeTool@0
|
- task: NodeTool@0
|
||||||
inputs:
|
inputs:
|
||||||
versionSpec: "16.x"
|
versionSpec: "16.x"
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- task: AzureKeyVault@1
|
- task: AzureKeyVault@1
|
||||||
displayName: "Azure Key Vault: Get Secrets"
|
displayName: "Azure Key Vault: Get Secrets"
|
||||||
inputs:
|
inputs:
|
||||||
@@ -10,6 +15,7 @@ steps:
|
|||||||
KeyVaultName: vscode
|
KeyVaultName: vscode
|
||||||
SecretsFilter: "github-distro-mixin-password,ESRP-PKI,esrp-aad-username,esrp-aad-password"
|
SecretsFilter: "github-distro-mixin-password,ESRP-PKI,esrp-aad-username,esrp-aad-password"
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- task: Docker@1
|
- task: Docker@1
|
||||||
displayName: "Pull Docker image"
|
displayName: "Pull Docker image"
|
||||||
inputs:
|
inputs:
|
||||||
@@ -20,6 +26,7 @@ steps:
|
|||||||
containerCommand: uname
|
containerCommand: uname
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'arm64'))
|
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'arm64'))
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
cat << EOF > ~/.netrc
|
cat << EOF > ~/.netrc
|
||||||
@@ -32,6 +39,7 @@ steps:
|
|||||||
git config user.name "VSCode"
|
git config user.name "VSCode"
|
||||||
displayName: Prepare tooling
|
displayName: Prepare tooling
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
|
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
|
||||||
@@ -40,6 +48,7 @@ steps:
|
|||||||
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
|
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
|
||||||
displayName: Checkout override commit
|
displayName: Checkout override commit
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
|
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
|
||||||
@@ -61,10 +70,12 @@ steps:
|
|||||||
GITHUB_TOKEN: "$(github-distro-mixin-password)"
|
GITHUB_TOKEN: "$(github-distro-mixin-password)"
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'))
|
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'))
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
- script: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
||||||
displayName: Register Docker QEMU
|
displayName: Register Docker QEMU
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'arm64'))
|
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'arm64'))
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
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
|
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
|
||||||
|
|||||||
@@ -136,54 +136,56 @@ steps:
|
|||||||
displayName: Run core integration tests
|
displayName: Run core integration tests
|
||||||
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'), ne(variables['EXTENSIONS_ONLY'], 'true'))
|
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'), ne(variables['EXTENSIONS_ONLY'], 'true'))
|
||||||
|
|
||||||
- script: |
|
# {{SQL CARBON TODO}} Reenable "Run Extension Unit Tests (Continue on Error)" and "Run Extension Unit Tests (Fail on Error)" and "Archive Logs"
|
||||||
# Figure out the full absolute path of the product we just built
|
# - script: |
|
||||||
# including the remote server and configure the unit tests
|
# # Figure out the full absolute path of the product we just built
|
||||||
# to run with these builds instead of running out of sources.
|
# # including the remote server and configure the unit tests
|
||||||
set -e
|
# # to run with these builds instead of running out of sources.
|
||||||
APP_ROOT=$(agent.builddirectory)/azuredatastudio-linux-x64
|
# set -e
|
||||||
APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
|
# APP_ROOT=$(agent.builddirectory)/azuredatastudio-linux-x64
|
||||||
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
|
# APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
|
||||||
NO_CLEANUP=1 \
|
# INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
|
||||||
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/azuredatastudio-reh-linux-x64" \
|
# NO_CLEANUP=1 \
|
||||||
DISPLAY=:10 ./scripts/test-extensions-unit.sh --build --tfs "Extension Unit Tests"
|
# VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/azuredatastudio-reh-linux-x64" \
|
||||||
displayName: Run Extension Unit Tests (Continue on Error)
|
# DISPLAY=:10 ./scripts/test-extensions-unit.sh --build --tfs "Extension Unit Tests"
|
||||||
continueOnError: true
|
# displayName: Run Extension Unit Tests (Continue on Error)
|
||||||
condition: and(succeeded(), and(eq(variables['RUN_TESTS'], 'true'), eq(variables['EXTENSION_UNIT_TESTS_FAIL_ON_ERROR'], 'false')))
|
# continueOnError: true
|
||||||
|
# condition: and(succeeded(), and(eq(variables['RUN_TESTS'], 'true'), eq(variables['EXTENSION_UNIT_TESTS_FAIL_ON_ERROR'], 'false')))
|
||||||
|
|
||||||
- script: |
|
# - script: |
|
||||||
# Figure out the full absolute path of the product we just built
|
# # Figure out the full absolute path of the product we just built
|
||||||
# including the remote server and configure the unit tests
|
# # including the remote server and configure the unit tests
|
||||||
# to run with these builds instead of running out of sources.
|
# # to run with these builds instead of running out of sources.
|
||||||
set -e
|
# set -e
|
||||||
APP_ROOT=$(agent.builddirectory)/azuredatastudio-linux-x64
|
# APP_ROOT=$(agent.builddirectory)/azuredatastudio-linux-x64
|
||||||
APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
|
# APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
|
||||||
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
|
# INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
|
||||||
NO_CLEANUP=1 \
|
# NO_CLEANUP=1 \
|
||||||
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/azuredatastudio-reh-linux-x64" \
|
# VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/azuredatastudio-reh-linux-x64" \
|
||||||
DISPLAY=:10 ./scripts/test-extensions-unit.sh --build --tfs "Extension Unit Tests"
|
# DISPLAY=:10 ./scripts/test-extensions-unit.sh --build --tfs "Extension Unit Tests"
|
||||||
displayName: Run Extension Unit Tests (Fail on Error)
|
# 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')))
|
# condition: and(succeeded(), and(eq(variables['RUN_TESTS'], 'true'), ne(variables['EXTENSION_UNIT_TESTS_FAIL_ON_ERROR'], 'false')))
|
||||||
|
|
||||||
- bash: |
|
# - bash: |
|
||||||
set -e
|
# set -e
|
||||||
mkdir -p $(Build.ArtifactStagingDirectory)/logs/linux-x64
|
# mkdir -p $(Build.ArtifactStagingDirectory)/logs/linux-x64
|
||||||
cd /tmp
|
# cd /tmp
|
||||||
for folder in adsuser*/
|
# for folder in adsuser*/
|
||||||
do
|
# do
|
||||||
folder=${folder%/}
|
# folder=${folder%/}
|
||||||
# Only archive directories we want for debugging purposes
|
# # Only archive directories we want for debugging purposes
|
||||||
tar -czvf $(Build.ArtifactStagingDirectory)/logs/linux-x64/$folder.tar.gz $folder/User $folder/logs
|
# tar -czvf $(Build.ArtifactStagingDirectory)/logs/linux-x64/$folder.tar.gz $folder/User $folder/logs
|
||||||
done
|
# done
|
||||||
displayName: Archive Logs
|
# displayName: Archive Logs
|
||||||
continueOnError: true
|
# continueOnError: true
|
||||||
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
|
# condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
|
||||||
|
|
||||||
- script: |
|
# {{SQL CARBON TODO}} - Reenable
|
||||||
set -e
|
# - script: |
|
||||||
yarn gulp vscode-linux-x64-build-deb
|
# set -e
|
||||||
displayName: Build Deb
|
# yarn gulp vscode-linux-x64-build-deb
|
||||||
condition: and(succeeded(), ne(variables['EXTENSIONS_ONLY'], 'true'))
|
# displayName: Build Deb
|
||||||
|
# condition: and(succeeded(), ne(variables['EXTENSIONS_ONLY'], 'true'))
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const json = require("gulp-json-editor");
|
const json = require("gulp-json-editor");
|
||||||
const buffer = require('gulp-buffer');
|
const buffer = require('gulp-buffer');
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import * as json from 'gulp-json-editor';
|
import * as json from 'gulp-json-editor';
|
||||||
const buffer = require('gulp-buffer');
|
const buffer = require('gulp-buffer');
|
||||||
import * as filter from 'gulp-filter';
|
import * as filter from 'gulp-filter';
|
||||||
|
|||||||
59
build/azure-pipelines/product-build-pr-cache.yml
Normal file
59
build/azure-pipelines/product-build-pr-cache.yml
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
fetchDepth: 1
|
||||||
|
retryCountOnTaskFailure: 3
|
||||||
|
|
||||||
|
- task: NodeTool@0
|
||||||
|
inputs:
|
||||||
|
versionSpec: "16.x"
|
||||||
|
|
||||||
|
- 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: "genericNodeModules | $(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
|
||||||
|
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 --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
|
||||||
189
build/azure-pipelines/product-build-pr.yml
Normal file
189
build/azure-pipelines/product-build-pr.yml
Normal file
@@ -0,0 +1,189 @@
|
|||||||
|
trigger:
|
||||||
|
- main
|
||||||
|
- release/*
|
||||||
|
|
||||||
|
pr:
|
||||||
|
branches:
|
||||||
|
include: ["main", "release/*"]
|
||||||
|
|
||||||
|
variables:
|
||||||
|
- name: Codeql.SkipTaskAutoInjection
|
||||||
|
value: true
|
||||||
|
- name: skipComponentGovernanceDetection
|
||||||
|
value: true
|
||||||
|
- name: ENABLE_TERRAPIN
|
||||||
|
value: false
|
||||||
|
- name: VSCODE_CIBUILD
|
||||||
|
value: ${{ in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI') }}
|
||||||
|
- name: VSCODE_PUBLISH
|
||||||
|
value: false
|
||||||
|
- name: VSCODE_QUALITY
|
||||||
|
value: oss
|
||||||
|
- name: VSCODE_STEP_ON_IT
|
||||||
|
value: false
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- ${{ if ne(variables['VSCODE_CIBUILD'], true) }}:
|
||||||
|
- job: Compile
|
||||||
|
displayName: Compile & Hygiene
|
||||||
|
pool: vscode-1es-vscode-linux-20.04
|
||||||
|
timeoutInMinutes: 30
|
||||||
|
variables:
|
||||||
|
VSCODE_ARCH: x64
|
||||||
|
steps:
|
||||||
|
- template: product-compile.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
|
||||||
|
- job: Linuxx64UnitTest
|
||||||
|
displayName: Linux (Unit Tests)
|
||||||
|
pool: vscode-1es-vscode-linux-20.04
|
||||||
|
timeoutInMinutes: 30
|
||||||
|
variables:
|
||||||
|
VSCODE_ARCH: x64
|
||||||
|
NPM_ARCH: x64
|
||||||
|
DISPLAY: ":10"
|
||||||
|
steps:
|
||||||
|
- template: linux/product-build-linux-client.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: true
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: false
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: false
|
||||||
|
|
||||||
|
- job: Linuxx64IntegrationTest
|
||||||
|
displayName: Linux (Integration Tests)
|
||||||
|
pool: vscode-1es-vscode-linux-20.04
|
||||||
|
timeoutInMinutes: 30
|
||||||
|
variables:
|
||||||
|
VSCODE_ARCH: x64
|
||||||
|
NPM_ARCH: x64
|
||||||
|
DISPLAY: ":10"
|
||||||
|
steps:
|
||||||
|
- template: linux/product-build-linux-client.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: false
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: true
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: false
|
||||||
|
|
||||||
|
- job: Linuxx64SmokeTest
|
||||||
|
displayName: Linux (Smoke Tests)
|
||||||
|
pool: vscode-1es-vscode-linux-20.04
|
||||||
|
timeoutInMinutes: 30
|
||||||
|
variables:
|
||||||
|
VSCODE_ARCH: x64
|
||||||
|
NPM_ARCH: x64
|
||||||
|
DISPLAY: ":10"
|
||||||
|
steps:
|
||||||
|
- template: linux/product-build-linux-client.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: false
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: false
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: true
|
||||||
|
|
||||||
|
- ${{ if eq(variables['VSCODE_CIBUILD'], true) }}:
|
||||||
|
- job: Linuxx64MaintainNodeModulesCache
|
||||||
|
displayName: Linux (Maintain node_modules cache)
|
||||||
|
pool: vscode-1es-vscode-linux-20.04
|
||||||
|
timeoutInMinutes: 30
|
||||||
|
variables:
|
||||||
|
VSCODE_ARCH: x64
|
||||||
|
steps:
|
||||||
|
- template: product-build-pr-cache.yml
|
||||||
|
|
||||||
|
# - job: macOSUnitTest
|
||||||
|
# displayName: macOS (Unit Tests)
|
||||||
|
# pool:
|
||||||
|
# vmImage: macOS-latest
|
||||||
|
# timeoutInMinutes: 60
|
||||||
|
# variables:
|
||||||
|
# BUILDSECMON_OPT_IN: true
|
||||||
|
# VSCODE_ARCH: x64
|
||||||
|
# steps:
|
||||||
|
# - template: darwin/product-build-darwin.yml
|
||||||
|
# parameters:
|
||||||
|
# VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
# VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
# VSCODE_RUN_UNIT_TESTS: true
|
||||||
|
# VSCODE_RUN_INTEGRATION_TESTS: false
|
||||||
|
# VSCODE_RUN_SMOKE_TESTS: false
|
||||||
|
# - job: macOSIntegrationTest
|
||||||
|
# displayName: macOS (Integration Tests)
|
||||||
|
# pool:
|
||||||
|
# vmImage: macOS-latest
|
||||||
|
# timeoutInMinutes: 60
|
||||||
|
# variables:
|
||||||
|
# BUILDSECMON_OPT_IN: true
|
||||||
|
# VSCODE_ARCH: x64
|
||||||
|
# steps:
|
||||||
|
# - template: darwin/product-build-darwin.yml
|
||||||
|
# parameters:
|
||||||
|
# VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
# VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
# VSCODE_RUN_UNIT_TESTS: false
|
||||||
|
# VSCODE_RUN_INTEGRATION_TESTS: true
|
||||||
|
# VSCODE_RUN_SMOKE_TESTS: false
|
||||||
|
# - job: macOSSmokeTest
|
||||||
|
# displayName: macOS (Smoke Tests)
|
||||||
|
# pool:
|
||||||
|
# vmImage: macOS-latest
|
||||||
|
# timeoutInMinutes: 60
|
||||||
|
# variables:
|
||||||
|
# BUILDSECMON_OPT_IN: true
|
||||||
|
# VSCODE_ARCH: x64
|
||||||
|
# steps:
|
||||||
|
# - template: darwin/product-build-darwin.yml
|
||||||
|
# parameters:
|
||||||
|
# VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
# VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
# VSCODE_RUN_UNIT_TESTS: false
|
||||||
|
# VSCODE_RUN_INTEGRATION_TESTS: false
|
||||||
|
# VSCODE_RUN_SMOKE_TESTS: true
|
||||||
|
|
||||||
|
# - job: WindowsUnitTests
|
||||||
|
# displayName: Windows (Unit Tests)
|
||||||
|
# pool: vscode-1es-vscode-windows-2019
|
||||||
|
# timeoutInMinutes: 60
|
||||||
|
# variables:
|
||||||
|
# VSCODE_ARCH: x64
|
||||||
|
# steps:
|
||||||
|
# - template: win32/product-build-win32.yml
|
||||||
|
# parameters:
|
||||||
|
# VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
# VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
# VSCODE_RUN_UNIT_TESTS: true
|
||||||
|
# VSCODE_RUN_INTEGRATION_TESTS: false
|
||||||
|
# VSCODE_RUN_SMOKE_TESTS: false
|
||||||
|
# - job: WindowsIntegrationTests
|
||||||
|
# displayName: Windows (Integration Tests)
|
||||||
|
# pool: vscode-1es-vscode-windows-2019
|
||||||
|
# timeoutInMinutes: 60
|
||||||
|
# variables:
|
||||||
|
# VSCODE_ARCH: x64
|
||||||
|
# steps:
|
||||||
|
# - template: win32/product-build-win32.yml
|
||||||
|
# parameters:
|
||||||
|
# VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
# VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
# VSCODE_RUN_UNIT_TESTS: false
|
||||||
|
# VSCODE_RUN_INTEGRATION_TESTS: true
|
||||||
|
# VSCODE_RUN_SMOKE_TESTS: false
|
||||||
|
# - job: WindowsSmokeTests
|
||||||
|
# displayName: Windows (Smoke Tests)
|
||||||
|
# pool: vscode-1es-vscode-windows-2019
|
||||||
|
# timeoutInMinutes: 60
|
||||||
|
# variables:
|
||||||
|
# VSCODE_ARCH: x64
|
||||||
|
# steps:
|
||||||
|
# - template: win32/product-build-win32.yml
|
||||||
|
# parameters:
|
||||||
|
# VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
# VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
# VSCODE_RUN_UNIT_TESTS: false
|
||||||
|
# VSCODE_RUN_INTEGRATION_TESTS: false
|
||||||
|
# VSCODE_RUN_SMOKE_TESTS: true
|
||||||
@@ -8,6 +8,10 @@ schedules:
|
|||||||
- main
|
- main
|
||||||
- joao/web
|
- joao/web
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
branches:
|
||||||
|
include: ["main", "release/*"]
|
||||||
|
|
||||||
parameters:
|
parameters:
|
||||||
- name: VSCODE_DISTRO_REF
|
- name: VSCODE_DISTRO_REF
|
||||||
displayName: Distro Ref (Private build)
|
displayName: Distro Ref (Private build)
|
||||||
@@ -104,9 +108,11 @@ variables:
|
|||||||
- name: VSCODE_BUILD_STAGE_WINDOWS
|
- 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)) }}
|
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
|
- name: VSCODE_BUILD_STAGE_LINUX
|
||||||
value: ${{ or(eq(parameters.VSCODE_BUILD_LINUX, true), eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true), eq(parameters.VSCODE_BUILD_LINUX_ALPINE, true), eq(parameters.VSCODE_BUILD_LINUX_ALPINE_ARM64, true), eq(parameters.VSCODE_BUILD_WEB, true)) }}
|
value: ${{ or(eq(parameters.VSCODE_BUILD_LINUX, true), eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true), eq(parameters.VSCODE_BUILD_LINUX_ALPINE, true), eq(parameters.VSCODE_BUILD_LINUX_ALPINE_ARM64, true)) }}
|
||||||
- name: VSCODE_BUILD_STAGE_MACOS
|
- name: VSCODE_BUILD_STAGE_MACOS
|
||||||
value: ${{ or(eq(parameters.VSCODE_BUILD_MACOS, true), eq(parameters.VSCODE_BUILD_MACOS_ARM64, true)) }}
|
value: ${{ or(eq(parameters.VSCODE_BUILD_MACOS, true), eq(parameters.VSCODE_BUILD_MACOS_ARM64, true)) }}
|
||||||
|
- name: VSCODE_BUILD_STAGE_WEB
|
||||||
|
value: ${{ eq(parameters.VSCODE_BUILD_WEB, true) }}
|
||||||
- name: VSCODE_CIBUILD
|
- name: VSCODE_CIBUILD
|
||||||
value: ${{ in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI') }}
|
value: ${{ in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI') }}
|
||||||
- name: VSCODE_PUBLISH
|
- name: VSCODE_PUBLISH
|
||||||
@@ -162,6 +168,8 @@ stages:
|
|||||||
VSCODE_ARCH: x64
|
VSCODE_ARCH: x64
|
||||||
steps:
|
steps:
|
||||||
- template: product-compile.yml
|
- template: product-compile.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
|
||||||
- ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_WINDOWS'], true)) }}:
|
- ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_WINDOWS'], true)) }}:
|
||||||
- stage: Windows
|
- stage: Windows
|
||||||
@@ -169,13 +177,60 @@ stages:
|
|||||||
- Compile
|
- Compile
|
||||||
pool: vscode-1es-windows
|
pool: vscode-1es-windows
|
||||||
jobs:
|
jobs:
|
||||||
- ${{ if eq(parameters.VSCODE_BUILD_WIN32, true) }}:
|
- ${{ if eq(variables['VSCODE_CIBUILD'], true) }}:
|
||||||
|
- job: WindowsUnitTests
|
||||||
|
displayName: Unit Tests
|
||||||
|
timeoutInMinutes: 60
|
||||||
|
variables:
|
||||||
|
VSCODE_ARCH: x64
|
||||||
|
steps:
|
||||||
|
- template: win32/product-build-win32.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: true
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: false
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: false
|
||||||
|
- job: WindowsIntegrationTests
|
||||||
|
displayName: Integration Tests
|
||||||
|
timeoutInMinutes: 60
|
||||||
|
variables:
|
||||||
|
VSCODE_ARCH: x64
|
||||||
|
steps:
|
||||||
|
- template: win32/product-build-win32.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: false
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: true
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: false
|
||||||
|
- job: WindowsSmokeTests
|
||||||
|
displayName: Smoke Tests
|
||||||
|
timeoutInMinutes: 60
|
||||||
|
variables:
|
||||||
|
VSCODE_ARCH: x64
|
||||||
|
steps:
|
||||||
|
- template: win32/product-build-win32.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: false
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: false
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: true
|
||||||
|
|
||||||
|
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_WIN32, true)) }}:
|
||||||
- job: Windows
|
- job: Windows
|
||||||
timeoutInMinutes: 120
|
timeoutInMinutes: 120
|
||||||
variables:
|
variables:
|
||||||
VSCODE_ARCH: x64
|
VSCODE_ARCH: x64
|
||||||
steps:
|
steps:
|
||||||
- template: win32/product-build-win32.yml
|
- template: win32/product-build-win32.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
|
||||||
|
|
||||||
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_WIN32_32BIT, true)) }}:
|
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_WIN32_32BIT, true)) }}:
|
||||||
- job: Windows32
|
- job: Windows32
|
||||||
@@ -184,6 +239,12 @@ stages:
|
|||||||
VSCODE_ARCH: ia32
|
VSCODE_ARCH: ia32
|
||||||
steps:
|
steps:
|
||||||
- template: win32/product-build-win32.yml
|
- template: win32/product-build-win32.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
|
||||||
|
|
||||||
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_WIN32_ARM64, true)) }}:
|
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_WIN32_ARM64, true)) }}:
|
||||||
- job: WindowsARM64
|
- job: WindowsARM64
|
||||||
@@ -192,6 +253,12 @@ stages:
|
|||||||
VSCODE_ARCH: arm64
|
VSCODE_ARCH: arm64
|
||||||
steps:
|
steps:
|
||||||
- template: win32/product-build-win32.yml
|
- template: win32/product-build-win32.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: false
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: false
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: false
|
||||||
|
|
||||||
- ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_LINUX'], true)) }}:
|
- ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_LINUX'], true)) }}:
|
||||||
- stage: LinuxServerDependencies
|
- stage: LinuxServerDependencies
|
||||||
@@ -206,13 +273,17 @@ stages:
|
|||||||
NPM_ARCH: x64
|
NPM_ARCH: x64
|
||||||
steps:
|
steps:
|
||||||
- template: linux/product-build-linux-server.yml
|
- template: linux/product-build-linux-server.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
|
||||||
- ${{ if eq(parameters.VSCODE_BUILD_LINUX, true) }}:
|
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true)) }}:
|
||||||
- job: arm64
|
- job: arm64
|
||||||
variables:
|
variables:
|
||||||
VSCODE_ARCH: arm64
|
VSCODE_ARCH: arm64
|
||||||
steps:
|
steps:
|
||||||
- template: linux/product-build-linux-server.yml
|
- template: linux/product-build-linux-server.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
|
||||||
- ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_LINUX'], true)) }}:
|
- ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_LINUX'], true)) }}:
|
||||||
- stage: Linux
|
- stage: Linux
|
||||||
@@ -221,7 +292,54 @@ stages:
|
|||||||
- LinuxServerDependencies
|
- LinuxServerDependencies
|
||||||
pool: vscode-1es-linux
|
pool: vscode-1es-linux
|
||||||
jobs:
|
jobs:
|
||||||
- ${{ if eq(parameters.VSCODE_BUILD_LINUX, true) }}:
|
- ${{ if eq(variables['VSCODE_CIBUILD'], true) }}:
|
||||||
|
- job: Linuxx64UnitTest
|
||||||
|
displayName: Unit Tests
|
||||||
|
container: vscode-bionic-x64
|
||||||
|
variables:
|
||||||
|
VSCODE_ARCH: x64
|
||||||
|
NPM_ARCH: x64
|
||||||
|
DISPLAY: ":10"
|
||||||
|
steps:
|
||||||
|
- template: linux/product-build-linux-client.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: true
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: false
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: false
|
||||||
|
- job: Linuxx64IntegrationTest
|
||||||
|
displayName: Integration Tests
|
||||||
|
container: vscode-bionic-x64
|
||||||
|
variables:
|
||||||
|
VSCODE_ARCH: x64
|
||||||
|
NPM_ARCH: x64
|
||||||
|
DISPLAY: ":10"
|
||||||
|
steps:
|
||||||
|
- template: linux/product-build-linux-client.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: false
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: true
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: false
|
||||||
|
- job: Linuxx64SmokeTest
|
||||||
|
displayName: Smoke Tests
|
||||||
|
container: vscode-bionic-x64
|
||||||
|
variables:
|
||||||
|
VSCODE_ARCH: x64
|
||||||
|
NPM_ARCH: x64
|
||||||
|
DISPLAY: ":10"
|
||||||
|
steps:
|
||||||
|
- template: linux/product-build-linux-client.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: false
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: false
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: true
|
||||||
|
|
||||||
|
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX, true)) }}:
|
||||||
- job: Linuxx64
|
- job: Linuxx64
|
||||||
container: vscode-bionic-x64
|
container: vscode-bionic-x64
|
||||||
variables:
|
variables:
|
||||||
@@ -230,6 +348,12 @@ stages:
|
|||||||
DISPLAY: ":10"
|
DISPLAY: ":10"
|
||||||
steps:
|
steps:
|
||||||
- template: linux/product-build-linux-client.yml
|
- template: linux/product-build-linux-client.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
|
||||||
|
|
||||||
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX, true), ne(variables['VSCODE_PUBLISH'], 'false')) }}:
|
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX, true), ne(variables['VSCODE_PUBLISH'], 'false')) }}:
|
||||||
- job: LinuxSnap
|
- job: LinuxSnap
|
||||||
@@ -249,6 +373,12 @@ stages:
|
|||||||
NPM_ARCH: armv7l
|
NPM_ARCH: armv7l
|
||||||
steps:
|
steps:
|
||||||
- template: linux/product-build-linux-client.yml
|
- template: linux/product-build-linux-client.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: false
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: false
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: false
|
||||||
|
|
||||||
# TODO@joaomoreno: We don't ship ARM snaps for now
|
# 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)) }}:
|
- ${{ if and(false, eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true)) }}:
|
||||||
@@ -269,6 +399,12 @@ stages:
|
|||||||
NPM_ARCH: arm64
|
NPM_ARCH: arm64
|
||||||
steps:
|
steps:
|
||||||
- template: linux/product-build-linux-client.yml
|
- template: linux/product-build-linux-client.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: false
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: false
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: false
|
||||||
|
|
||||||
# TODO@joaomoreno: We don't ship ARM snaps for now
|
# 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)) }}:
|
- ${{ if and(false, eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true)) }}:
|
||||||
@@ -296,13 +432,6 @@ stages:
|
|||||||
steps:
|
steps:
|
||||||
- template: linux/product-build-alpine.yml
|
- 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)) }}:
|
- ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_MACOS'], true)) }}:
|
||||||
- stage: macOS
|
- stage: macOS
|
||||||
dependsOn:
|
dependsOn:
|
||||||
@@ -312,20 +441,76 @@ stages:
|
|||||||
variables:
|
variables:
|
||||||
BUILDSECMON_OPT_IN: true
|
BUILDSECMON_OPT_IN: true
|
||||||
jobs:
|
jobs:
|
||||||
- ${{ if eq(parameters.VSCODE_BUILD_MACOS, true) }}:
|
- ${{ if eq(variables['VSCODE_CIBUILD'], true) }}:
|
||||||
- job: macOSTest
|
- job: macOSUnitTest
|
||||||
|
displayName: Unit Tests
|
||||||
timeoutInMinutes: 90
|
timeoutInMinutes: 90
|
||||||
variables:
|
variables:
|
||||||
VSCODE_ARCH: x64
|
VSCODE_ARCH: x64
|
||||||
steps:
|
steps:
|
||||||
- template: darwin/product-build-darwin-test.yml
|
- template: darwin/product-build-darwin.yml
|
||||||
- ${{ if eq(variables['VSCODE_CIBUILD'], false) }}:
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: true
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: false
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: false
|
||||||
|
- job: macOSIntegrationTest
|
||||||
|
displayName: Integration Tests
|
||||||
|
timeoutInMinutes: 90
|
||||||
|
variables:
|
||||||
|
VSCODE_ARCH: x64
|
||||||
|
steps:
|
||||||
|
- template: darwin/product-build-darwin.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: false
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: true
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: false
|
||||||
|
- job: macOSSmokeTest
|
||||||
|
displayName: Smoke Tests
|
||||||
|
timeoutInMinutes: 90
|
||||||
|
variables:
|
||||||
|
VSCODE_ARCH: x64
|
||||||
|
steps:
|
||||||
|
- template: darwin/product-build-darwin.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: false
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: false
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: true
|
||||||
|
|
||||||
|
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_MACOS, true)) }}:
|
||||||
- job: macOS
|
- job: macOS
|
||||||
timeoutInMinutes: 90
|
timeoutInMinutes: 90
|
||||||
variables:
|
variables:
|
||||||
VSCODE_ARCH: x64
|
VSCODE_ARCH: x64
|
||||||
steps:
|
steps:
|
||||||
- template: darwin/product-build-darwin.yml
|
- template: darwin/product-build-darwin.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: false
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: false
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: false
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_STEP_ON_IT, false) }}:
|
||||||
|
- job: macOSTest
|
||||||
|
timeoutInMinutes: 90
|
||||||
|
variables:
|
||||||
|
VSCODE_ARCH: x64
|
||||||
|
steps:
|
||||||
|
- template: darwin/product-build-darwin.yml
|
||||||
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
|
||||||
|
|
||||||
|
- ${{ if eq(variables['VSCODE_PUBLISH'], true) }}:
|
||||||
- job: macOSSign
|
- job: macOSSign
|
||||||
dependsOn:
|
dependsOn:
|
||||||
- macOS
|
- macOS
|
||||||
@@ -342,7 +527,14 @@ stages:
|
|||||||
VSCODE_ARCH: arm64
|
VSCODE_ARCH: arm64
|
||||||
steps:
|
steps:
|
||||||
- template: darwin/product-build-darwin.yml
|
- template: darwin/product-build-darwin.yml
|
||||||
- ${{ if eq(variables['VSCODE_CIBUILD'], false) }}:
|
parameters:
|
||||||
|
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
|
||||||
|
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
|
||||||
|
VSCODE_RUN_UNIT_TESTS: false
|
||||||
|
VSCODE_RUN_INTEGRATION_TESTS: false
|
||||||
|
VSCODE_RUN_SMOKE_TESTS: false
|
||||||
|
|
||||||
|
- ${{ if eq(variables['VSCODE_PUBLISH'], true) }}:
|
||||||
- job: macOSARM64Sign
|
- job: macOSARM64Sign
|
||||||
dependsOn:
|
dependsOn:
|
||||||
- macOSARM64
|
- macOSARM64
|
||||||
@@ -362,7 +554,8 @@ stages:
|
|||||||
VSCODE_ARCH: universal
|
VSCODE_ARCH: universal
|
||||||
steps:
|
steps:
|
||||||
- template: darwin/product-build-darwin-universal.yml
|
- template: darwin/product-build-darwin-universal.yml
|
||||||
- ${{ if eq(variables['VSCODE_CIBUILD'], false) }}:
|
|
||||||
|
- ${{ if eq(variables['VSCODE_PUBLISH'], true) }}:
|
||||||
- job: macOSUniversalSign
|
- job: macOSUniversalSign
|
||||||
dependsOn:
|
dependsOn:
|
||||||
- macOSUniversal
|
- macOSUniversal
|
||||||
@@ -372,6 +565,19 @@ stages:
|
|||||||
steps:
|
steps:
|
||||||
- template: darwin/product-build-darwin-sign.yml
|
- template: darwin/product-build-darwin-sign.yml
|
||||||
|
|
||||||
|
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_WEB'], true)) }}:
|
||||||
|
- stage: Web
|
||||||
|
dependsOn:
|
||||||
|
- Compile
|
||||||
|
pool: vscode-1es-linux
|
||||||
|
jobs:
|
||||||
|
- ${{ if eq(parameters.VSCODE_BUILD_WEB, true) }}:
|
||||||
|
- job: Web
|
||||||
|
variables:
|
||||||
|
VSCODE_ARCH: x64
|
||||||
|
steps:
|
||||||
|
- template: web/product-build-web.yml
|
||||||
|
|
||||||
- ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), ne(variables['VSCODE_PUBLISH'], 'false')) }}:
|
- ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), ne(variables['VSCODE_PUBLISH'], 'false')) }}:
|
||||||
- stage: Publish
|
- stage: Publish
|
||||||
dependsOn:
|
dependsOn:
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
|
parameters:
|
||||||
|
- name: VSCODE_QUALITY
|
||||||
|
type: string
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- task: NodeTool@0
|
- task: NodeTool@0
|
||||||
inputs:
|
inputs:
|
||||||
versionSpec: "16.x"
|
versionSpec: "16.x"
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- task: AzureKeyVault@1
|
- task: AzureKeyVault@1
|
||||||
displayName: "Azure Key Vault: Get Secrets"
|
displayName: "Azure Key Vault: Get Secrets"
|
||||||
inputs:
|
inputs:
|
||||||
@@ -10,6 +15,7 @@ steps:
|
|||||||
KeyVaultName: vscode
|
KeyVaultName: vscode
|
||||||
SecretsFilter: "github-distro-mixin-password"
|
SecretsFilter: "github-distro-mixin-password"
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
cat << EOF > ~/.netrc
|
cat << EOF > ~/.netrc
|
||||||
@@ -22,6 +28,7 @@ steps:
|
|||||||
git config user.name "VSCode"
|
git config user.name "VSCode"
|
||||||
displayName: Prepare tooling
|
displayName: Prepare tooling
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
|
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
|
||||||
@@ -30,6 +37,7 @@ steps:
|
|||||||
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
|
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
|
||||||
displayName: Checkout override commit
|
displayName: Checkout override commit
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
|
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
|
||||||
@@ -94,6 +102,7 @@ steps:
|
|||||||
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
|
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
|
||||||
displayName: Create node_modules archive
|
displayName: Create node_modules archive
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
# Mixin must run before optimize, because the CSS loader will inline small SVGs
|
# Mixin must run before optimize, because the CSS loader will inline small SVGs
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
@@ -107,6 +116,7 @@ steps:
|
|||||||
GITHUB_TOKEN: "$(github-distro-mixin-password)"
|
GITHUB_TOKEN: "$(github-distro-mixin-password)"
|
||||||
displayName: Compile & Hygiene
|
displayName: Compile & Hygiene
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
yarn --cwd test/smoke compile
|
yarn --cwd test/smoke compile
|
||||||
@@ -114,6 +124,7 @@ steps:
|
|||||||
displayName: Compile test suites
|
displayName: Compile test suites
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
|
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- task: AzureCLI@2
|
- task: AzureCLI@2
|
||||||
inputs:
|
inputs:
|
||||||
azureSubscription: "vscode-builds-subscription"
|
azureSubscription: "vscode-builds-subscription"
|
||||||
@@ -125,6 +136,7 @@ steps:
|
|||||||
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_ID]$env:servicePrincipalId"
|
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_ID]$env:servicePrincipalId"
|
||||||
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_SECRET;issecret=true]$env:servicePrincipalKey"
|
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_SECRET;issecret=true]$env:servicePrincipalKey"
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
AZURE_STORAGE_ACCOUNT="ticino" \
|
AZURE_STORAGE_ACCOUNT="ticino" \
|
||||||
@@ -133,31 +145,34 @@ steps:
|
|||||||
AZURE_CLIENT_SECRET="$(AZURE_CLIENT_SECRET)" \
|
AZURE_CLIENT_SECRET="$(AZURE_CLIENT_SECRET)" \
|
||||||
node build/azure-pipelines/upload-sourcemaps
|
node build/azure-pipelines/upload-sourcemaps
|
||||||
displayName: Upload sourcemaps
|
displayName: Upload sourcemaps
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -
|
set -
|
||||||
./build/azure-pipelines/common/extract-telemetry.sh
|
./build/azure-pipelines/common/extract-telemetry.sh
|
||||||
displayName: Extract Telemetry
|
displayName: Extract Telemetry
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
tar -cz --ignore-failed-read -f $(Build.ArtifactStagingDirectory)/compilation.tar.gz .build out-* test/integration/browser/out test/smoke/out test/automation/out
|
tar -cz --ignore-failed-read -f $(Build.ArtifactStagingDirectory)/compilation.tar.gz .build out-* test/integration/browser/out test/smoke/out test/automation/out
|
||||||
displayName: Compress compilation artifact
|
displayName: Compress compilation artifact
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- task: PublishPipelineArtifact@1
|
- task: PublishPipelineArtifact@1
|
||||||
inputs:
|
inputs:
|
||||||
targetPath: $(Build.ArtifactStagingDirectory)/compilation.tar.gz
|
targetPath: $(Build.ArtifactStagingDirectory)/compilation.tar.gz
|
||||||
artifactName: Compilation
|
artifactName: Compilation
|
||||||
displayName: Publish compilation artifact
|
displayName: Publish compilation artifact
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
||||||
yarn download-builtin-extensions-cg
|
yarn download-builtin-extensions-cg
|
||||||
displayName: Built-in extensions component details
|
displayName: Built-in extensions component details
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
|
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
|
||||||
displayName: "Component Detection"
|
displayName: "Component Detection"
|
||||||
inputs:
|
inputs:
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ $stages = @(
|
|||||||
if ($env:VSCODE_BUILD_STAGE_WINDOWS -eq 'True') { 'Windows' }
|
if ($env:VSCODE_BUILD_STAGE_WINDOWS -eq 'True') { 'Windows' }
|
||||||
if ($env:VSCODE_BUILD_STAGE_LINUX -eq 'True') { 'Linux' }
|
if ($env:VSCODE_BUILD_STAGE_LINUX -eq 'True') { 'Linux' }
|
||||||
if ($env:VSCODE_BUILD_STAGE_MACOS -eq 'True') { 'macOS' }
|
if ($env:VSCODE_BUILD_STAGE_MACOS -eq 'True') { 'macOS' }
|
||||||
|
if ($env:VSCODE_BUILD_STAGE_WEB -eq 'True') { 'Web' }
|
||||||
)
|
)
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
|||||||
@@ -109,6 +109,7 @@ steps:
|
|||||||
if ($env:VSCODE_BUILD_STAGE_WINDOWS -eq 'True') { 'Windows' }
|
if ($env:VSCODE_BUILD_STAGE_WINDOWS -eq 'True') { 'Windows' }
|
||||||
if ($env:VSCODE_BUILD_STAGE_LINUX -eq 'True') { 'Linux' }
|
if ($env:VSCODE_BUILD_STAGE_LINUX -eq 'True') { 'Linux' }
|
||||||
if ($env:VSCODE_BUILD_STAGE_MACOS -eq 'True') { 'macOS' }
|
if ($env:VSCODE_BUILD_STAGE_MACOS -eq 'True') { 'macOS' }
|
||||||
|
if ($env:VSCODE_BUILD_STAGE_WEB -eq 'True') { 'Web' }
|
||||||
)
|
)
|
||||||
Write-Host "Stages to check: $stages"
|
Write-Host "Stages to check: $stages"
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const cp = require("child_process");
|
const cp = require("child_process");
|
||||||
let tag = '';
|
let tag = '';
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import * as cp from 'child_process';
|
import * as cp from 'child_process';
|
||||||
|
|
||||||
let tag = '';
|
let tag = '';
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
const cp = require("child_process");
|
const cp = require("child_process");
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as cp from 'child_process';
|
import * as cp from 'child_process';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const es = require("event-stream");
|
const es = require("event-stream");
|
||||||
const Vinyl = require("vinyl");
|
const Vinyl = require("vinyl");
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import * as es from 'event-stream';
|
import * as es from 'event-stream';
|
||||||
import * as Vinyl from 'vinyl';
|
import * as Vinyl from 'vinyl';
|
||||||
import * as vfs from 'vinyl-fs';
|
import * as vfs from 'vinyl-fs';
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.getSettingsSearchBuildId = exports.shouldSetupSettingsSearch = void 0;
|
exports.getSettingsSearchBuildId = exports.shouldSetupSettingsSearch = void 0;
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
@@ -52,7 +52,7 @@ function generateVSCodeConfigurationTask() {
|
|||||||
const timer = setTimeout(() => {
|
const timer = setTimeout(() => {
|
||||||
codeProc.kill();
|
codeProc.kill();
|
||||||
reject(new Error('export-default-configuration process timed out'));
|
reject(new Error('export-default-configuration process timed out'));
|
||||||
}, 12 * 1000);
|
}, 60 * 1000);
|
||||||
codeProc.on('error', err => {
|
codeProc.on('error', err => {
|
||||||
clearTimeout(timer);
|
clearTimeout(timer);
|
||||||
reject(err);
|
reject(err);
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as os from 'os';
|
import * as os from 'os';
|
||||||
import * as cp from 'child_process';
|
import * as cp from 'child_process';
|
||||||
@@ -63,7 +61,7 @@ function generateVSCodeConfigurationTask(): Promise<string | undefined> {
|
|||||||
const timer = setTimeout(() => {
|
const timer = setTimeout(() => {
|
||||||
codeProc.kill();
|
codeProc.kill();
|
||||||
reject(new Error('export-default-configuration process timed out'));
|
reject(new Error('export-default-configuration process timed out'));
|
||||||
}, 12 * 1000);
|
}, 60 * 1000);
|
||||||
|
|
||||||
codeProc.on('error', err => {
|
codeProc.on('error', err => {
|
||||||
clearTimeout(timer);
|
clearTimeout(timer);
|
||||||
|
|||||||
@@ -1,14 +1,16 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const es = require("event-stream");
|
const es = require("event-stream");
|
||||||
const vfs = require("vinyl-fs");
|
const vfs = require("vinyl-fs");
|
||||||
const merge = require("gulp-merge-json");
|
const merge = require("gulp-merge-json");
|
||||||
const gzip = require("gulp-gzip");
|
const gzip = require("gulp-gzip");
|
||||||
const identity_1 = require("@azure/identity");
|
const identity_1 = require("@azure/identity");
|
||||||
|
const path = require("path");
|
||||||
|
const fs_1 = require("fs");
|
||||||
const azure = require('gulp-azure-storage');
|
const azure = require('gulp-azure-storage');
|
||||||
const commit = process.env['VSCODE_DISTRO_COMMIT'] || process.env['BUILD_SOURCEVERSION'];
|
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']);
|
const credential = new identity_1.ClientSecretCredential(process.env['AZURE_TENANT_ID'], process.env['AZURE_CLIENT_ID'], process.env['AZURE_CLIENT_SECRET']);
|
||||||
@@ -18,8 +20,8 @@ function main() {
|
|||||||
.pipe(merge({
|
.pipe(merge({
|
||||||
fileName: 'combined.nls.metadata.json',
|
fileName: 'combined.nls.metadata.json',
|
||||||
jsonSpace: '',
|
jsonSpace: '',
|
||||||
|
concatArrays: true,
|
||||||
edit: (parsedJson, file) => {
|
edit: (parsedJson, file) => {
|
||||||
let key;
|
|
||||||
if (file.base === 'out-vscode-web-min') {
|
if (file.base === 'out-vscode-web-min') {
|
||||||
return { vscode: parsedJson };
|
return { vscode: parsedJson };
|
||||||
}
|
}
|
||||||
@@ -63,7 +65,11 @@ function main() {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
key = 'vscode.' + file.relative.split('/')[0];
|
// Get extension id and use that as the key
|
||||||
|
const folderPath = path.join(file.base, file.relative.split('/')[0]);
|
||||||
|
const manifest = (0, fs_1.readFileSync)(path.join(folderPath, 'package.json'), 'utf-8');
|
||||||
|
const manifestJson = JSON.parse(manifest);
|
||||||
|
const key = manifestJson.publisher + '.' + manifestJson.name;
|
||||||
return { [key]: parsedJson };
|
return { [key]: parsedJson };
|
||||||
},
|
},
|
||||||
}))
|
}))
|
||||||
|
|||||||
@@ -3,14 +3,14 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import * as es from 'event-stream';
|
import * as es from 'event-stream';
|
||||||
import * as Vinyl from 'vinyl';
|
import * as Vinyl from 'vinyl';
|
||||||
import * as vfs from 'vinyl-fs';
|
import * as vfs from 'vinyl-fs';
|
||||||
import * as merge from 'gulp-merge-json';
|
import * as merge from 'gulp-merge-json';
|
||||||
import * as gzip from 'gulp-gzip';
|
import * as gzip from 'gulp-gzip';
|
||||||
import { ClientSecretCredential } from '@azure/identity';
|
import { ClientSecretCredential } from '@azure/identity';
|
||||||
|
import path = require('path');
|
||||||
|
import { readFileSync } from 'fs';
|
||||||
const azure = require('gulp-azure-storage');
|
const azure = require('gulp-azure-storage');
|
||||||
|
|
||||||
const commit = process.env['VSCODE_DISTRO_COMMIT'] || process.env['BUILD_SOURCEVERSION'];
|
const commit = process.env['VSCODE_DISTRO_COMMIT'] || process.env['BUILD_SOURCEVERSION'];
|
||||||
@@ -33,8 +33,8 @@ function main(): Promise<void> {
|
|||||||
.pipe(merge({
|
.pipe(merge({
|
||||||
fileName: 'combined.nls.metadata.json',
|
fileName: 'combined.nls.metadata.json',
|
||||||
jsonSpace: '',
|
jsonSpace: '',
|
||||||
|
concatArrays: true,
|
||||||
edit: (parsedJson, file) => {
|
edit: (parsedJson, file) => {
|
||||||
let key;
|
|
||||||
if (file.base === 'out-vscode-web-min') {
|
if (file.base === 'out-vscode-web-min') {
|
||||||
return { vscode: parsedJson };
|
return { vscode: parsedJson };
|
||||||
}
|
}
|
||||||
@@ -82,7 +82,12 @@ function main(): Promise<void> {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
key = 'vscode.' + file.relative.split('/')[0];
|
|
||||||
|
// Get extension id and use that as the key
|
||||||
|
const folderPath = path.join(file.base, file.relative.split('/')[0]);
|
||||||
|
const manifest = readFileSync(path.join(folderPath, 'package.json'), 'utf-8');
|
||||||
|
const manifestJson = JSON.parse(manifest);
|
||||||
|
const key = manifestJson.publisher + '.' + manifestJson.name;
|
||||||
return { [key]: parsedJson };
|
return { [key]: parsedJson };
|
||||||
},
|
},
|
||||||
}))
|
}))
|
||||||
@@ -113,4 +118,3 @@ main().catch(err => {
|
|||||||
console.error(err);
|
console.error(err);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const es = require("event-stream");
|
const es = require("event-stream");
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as es from 'event-stream';
|
import * as es from 'event-stream';
|
||||||
import * as Vinyl from 'vinyl';
|
import * as Vinyl from 'vinyl';
|
||||||
|
|||||||
@@ -163,6 +163,7 @@ steps:
|
|||||||
|
|
||||||
cd $ROOT && tar --owner=0 --group=0 -czf $WEB_TARBALL_PATH $WEB_BUILD_NAME
|
cd $ROOT && tar --owner=0 --group=0 -czf $WEB_TARBALL_PATH $WEB_BUILD_NAME
|
||||||
displayName: Prepare for publish
|
displayName: Prepare for publish
|
||||||
|
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
||||||
|
|
||||||
- publish: $(Agent.BuildDirectory)/vscode-web.tar.gz
|
- publish: $(Agent.BuildDirectory)/vscode-web.tar.gz
|
||||||
artifact: vscode_web_linux_standalone_archive-unsigned
|
artifact: vscode_web_linux_standalone_archive-unsigned
|
||||||
|
|||||||
247
build/azure-pipelines/win32/product-build-win32-test.yml
Normal file
247
build/azure-pipelines/win32/product-build-win32-test.yml
Normal file
@@ -0,0 +1,247 @@
|
|||||||
|
parameters:
|
||||||
|
- name: VSCODE_QUALITY
|
||||||
|
type: string
|
||||||
|
- name: VSCODE_RUN_UNIT_TESTS
|
||||||
|
type: boolean
|
||||||
|
- name: VSCODE_RUN_INTEGRATION_TESTS
|
||||||
|
type: boolean
|
||||||
|
- name: VSCODE_RUN_SMOKE_TESTS
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
$env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
|
||||||
|
exec { yarn npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install" }
|
||||||
|
displayName: Download Electron and Playwright
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_RUN_UNIT_TESTS, true) }}:
|
||||||
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
exec { yarn electron $(VSCODE_ARCH) }
|
||||||
|
exec { .\scripts\test.bat --tfs "Unit Tests" }
|
||||||
|
displayName: Run unit tests (Electron)
|
||||||
|
timeoutInMinutes: 15
|
||||||
|
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
exec { yarn test-node }
|
||||||
|
displayName: Run unit tests (node.js)
|
||||||
|
timeoutInMinutes: 15
|
||||||
|
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
exec { node test/unit/browser/index.js --sequential --browser chromium --browser firefox --tfs "Browser Unit Tests" }
|
||||||
|
displayName: Run unit tests (Browser, Chromium & Firefox)
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
exec { yarn electron $(VSCODE_ARCH) }
|
||||||
|
exec { .\scripts\test.bat --build --tfs "Unit Tests" }
|
||||||
|
displayName: Run unit tests (Electron)
|
||||||
|
timeoutInMinutes: 15
|
||||||
|
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
exec { yarn test-node --build }
|
||||||
|
displayName: Run unit tests (node.js)
|
||||||
|
timeoutInMinutes: 15
|
||||||
|
|
||||||
|
- 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
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}:
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
exec { yarn gulp `
|
||||||
|
compile-extension:configuration-editing `
|
||||||
|
compile-extension:css-language-features-server `
|
||||||
|
compile-extension:emmet `
|
||||||
|
compile-extension:git `
|
||||||
|
compile-extension:github-authentication `
|
||||||
|
compile-extension:html-language-features-server `
|
||||||
|
compile-extension:ipynb `
|
||||||
|
compile-extension:json-language-features-server `
|
||||||
|
compile-extension:markdown-language-features-server `
|
||||||
|
compile-extension:markdown-language-features `
|
||||||
|
compile-extension-media `
|
||||||
|
compile-extension:microsoft-authentication `
|
||||||
|
compile-extension:typescript-language-features `
|
||||||
|
compile-extension:vscode-api-tests `
|
||||||
|
compile-extension:vscode-colorize-tests `
|
||||||
|
compile-extension:vscode-notebook-tests `
|
||||||
|
compile-extension:vscode-test-resolver `
|
||||||
|
}
|
||||||
|
displayName: Build integration tests
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
exec { .\scripts\test-integration.bat --tfs "Integration Tests" }
|
||||||
|
displayName: Run integration tests (Electron)
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
exec { .\scripts\test-web-integration.bat --browser firefox }
|
||||||
|
displayName: Run integration tests (Browser, Firefox)
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
exec { .\scripts\test-remote-integration.bat }
|
||||||
|
displayName: Run integration tests (Remote)
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- 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)\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)"; .\scripts\test-integration.bat --build --tfs "Integration Tests" }
|
||||||
|
displayName: Run integration tests (Electron)
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
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
|
||||||
|
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
$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)"; .\scripts\test-remote-integration.bat }
|
||||||
|
displayName: Run integration tests (Remote)
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}:
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
exec {.\build\azure-pipelines\win32\listprocesses.bat }
|
||||||
|
displayName: Diagnostics before smoke test run
|
||||||
|
continueOnError: true
|
||||||
|
condition: succeededOrFailed()
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
exec { yarn --cwd test/smoke compile }
|
||||||
|
displayName: Compile smoke tests
|
||||||
|
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
exec { yarn smoketest-no-compile --tracing }
|
||||||
|
displayName: Run smoke tests (Electron)
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
$AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
|
||||||
|
exec { yarn smoketest-no-compile --tracing --build "$AppRoot" }
|
||||||
|
displayName: Run smoke tests (Electron)
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
|
||||||
|
- 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 --tracing --headless }
|
||||||
|
displayName: Run smoke tests (Browser, Chromium)
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
$AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
|
||||||
|
$env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"
|
||||||
|
exec { yarn gulp compile-extension:vscode-test-resolver }
|
||||||
|
exec { yarn smoketest-no-compile --tracing --remote --build "$AppRoot" }
|
||||||
|
displayName: Run smoke tests (Remote)
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
exec {.\build\azure-pipelines\win32\listprocesses.bat }
|
||||||
|
displayName: Diagnostics after smoke test run
|
||||||
|
continueOnError: true
|
||||||
|
condition: succeededOrFailed()
|
||||||
|
|
||||||
|
- ${{ if or(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
|
||||||
|
- task: PublishPipelineArtifact@0
|
||||||
|
inputs:
|
||||||
|
targetPath: .build\crashes
|
||||||
|
${{ if and(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
|
artifactName: crash-dump-windows-$(VSCODE_ARCH)-integration-$(System.JobAttempt)
|
||||||
|
${{ elseif and(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
|
||||||
|
artifactName: crash-dump-windows-$(VSCODE_ARCH)-smoke-$(System.JobAttempt)
|
||||||
|
${{ else }}:
|
||||||
|
artifactName: crash-dump-windows-$(VSCODE_ARCH)-$(System.JobAttempt)
|
||||||
|
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:
|
||||||
|
targetPath: node_modules
|
||||||
|
${{ if and(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
|
artifactName: node-modules-windows-$(VSCODE_ARCH)-integration-$(System.JobAttempt)
|
||||||
|
${{ elseif and(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
|
||||||
|
artifactName: node-modules-windows-$(VSCODE_ARCH)-smoke-$(System.JobAttempt)
|
||||||
|
${{ else }}:
|
||||||
|
artifactName: node-modules-windows-$(VSCODE_ARCH)-$(System.JobAttempt)
|
||||||
|
displayName: "Publish Node Modules"
|
||||||
|
continueOnError: true
|
||||||
|
condition: failed()
|
||||||
|
|
||||||
|
- task: PublishPipelineArtifact@0
|
||||||
|
inputs:
|
||||||
|
targetPath: .build\logs
|
||||||
|
${{ if and(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, false)) }}:
|
||||||
|
artifactName: logs-windows-$(VSCODE_ARCH)-integration-$(System.JobAttempt)
|
||||||
|
${{ elseif and(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, false), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
|
||||||
|
artifactName: logs-windows-$(VSCODE_ARCH)-smoke-$(System.JobAttempt)
|
||||||
|
${{ else }}:
|
||||||
|
artifactName: logs-windows-$(VSCODE_ARCH)-$(System.JobAttempt)
|
||||||
|
displayName: "Publish Log Files"
|
||||||
|
continueOnError: true
|
||||||
|
condition: succeededOrFailed()
|
||||||
|
|
||||||
|
- task: PublishTestResults@2
|
||||||
|
displayName: Publish Tests Results
|
||||||
|
inputs:
|
||||||
|
testResultsFiles: "*-results.xml"
|
||||||
|
searchFolder: "$(Build.ArtifactStagingDirectory)/test-results"
|
||||||
|
condition: succeededOrFailed()
|
||||||
@@ -1,4 +1,21 @@
|
|||||||
|
parameters:
|
||||||
|
- name: VSCODE_PUBLISH
|
||||||
|
type: boolean
|
||||||
|
- name: VSCODE_QUALITY
|
||||||
|
type: string
|
||||||
|
- name: VSCODE_RUN_UNIT_TESTS
|
||||||
|
type: boolean
|
||||||
|
- name: VSCODE_RUN_INTEGRATION_TESTS
|
||||||
|
type: boolean
|
||||||
|
- name: VSCODE_RUN_SMOKE_TESTS
|
||||||
|
type: boolean
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
|
- checkout: self
|
||||||
|
fetchDepth: 1
|
||||||
|
retryCountOnTaskFailure: 3
|
||||||
|
|
||||||
- task: NodeTool@0
|
- task: NodeTool@0
|
||||||
inputs:
|
inputs:
|
||||||
versionSpec: "16.x"
|
versionSpec: "16.x"
|
||||||
@@ -8,6 +25,7 @@ steps:
|
|||||||
versionSpec: "3.x"
|
versionSpec: "3.x"
|
||||||
addToPath: true
|
addToPath: true
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- task: AzureKeyVault@1
|
- task: AzureKeyVault@1
|
||||||
displayName: "Azure Key Vault: Get Secrets"
|
displayName: "Azure Key Vault: Get Secrets"
|
||||||
inputs:
|
inputs:
|
||||||
@@ -15,18 +33,21 @@ steps:
|
|||||||
KeyVaultName: vscode
|
KeyVaultName: vscode
|
||||||
SecretsFilter: "github-distro-mixin-password,ESRP-PKI,esrp-aad-username,esrp-aad-password"
|
SecretsFilter: "github-distro-mixin-password,ESRP-PKI,esrp-aad-username,esrp-aad-password"
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- task: DownloadPipelineArtifact@2
|
- task: DownloadPipelineArtifact@2
|
||||||
inputs:
|
inputs:
|
||||||
artifact: Compilation
|
artifact: Compilation
|
||||||
path: $(Build.ArtifactStagingDirectory)
|
path: $(Build.ArtifactStagingDirectory)
|
||||||
displayName: Download compilation output
|
displayName: Download compilation output
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- task: ExtractFiles@1
|
- task: ExtractFiles@1
|
||||||
displayName: Extract compilation output
|
displayName: Extract compilation output
|
||||||
inputs:
|
inputs:
|
||||||
archiveFilePatterns: "$(Build.ArtifactStagingDirectory)/compilation.tar.gz"
|
archiveFilePatterns: "$(Build.ArtifactStagingDirectory)/compilation.tar.gz"
|
||||||
cleanDestinationFolder: false
|
cleanDestinationFolder: false
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- powershell: |
|
- powershell: |
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
@@ -36,6 +57,7 @@ steps:
|
|||||||
exec { git config user.name "VSCode" }
|
exec { git config user.name "VSCode" }
|
||||||
displayName: Prepare tooling
|
displayName: Prepare tooling
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- powershell: |
|
- powershell: |
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
@@ -46,6 +68,7 @@ steps:
|
|||||||
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
|
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
|
||||||
displayName: Checkout override commit
|
displayName: Checkout override commit
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- powershell: |
|
- powershell: |
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
@@ -53,6 +76,7 @@ steps:
|
|||||||
displayName: Merge distro
|
displayName: Merge distro
|
||||||
|
|
||||||
- powershell: |
|
- powershell: |
|
||||||
|
if (!(Test-Path ".build")) { New-Item -Path ".build" -ItemType Directory }
|
||||||
"$(VSCODE_ARCH)" | Out-File -Encoding ascii -NoNewLine .build\arch
|
"$(VSCODE_ARCH)" | Out-File -Encoding ascii -NoNewLine .build\arch
|
||||||
"$env:ENABLE_TERRAPIN" | Out-File -Encoding ascii -NoNewLine .build\terrapin
|
"$env:ENABLE_TERRAPIN" | Out-File -Encoding ascii -NoNewLine .build\terrapin
|
||||||
node build/azure-pipelines/common/computeNodeModulesCacheKey.js > .build/yarnlockhash
|
node build/azure-pipelines/common/computeNodeModulesCacheKey.js > .build/yarnlockhash
|
||||||
@@ -104,20 +128,29 @@ steps:
|
|||||||
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
|
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
|
||||||
displayName: Create node_modules archive
|
displayName: Create node_modules archive
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- powershell: |
|
- powershell: |
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
exec { node build/azure-pipelines/mixin }
|
exec { node build/azure-pipelines/mixin }
|
||||||
displayName: Mix in quality
|
displayName: Mix in quality
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
|
- powershell: |
|
||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
exec { node build\lib\policies }
|
||||||
|
displayName: Generate Group Policy definitions
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- powershell: |
|
- powershell: |
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
$env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
|
$env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
|
||||||
exec { yarn npm-run-all -lp "electron $(VSCODE_ARCH)" }
|
exec { yarn gulp "transpile-client" "transpile-extensions" }
|
||||||
displayName: Download Electron
|
displayName: Transpile
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- powershell: |
|
- powershell: |
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
@@ -126,20 +159,23 @@ steps:
|
|||||||
echo "##vso[task.setvariable variable=CodeSigningFolderPath]$(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)"
|
echo "##vso[task.setvariable variable=CodeSigningFolderPath]$(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)"
|
||||||
displayName: Build
|
displayName: Build
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- powershell: |
|
- powershell: |
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
$env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
|
$env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
|
||||||
exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-inno-updater" }
|
exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-inno-updater" }
|
||||||
displayName: Prepare Package
|
displayName: Prepare Package
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- powershell: |
|
- powershell: |
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
exec { node build/azure-pipelines/mixin --server }
|
exec { node build/azure-pipelines/mixin --server }
|
||||||
displayName: Mix in quality
|
displayName: Mix in quality
|
||||||
|
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64'))
|
||||||
|
|
||||||
|
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||||
- powershell: |
|
- powershell: |
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
@@ -150,156 +186,25 @@ steps:
|
|||||||
displayName: Build Server
|
displayName: Build Server
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64'))
|
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64'))
|
||||||
|
|
||||||
- powershell: |
|
- ${{ if or(eq(parameters.VSCODE_RUN_UNIT_TESTS, true), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
- template: product-build-win32-test.yml
|
||||||
$ErrorActionPreference = "Stop"
|
parameters:
|
||||||
$env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
|
VSCODE_QUALITY: ${{ parameters.VSCODE_QUALITY }}
|
||||||
exec { yarn npm-run-all -lp "playwright-install" }
|
VSCODE_RUN_UNIT_TESTS: ${{ parameters.VSCODE_RUN_UNIT_TESTS }}
|
||||||
displayName: Download Playwright
|
VSCODE_RUN_INTEGRATION_TESTS: ${{ parameters.VSCODE_RUN_INTEGRATION_TESTS }}
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
|
VSCODE_RUN_SMOKE_TESTS: ${{ parameters.VSCODE_RUN_SMOKE_TESTS }}
|
||||||
|
|
||||||
- powershell: |
|
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
|
||||||
$ErrorActionPreference = "Stop"
|
|
||||||
exec { yarn electron $(VSCODE_ARCH) }
|
|
||||||
exec { .\scripts\test.bat --build --tfs "Unit Tests" }
|
|
||||||
displayName: Run unit tests (Electron)
|
|
||||||
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-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: |
|
|
||||||
# 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)\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)"; .\scripts\test-integration.bat --build --tfs "Integration Tests" }
|
|
||||||
displayName: Run integration tests (Electron)
|
|
||||||
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)"; .\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: |
|
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
|
||||||
$ErrorActionPreference = "Stop"
|
|
||||||
$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)"; .\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"
|
|
||||||
$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 --tracing --build "$AppRoot" }
|
|
||||||
displayName: Run smoke tests (Electron)
|
|
||||||
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"
|
|
||||||
$AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
|
|
||||||
$env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"
|
|
||||||
exec { yarn smoketest-no-compile --tracing --remote --build "$AppRoot" }
|
|
||||||
displayName: Run smoke 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 after smoke test run
|
|
||||||
continueOnError: true
|
|
||||||
condition: and(succeededOrFailed(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
|
|
||||||
|
|
||||||
- task: PublishPipelineArtifact@0
|
|
||||||
inputs:
|
|
||||||
artifactName: crash-dump-windows-$(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-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(failed(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
|
|
||||||
|
|
||||||
- task: PublishTestResults@2
|
|
||||||
displayName: Publish Tests Results
|
|
||||||
inputs:
|
|
||||||
testResultsFiles: "*-results.xml"
|
|
||||||
searchFolder: "$(Build.ArtifactStagingDirectory)/test-results"
|
|
||||||
condition: and(succeededOrFailed(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- task: UseDotNet@2
|
- task: UseDotNet@2
|
||||||
inputs:
|
inputs:
|
||||||
version: 3.x
|
version: 3.x
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- task: EsrpClientTool@1
|
- task: EsrpClientTool@1
|
||||||
displayName: Download ESRPClient
|
displayName: Download ESRPClient
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- powershell: |
|
- powershell: |
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
@@ -310,22 +215,22 @@ steps:
|
|||||||
$EsrpCliDllPath = (gci -recurse -filter esrpcli.dll $(Agent.TempDirectory)\esrpcli | Select-Object -last 1).FullName
|
$EsrpCliDllPath = (gci -recurse -filter esrpcli.dll $(Agent.TempDirectory)\esrpcli | Select-Object -last 1).FullName
|
||||||
echo "##vso[task.setvariable variable=EsrpCliDllPath]$EsrpCliDllPath"
|
echo "##vso[task.setvariable variable=EsrpCliDllPath]$EsrpCliDllPath"
|
||||||
displayName: Find ESRP CLI
|
displayName: Find ESRP CLI
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- powershell: |
|
- powershell: |
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
exec { node build\azure-pipelines\common\sign $env:EsrpCliDllPath windows $(ESRP-PKI) $(esrp-aad-username) $(esrp-aad-password) $(CodeSigningFolderPath) '*.dll,*.exe,*.node' }
|
exec { node build\azure-pipelines\common\sign $env:EsrpCliDllPath windows $(ESRP-PKI) $(esrp-aad-username) $(esrp-aad-password) $(CodeSigningFolderPath) '*.dll,*.exe,*.node' }
|
||||||
displayName: Codesign
|
displayName: Codesign
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- powershell: |
|
- powershell: |
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-archive" }
|
exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-archive" }
|
||||||
displayName: Package archive
|
displayName: Package archive
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- powershell: |
|
- powershell: |
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
@@ -335,60 +240,64 @@ steps:
|
|||||||
exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-system-setup" --sign }
|
exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-system-setup" --sign }
|
||||||
exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-user-setup" --sign }
|
exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-user-setup" --sign }
|
||||||
displayName: Package setups
|
displayName: Package setups
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- powershell: |
|
- powershell: |
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
.\build\azure-pipelines\win32\prepare-publish.ps1
|
.\build\azure-pipelines\win32\prepare-publish.ps1
|
||||||
displayName: Publish
|
displayName: Publish
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
- publish: $(System.DefaultWorkingDirectory)\.build\win32-$(VSCODE_ARCH)\archive\$(ARCHIVE_NAME)
|
|
||||||
artifact: vscode_client_win32_$(VSCODE_ARCH)_archive
|
|
||||||
displayName: Publish archive
|
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
- publish: $(System.DefaultWorkingDirectory)\.build\win32-$(VSCODE_ARCH)\system-setup\$(SYSTEM_SETUP_NAME)
|
|
||||||
artifact: vscode_client_win32_$(VSCODE_ARCH)_setup
|
|
||||||
displayName: Publish system setup
|
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
- publish: $(System.DefaultWorkingDirectory)\.build\win32-$(VSCODE_ARCH)\user-setup\$(USER_SETUP_NAME)
|
|
||||||
artifact: vscode_client_win32_$(VSCODE_ARCH)_user-setup
|
|
||||||
displayName: Publish user setup
|
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
- publish: $(System.DefaultWorkingDirectory)\.build\vscode-server-win32-$(VSCODE_ARCH).zip
|
|
||||||
artifact: vscode_server_win32_$(VSCODE_ARCH)_archive
|
|
||||||
displayName: Publish server archive
|
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
|
|
||||||
|
|
||||||
- publish: $(System.DefaultWorkingDirectory)\.build\vscode-server-win32-$(VSCODE_ARCH)-web.zip
|
|
||||||
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'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
|
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
|
||||||
displayName: Generate SBOM (client)
|
displayName: Generate SBOM (client)
|
||||||
inputs:
|
inputs:
|
||||||
BuildDropPath: $(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)
|
BuildDropPath: $(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)
|
||||||
PackageName: Visual Studio Code
|
PackageName: Visual Studio Code
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- publish: $(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)/_manifest
|
- publish: $(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)/_manifest
|
||||||
displayName: Publish SBOM (client)
|
displayName: Publish SBOM (client)
|
||||||
artifact: vscode_client_win32_$(VSCODE_ARCH)_sbom
|
artifact: vscode_client_win32_$(VSCODE_ARCH)_sbom
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
|
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
|
||||||
displayName: Generate SBOM (server)
|
displayName: Generate SBOM (server)
|
||||||
inputs:
|
inputs:
|
||||||
BuildDropPath: $(agent.builddirectory)/vscode-server-win32-$(VSCODE_ARCH)
|
BuildDropPath: $(agent.builddirectory)/vscode-server-win32-$(VSCODE_ARCH)
|
||||||
PackageName: Visual Studio Code Server
|
PackageName: Visual Studio Code Server
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
|
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64'))
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
- publish: $(agent.builddirectory)/vscode-server-win32-$(VSCODE_ARCH)/_manifest
|
- publish: $(agent.builddirectory)/vscode-server-win32-$(VSCODE_ARCH)/_manifest
|
||||||
displayName: Publish SBOM (server)
|
displayName: Publish SBOM (server)
|
||||||
artifact: vscode_server_win32_$(VSCODE_ARCH)_sbom
|
artifact: vscode_server_win32_$(VSCODE_ARCH)_sbom
|
||||||
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
|
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64'))
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
|
- publish: $(System.DefaultWorkingDirectory)\.build\win32-$(VSCODE_ARCH)\archive\$(ARCHIVE_NAME)
|
||||||
|
artifact: vscode_client_win32_$(VSCODE_ARCH)_archive
|
||||||
|
displayName: Publish archive
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
|
- publish: $(System.DefaultWorkingDirectory)\.build\win32-$(VSCODE_ARCH)\system-setup\$(SYSTEM_SETUP_NAME)
|
||||||
|
artifact: vscode_client_win32_$(VSCODE_ARCH)_setup
|
||||||
|
displayName: Publish system setup
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
|
- publish: $(System.DefaultWorkingDirectory)\.build\win32-$(VSCODE_ARCH)\user-setup\$(USER_SETUP_NAME)
|
||||||
|
artifact: vscode_client_win32_$(VSCODE_ARCH)_user-setup
|
||||||
|
displayName: Publish user setup
|
||||||
|
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
|
- publish: $(System.DefaultWorkingDirectory)\.build\vscode-server-win32-$(VSCODE_ARCH).zip
|
||||||
|
artifact: vscode_server_win32_$(VSCODE_ARCH)_archive
|
||||||
|
displayName: Publish server archive
|
||||||
|
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64'))
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
|
||||||
|
- publish: $(System.DefaultWorkingDirectory)\.build\vscode-server-win32-$(VSCODE_ARCH)-web.zip
|
||||||
|
artifact: vscode_web_win32_$(VSCODE_ARCH)_archive
|
||||||
|
displayName: Publish web server archive
|
||||||
|
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64'))
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const vscode_universal_bundler_1 = require("vscode-universal-bundler");
|
const vscode_universal_bundler_1 = require("vscode-universal-bundler");
|
||||||
const cross_spawn_promise_1 = require("@malept/cross-spawn-promise");
|
const cross_spawn_promise_1 = require("@malept/cross-spawn-promise");
|
||||||
@@ -71,7 +71,7 @@ async function main() {
|
|||||||
outAppPath,
|
outAppPath,
|
||||||
force: true
|
force: true
|
||||||
});
|
});
|
||||||
let productJson = await fs.readJson(productJsonPath);
|
const productJson = await fs.readJson(productJsonPath);
|
||||||
Object.assign(productJson, {
|
Object.assign(productJson, {
|
||||||
darwinUniversalAssetId: 'darwin-universal'
|
darwinUniversalAssetId: 'darwin-universal'
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import { makeUniversalApp } from 'vscode-universal-bundler';
|
import { makeUniversalApp } from 'vscode-universal-bundler';
|
||||||
import { spawn } from '@malept/cross-spawn-promise';
|
import { spawn } from '@malept/cross-spawn-promise';
|
||||||
import * as fs from 'fs-extra';
|
import * as fs from 'fs-extra';
|
||||||
@@ -80,7 +78,7 @@ async function main() {
|
|||||||
force: true
|
force: true
|
||||||
});
|
});
|
||||||
|
|
||||||
let productJson = await fs.readJson(productJsonPath);
|
const productJson = await fs.readJson(productJsonPath);
|
||||||
Object.assign(productJson, {
|
Object.assign(productJson, {
|
||||||
darwinUniversalAssetId: 'darwin-universal'
|
darwinUniversalAssetId: 'darwin-universal'
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const codesign = require("electron-osx-sign");
|
const codesign = require("electron-osx-sign");
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import * as codesign from 'electron-osx-sign';
|
import * as codesign from 'electron-osx-sign';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as util from '../lib/util';
|
import * as util from '../lib/util';
|
||||||
|
|||||||
@@ -52,7 +52,6 @@ module.exports.unicodeFilter = [
|
|||||||
'!extensions/typescript-language-features/test-workspace/**',
|
'!extensions/typescript-language-features/test-workspace/**',
|
||||||
'!extensions/vscode-api-tests/testWorkspace/**',
|
'!extensions/vscode-api-tests/testWorkspace/**',
|
||||||
'!extensions/vscode-api-tests/testWorkspace2/**',
|
'!extensions/vscode-api-tests/testWorkspace2/**',
|
||||||
'!extensions/vscode-custom-editor-tests/test-workspace/**',
|
|
||||||
'!extensions/**/dist/**',
|
'!extensions/**/dist/**',
|
||||||
'!extensions/**/out/**',
|
'!extensions/**/out/**',
|
||||||
'!extensions/**/snippets/**',
|
'!extensions/**/snippets/**',
|
||||||
@@ -93,7 +92,6 @@ module.exports.indentationFilter = [
|
|||||||
'!extensions/markdown-math/notebook-out/**',
|
'!extensions/markdown-math/notebook-out/**',
|
||||||
'!extensions/vscode-api-tests/testWorkspace/**',
|
'!extensions/vscode-api-tests/testWorkspace/**',
|
||||||
'!extensions/vscode-api-tests/testWorkspace2/**',
|
'!extensions/vscode-api-tests/testWorkspace2/**',
|
||||||
'!extensions/vscode-custom-editor-tests/test-workspace/**',
|
|
||||||
'!build/monaco/**',
|
'!build/monaco/**',
|
||||||
'!build/win32/**',
|
'!build/win32/**',
|
||||||
|
|
||||||
|
|||||||
@@ -17,34 +17,41 @@ const compilation = require('./lib/compilation');
|
|||||||
const monacoapi = require('./lib/monaco-api');
|
const monacoapi = require('./lib/monaco-api');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
|
||||||
let root = path.dirname(__dirname);
|
const root = path.dirname(__dirname);
|
||||||
let sha1 = util.getVersion(root);
|
const sha1 = util.getVersion(root);
|
||||||
let semver = require('./monaco/package.json').version;
|
const semver = require('./monaco/package.json').version;
|
||||||
let headerVersion = semver + '(' + sha1 + ')';
|
const headerVersion = semver + '(' + sha1 + ')';
|
||||||
|
|
||||||
// Build
|
// Build
|
||||||
|
|
||||||
let editorEntryPoints = [
|
const editorEntryPoints = [
|
||||||
{
|
{
|
||||||
name: 'vs/editor/editor.main',
|
name: 'vs/editor/editor.main',
|
||||||
include: [],
|
include: [],
|
||||||
exclude: ['vs/css', 'vs/nls'],
|
exclude: ['vs/css', 'vs/nls'],
|
||||||
prepend: ['out-editor-build/vs/css.js', 'out-editor-build/vs/nls.js'],
|
prepend: [
|
||||||
|
{ path: 'out-editor-build/vs/css.js', amdModuleId: 'vs/css' },
|
||||||
|
{ path: 'out-editor-build/vs/nls.js', amdModuleId: 'vs/nls' }
|
||||||
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'vs/base/common/worker/simpleWorker',
|
name: 'vs/base/common/worker/simpleWorker',
|
||||||
include: ['vs/editor/common/services/editorSimpleWorker'],
|
include: ['vs/editor/common/services/editorSimpleWorker'],
|
||||||
prepend: ['vs/loader.js'],
|
exclude: ['vs/nls'],
|
||||||
append: ['vs/base/worker/workerMain'],
|
prepend: [
|
||||||
|
{ path: 'vs/loader.js' },
|
||||||
|
{ path: 'vs/nls.js', amdModuleId: 'vs/nls' },
|
||||||
|
{ path: 'vs/base/worker/workerMain.js' }
|
||||||
|
],
|
||||||
dest: 'vs/base/worker/workerMain.js'
|
dest: 'vs/base/worker/workerMain.js'
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
let editorResources = [
|
const editorResources = [
|
||||||
'out-editor-build/vs/base/browser/ui/codicons/**/*.ttf'
|
'out-editor-build/vs/base/browser/ui/codicons/**/*.ttf'
|
||||||
];
|
];
|
||||||
|
|
||||||
let BUNDLED_FILE_HEADER = [
|
const BUNDLED_FILE_HEADER = [
|
||||||
'/*!-----------------------------------------------------------',
|
'/*!-----------------------------------------------------------',
|
||||||
' * Copyright (c) Microsoft Corporation. All rights reserved.',
|
' * Copyright (c) Microsoft Corporation. All rights reserved.',
|
||||||
' * Version: ' + headerVersion,
|
' * Version: ' + headerVersion,
|
||||||
@@ -109,12 +116,6 @@ const createESMSourcesAndResourcesTask = task.define('extract-editor-esm', () =>
|
|||||||
'inlineEntryPoint:0.ts',
|
'inlineEntryPoint:0.ts',
|
||||||
'inlineEntryPoint:1.ts',
|
'inlineEntryPoint:1.ts',
|
||||||
'vs/loader.js',
|
'vs/loader.js',
|
||||||
'vs/nls.ts',
|
|
||||||
'vs/nls.build.js',
|
|
||||||
'vs/nls.d.ts',
|
|
||||||
'vs/css.js',
|
|
||||||
'vs/css.build.js',
|
|
||||||
'vs/css.d.ts',
|
|
||||||
'vs/base/worker/workerMain.ts',
|
'vs/base/worker/workerMain.ts',
|
||||||
],
|
],
|
||||||
renames: {
|
renames: {
|
||||||
@@ -224,7 +225,7 @@ const appendJSToESMImportsTask = task.define('append-js-to-esm-imports', () => {
|
|||||||
result.push(line);
|
result.push(line);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
let modifiedLine = (
|
const modifiedLine = (
|
||||||
line
|
line
|
||||||
.replace(/^import(.*)\'([^']+)\'/, `import$1'$2.js'`)
|
.replace(/^import(.*)\'([^']+)\'/, `import$1'$2.js'`)
|
||||||
.replace(/^export \* from \'([^']+)\'/, `export * from '$1.js'`)
|
.replace(/^export \* from \'([^']+)\'/, `export * from '$1.js'`)
|
||||||
@@ -239,10 +240,10 @@ const appendJSToESMImportsTask = task.define('append-js-to-esm-imports', () => {
|
|||||||
* @param {string} contents
|
* @param {string} contents
|
||||||
*/
|
*/
|
||||||
function toExternalDTS(contents) {
|
function toExternalDTS(contents) {
|
||||||
let lines = contents.split(/\r\n|\r|\n/);
|
const lines = contents.split(/\r\n|\r|\n/);
|
||||||
let killNextCloseCurlyBrace = false;
|
let killNextCloseCurlyBrace = false;
|
||||||
for (let i = 0; i < lines.length; i++) {
|
for (let i = 0; i < lines.length; i++) {
|
||||||
let line = lines[i];
|
const line = lines[i];
|
||||||
|
|
||||||
if (killNextCloseCurlyBrace) {
|
if (killNextCloseCurlyBrace) {
|
||||||
if ('}' === line) {
|
if ('}' === line) {
|
||||||
@@ -316,7 +317,7 @@ const finalEditorResourcesTask = task.define('final-editor-resources', () => {
|
|||||||
// package.json
|
// package.json
|
||||||
gulp.src('build/monaco/package.json')
|
gulp.src('build/monaco/package.json')
|
||||||
.pipe(es.through(function (data) {
|
.pipe(es.through(function (data) {
|
||||||
let json = JSON.parse(data.contents.toString());
|
const json = JSON.parse(data.contents.toString());
|
||||||
json.private = false;
|
json.private = false;
|
||||||
data.contents = Buffer.from(JSON.stringify(json, null, ' '));
|
data.contents = Buffer.from(JSON.stringify(json, null, ' '));
|
||||||
this.emit('data', data);
|
this.emit('data', data);
|
||||||
@@ -360,10 +361,10 @@ const finalEditorResourcesTask = task.define('final-editor-resources', () => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let relativePathToMap = path.relative(path.join(data.relative), path.join('min-maps', data.relative + '.map'));
|
const relativePathToMap = path.relative(path.join(data.relative), path.join('min-maps', data.relative + '.map'));
|
||||||
|
|
||||||
let strContents = data.contents.toString();
|
let strContents = data.contents.toString();
|
||||||
let newStr = '//# sourceMappingURL=' + relativePathToMap.replace(/\\/g, '/');
|
const newStr = '//# sourceMappingURL=' + relativePathToMap.replace(/\\/g, '/');
|
||||||
strContents = strContents.replace(/\/\/# sourceMappingURL=[^ ]+$/, newStr);
|
strContents = strContents.replace(/\/\/# sourceMappingURL=[^ ]+$/, newStr);
|
||||||
|
|
||||||
data.contents = Buffer.from(strContents);
|
data.contents = Buffer.from(strContents);
|
||||||
@@ -483,13 +484,13 @@ function createTscCompileTask(watch) {
|
|||||||
cwd: path.join(__dirname, '..'),
|
cwd: path.join(__dirname, '..'),
|
||||||
// stdio: [null, 'pipe', 'inherit']
|
// stdio: [null, 'pipe', 'inherit']
|
||||||
});
|
});
|
||||||
let errors = [];
|
const errors = [];
|
||||||
let reporter = createReporter('monaco');
|
const reporter = createReporter('monaco');
|
||||||
|
|
||||||
/** @type {NodeJS.ReadWriteStream | undefined} */
|
/** @type {NodeJS.ReadWriteStream | undefined} */
|
||||||
let report;
|
let report;
|
||||||
// eslint-disable-next-line no-control-regex
|
// eslint-disable-next-line no-control-regex
|
||||||
let magic = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g; // https://stackoverflow.com/questions/25245716/remove-all-ansi-colors-styles-from-strings
|
const magic = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g; // https://stackoverflow.com/questions/25245716/remove-all-ansi-colors-styles-from-strings
|
||||||
|
|
||||||
child.stdout.on('data', data => {
|
child.stdout.on('data', data => {
|
||||||
let str = String(data);
|
let str = String(data);
|
||||||
@@ -502,12 +503,12 @@ function createTscCompileTask(watch) {
|
|||||||
report.end();
|
report.end();
|
||||||
|
|
||||||
} else if (str) {
|
} else if (str) {
|
||||||
let match = /(.*\(\d+,\d+\): )(.*: )(.*)/.exec(str);
|
const match = /(.*\(\d+,\d+\): )(.*: )(.*)/.exec(str);
|
||||||
if (match) {
|
if (match) {
|
||||||
// trying to massage the message so that it matches the gulp-tsb error messages
|
// trying to massage the message so that it matches the gulp-tsb error messages
|
||||||
// e.g. src/vs/base/common/strings.ts(663,5): error TS2322: Type '1234' is not assignable to type 'string'.
|
// e.g. src/vs/base/common/strings.ts(663,5): error TS2322: Type '1234' is not assignable to type 'string'.
|
||||||
let fullpath = path.join(root, match[1]);
|
const fullpath = path.join(root, match[1]);
|
||||||
let message = match[3];
|
const message = match[3];
|
||||||
reporter(fullpath + message);
|
reporter(fullpath + message);
|
||||||
} else {
|
} else {
|
||||||
reporter(str);
|
reporter(str);
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ const compilations = [
|
|||||||
'json-language-features/client/tsconfig.json',
|
'json-language-features/client/tsconfig.json',
|
||||||
'json-language-features/server/tsconfig.json',
|
'json-language-features/server/tsconfig.json',
|
||||||
'markdown-language-features/preview-src/tsconfig.json',
|
'markdown-language-features/preview-src/tsconfig.json',
|
||||||
|
'markdown-language-features/server/tsconfig.json',
|
||||||
'markdown-language-features/tsconfig.json',
|
'markdown-language-features/tsconfig.json',
|
||||||
'markdown-math/tsconfig.json',
|
'markdown-math/tsconfig.json',
|
||||||
'merge-conflict/tsconfig.json',
|
'merge-conflict/tsconfig.json',
|
||||||
@@ -63,12 +64,13 @@ const compilations = [
|
|||||||
'npm/tsconfig.json',
|
'npm/tsconfig.json',
|
||||||
'php-language-features/tsconfig.json',
|
'php-language-features/tsconfig.json',
|
||||||
'search-result/tsconfig.json',
|
'search-result/tsconfig.json',
|
||||||
|
'references-view/tsconfig.json',
|
||||||
'simple-browser/tsconfig.json',
|
'simple-browser/tsconfig.json',
|
||||||
'typescript-language-features/test-workspace/tsconfig.json',
|
'typescript-language-features/test-workspace/tsconfig.json',
|
||||||
'typescript-language-features/tsconfig.json',
|
'typescript-language-features/tsconfig.json',
|
||||||
'vscode-api-tests/tsconfig.json',
|
'vscode-api-tests/tsconfig.json',
|
||||||
'vscode-colorize-tests/tsconfig.json',
|
'vscode-colorize-tests/tsconfig.json',
|
||||||
'vscode-custom-editor-tests/tsconfig.json',
|
'vscode-notebook-tests/tsconfig.json',
|
||||||
'vscode-test-resolver/tsconfig.json'
|
'vscode-test-resolver/tsconfig.json'
|
||||||
];
|
];
|
||||||
*/
|
*/
|
||||||
@@ -93,7 +95,7 @@ const tasks = compilations.map(function (tsconfigFile) {
|
|||||||
const baseUrl = getBaseUrl(out);
|
const baseUrl = getBaseUrl(out);
|
||||||
|
|
||||||
let headerId, headerOut;
|
let headerId, headerOut;
|
||||||
let index = relativeDirname.indexOf('/');
|
const index = relativeDirname.indexOf('/');
|
||||||
if (index < 0) {
|
if (index < 0) {
|
||||||
headerId = 'microsoft.' + relativeDirname; // {{SQL CARBON EDIT}}
|
headerId = 'microsoft.' + relativeDirname; // {{SQL CARBON EDIT}}
|
||||||
headerOut = 'out';
|
headerOut = 'out';
|
||||||
@@ -102,9 +104,9 @@ const tasks = compilations.map(function (tsconfigFile) {
|
|||||||
headerOut = relativeDirname.substr(index + 1) + '/out';
|
headerOut = relativeDirname.substr(index + 1) + '/out';
|
||||||
}
|
}
|
||||||
|
|
||||||
function createPipeline(build, emitError) {
|
function createPipeline(build, emitError, transpileOnly) {
|
||||||
const nlsDev = require('vscode-nls-dev');
|
const nlsDev = require('vscode-nls-dev');
|
||||||
const tsb = require('gulp-tsb');
|
const tsb = require('./lib/tsb');
|
||||||
const sourcemaps = require('gulp-sourcemaps');
|
const sourcemaps = require('gulp-sourcemaps');
|
||||||
|
|
||||||
const reporter = createReporter('extensions');
|
const reporter = createReporter('extensions');
|
||||||
@@ -112,7 +114,7 @@ const tasks = compilations.map(function (tsconfigFile) {
|
|||||||
overrideOptions.inlineSources = Boolean(build);
|
overrideOptions.inlineSources = Boolean(build);
|
||||||
overrideOptions.base = path.dirname(absolutePath);
|
overrideOptions.base = path.dirname(absolutePath);
|
||||||
|
|
||||||
const compilation = tsb.create(absolutePath, overrideOptions, false, err => reporter(err.toString()));
|
const compilation = tsb.create(absolutePath, overrideOptions, { verbose: false, transpileOnly, transpileOnlyIncludesDts: transpileOnly }, err => reporter(err.toString()));
|
||||||
|
|
||||||
const pipeline = function () {
|
const pipeline = function () {
|
||||||
const input = es.through();
|
const input = es.through();
|
||||||
@@ -154,6 +156,16 @@ const tasks = compilations.map(function (tsconfigFile) {
|
|||||||
|
|
||||||
const cleanTask = task.define(`clean-extension-${name}`, util.rimraf(out));
|
const cleanTask = task.define(`clean-extension-${name}`, util.rimraf(out));
|
||||||
|
|
||||||
|
const transpileTask = task.define(`transpile-extension:${name}`, task.series(cleanTask, () => {
|
||||||
|
const pipeline = createPipeline(false, true, true);
|
||||||
|
const nonts = gulp.src(src, srcOpts).pipe(filter(['**', '!**/*.ts']));
|
||||||
|
const input = es.merge(nonts, pipeline.tsProjectSrc());
|
||||||
|
|
||||||
|
return input
|
||||||
|
.pipe(pipeline())
|
||||||
|
.pipe(gulp.dest(out));
|
||||||
|
}));
|
||||||
|
|
||||||
const compileTask = task.define(`compile-extension:${name}`, task.series(cleanTask, () => {
|
const compileTask = task.define(`compile-extension:${name}`, task.series(cleanTask, () => {
|
||||||
const pipeline = createPipeline(false, true);
|
const pipeline = createPipeline(false, true);
|
||||||
const nonts = gulp.src(src, srcOpts).pipe(filter(['**', '!**/*.ts']));
|
const nonts = gulp.src(src, srcOpts).pipe(filter(['**', '!**/*.ts']));
|
||||||
@@ -186,12 +198,16 @@ const tasks = compilations.map(function (tsconfigFile) {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
// Tasks
|
// Tasks
|
||||||
|
gulp.task(transpileTask);
|
||||||
gulp.task(compileTask);
|
gulp.task(compileTask);
|
||||||
gulp.task(watchTask);
|
gulp.task(watchTask);
|
||||||
|
|
||||||
return { compileTask, watchTask, compileBuildTask };
|
return { transpileTask, compileTask, watchTask, compileBuildTask };
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const transpileExtensionsTask = task.define('transpile-extensions', task.parallel(...tasks.map(t => t.transpileTask)));
|
||||||
|
gulp.task(transpileExtensionsTask);
|
||||||
|
|
||||||
const compileExtensionsTask = task.define('compile-extensions', task.parallel(...tasks.map(t => t.compileTask)));
|
const compileExtensionsTask = task.define('compile-extensions', task.parallel(...tasks.map(t => t.compileTask)));
|
||||||
gulp.task(compileExtensionsTask);
|
gulp.task(compileExtensionsTask);
|
||||||
exports.compileExtensionsTask = compileExtensionsTask;
|
exports.compileExtensionsTask = compileExtensionsTask;
|
||||||
@@ -229,7 +245,11 @@ const compileExtensionsBuildTask = task.define('compile-extensions-build', task.
|
|||||||
));
|
));
|
||||||
|
|
||||||
gulp.task(compileExtensionsBuildTask);
|
gulp.task(compileExtensionsBuildTask);
|
||||||
gulp.task(task.define('extensions-ci', task.series(compileExtensionsBuildTask, compileExtensionMediaBuildTask)));
|
// {{SQL CARBON EDIT}} Needed to pass the "done" gulp callback function to fix "Did you roget to signal async completion" error
|
||||||
|
gulp.task(task.define('extensions-ci', (done) => {
|
||||||
|
task.series(compileExtensionsBuildTask, compileExtensionMediaBuildTask);
|
||||||
|
done();
|
||||||
|
}));
|
||||||
|
|
||||||
exports.compileExtensionsBuildTask = compileExtensionsBuildTask;
|
exports.compileExtensionsBuildTask = compileExtensionsBuildTask;
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ function checkPackageJSON(actualPath) {
|
|||||||
const actual = require(path.join(__dirname, '..', actualPath));
|
const actual = require(path.join(__dirname, '..', actualPath));
|
||||||
const rootPackageJSON = require('../package.json');
|
const rootPackageJSON = require('../package.json');
|
||||||
const checkIncluded = (set1, set2) => {
|
const checkIncluded = (set1, set2) => {
|
||||||
for (let depName in set1) {
|
for (const depName in set1) {
|
||||||
if (depName === 'typescript') {
|
if (depName === 'typescript') {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ require('events').EventEmitter.defaultMaxListeners = 100;
|
|||||||
const gulp = require('gulp');
|
const gulp = require('gulp');
|
||||||
const util = require('./lib/util');
|
const util = require('./lib/util');
|
||||||
const task = require('./lib/task');
|
const task = require('./lib/task');
|
||||||
const { compileTask, watchTask, compileApiProposalNamesTask, watchApiProposalNamesTask } = require('./lib/compilation');
|
const { transpileTask, compileTask, watchTask, compileApiProposalNamesTask, watchApiProposalNamesTask } = require('./lib/compilation');
|
||||||
const { monacoTypecheckTask/* , monacoTypecheckWatchTask */ } = require('./gulpfile.editor');
|
const { monacoTypecheckTask/* , monacoTypecheckWatchTask */ } = require('./gulpfile.editor');
|
||||||
const { compileExtensionsTask, watchExtensionsTask, compileExtensionMediaTask } = require('./gulpfile.extensions');
|
const { compileExtensionsTask, watchExtensionsTask, compileExtensionMediaTask } = require('./gulpfile.extensions');
|
||||||
|
|
||||||
@@ -19,6 +19,10 @@ const { compileExtensionsTask, watchExtensionsTask, compileExtensionMediaTask }
|
|||||||
gulp.task(compileApiProposalNamesTask);
|
gulp.task(compileApiProposalNamesTask);
|
||||||
gulp.task(watchApiProposalNamesTask);
|
gulp.task(watchApiProposalNamesTask);
|
||||||
|
|
||||||
|
// Transpile only
|
||||||
|
const transpileClientTask = task.define('transpile-client', task.series(util.rimraf('out'), util.buildWebNodePaths('out'), transpileTask('src', 'out')));
|
||||||
|
gulp.task(transpileClientTask);
|
||||||
|
|
||||||
// Fast compile for development time
|
// Fast compile for development time
|
||||||
const compileClientTask = task.define('compile-client', task.series(util.rimraf('out'), util.buildWebNodePaths('out'), compileApiProposalNamesTask, compileTask('src', 'out', false)));
|
const compileClientTask = task.define('compile-client', task.series(util.rimraf('out'), util.buildWebNodePaths('out'), compileApiProposalNamesTask, compileTask('src', 'out', false)));
|
||||||
gulp.task(compileClientTask);
|
gulp.task(compileClientTask);
|
||||||
|
|||||||
@@ -64,7 +64,6 @@ const vscodeResources = [
|
|||||||
'out-build/vs/base/browser/ui/codicons/codicon/**',
|
'out-build/vs/base/browser/ui/codicons/codicon/**',
|
||||||
'out-build/vs/base/parts/sandbox/electron-browser/preload.js',
|
'out-build/vs/base/parts/sandbox/electron-browser/preload.js',
|
||||||
'out-build/vs/platform/environment/node/userDataPath.js',
|
'out-build/vs/platform/environment/node/userDataPath.js',
|
||||||
'out-build/vs/platform/extensions/node/extensionHostStarterWorkerMain.js',
|
|
||||||
'out-build/vs/workbench/browser/media/*-theme.css',
|
'out-build/vs/workbench/browser/media/*-theme.css',
|
||||||
'out-build/vs/workbench/contrib/debug/**/*.json',
|
'out-build/vs/workbench/contrib/debug/**/*.json',
|
||||||
'out-build/vs/workbench/contrib/externalTerminal/**/*.scpt',
|
'out-build/vs/workbench/contrib/externalTerminal/**/*.scpt',
|
||||||
@@ -76,7 +75,7 @@ const vscodeResources = [
|
|||||||
'out-build/vs/workbench/contrib/tasks/**/*.json',
|
'out-build/vs/workbench/contrib/tasks/**/*.json',
|
||||||
'out-build/vs/platform/files/**/*.exe',
|
'out-build/vs/platform/files/**/*.exe',
|
||||||
'out-build/vs/platform/files/**/*.md',
|
'out-build/vs/platform/files/**/*.md',
|
||||||
'out-build/vs/code/electron-browser/workbench/**',
|
'out-build/vs/code/electron-sandbox/workbench/**',
|
||||||
'out-build/vs/code/electron-browser/sharedProcess/sharedProcess.js',
|
'out-build/vs/code/electron-browser/sharedProcess/sharedProcess.js',
|
||||||
'out-build/vs/code/electron-sandbox/issue/issueReporter.js',
|
'out-build/vs/code/electron-sandbox/issue/issueReporter.js',
|
||||||
'out-build/sql/**/*.{svg,png,cur,html}',
|
'out-build/sql/**/*.{svg,png,cur,html}',
|
||||||
@@ -187,9 +186,9 @@ gulp.task(core);
|
|||||||
* @return {Object} A map of paths to checksums.
|
* @return {Object} A map of paths to checksums.
|
||||||
*/
|
*/
|
||||||
function computeChecksums(out, filenames) {
|
function computeChecksums(out, filenames) {
|
||||||
let result = {};
|
const result = {};
|
||||||
filenames.forEach(function (filename) {
|
filenames.forEach(function (filename) {
|
||||||
let fullPath = path.join(process.cwd(), out, filename);
|
const fullPath = path.join(process.cwd(), out, filename);
|
||||||
result[filename] = computeChecksum(fullPath);
|
result[filename] = computeChecksum(fullPath);
|
||||||
});
|
});
|
||||||
return result;
|
return result;
|
||||||
@@ -202,9 +201,9 @@ function computeChecksums(out, filenames) {
|
|||||||
* @return {string} The checksum for `filename`.
|
* @return {string} The checksum for `filename`.
|
||||||
*/
|
*/
|
||||||
function computeChecksum(filename) {
|
function computeChecksum(filename) {
|
||||||
let contents = fs.readFileSync(filename);
|
const contents = fs.readFileSync(filename);
|
||||||
|
|
||||||
let hash = crypto
|
const hash = crypto
|
||||||
.createHash('md5')
|
.createHash('md5')
|
||||||
.update(contents)
|
.update(contents)
|
||||||
.digest('base64')
|
.digest('base64')
|
||||||
@@ -230,8 +229,8 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
|
|||||||
'vs/workbench/workbench.desktop.main.js',
|
'vs/workbench/workbench.desktop.main.js',
|
||||||
'vs/workbench/workbench.desktop.main.css',
|
'vs/workbench/workbench.desktop.main.css',
|
||||||
'vs/workbench/api/node/extensionHostProcess.js',
|
'vs/workbench/api/node/extensionHostProcess.js',
|
||||||
'vs/code/electron-browser/workbench/workbench.html',
|
'vs/code/electron-sandbox/workbench/workbench.html',
|
||||||
'vs/code/electron-browser/workbench/workbench.js'
|
'vs/code/electron-sandbox/workbench/workbench.js'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const src = gulp.src(out + '/**', { base: '.' })
|
const src = gulp.src(out + '/**', { base: '.' })
|
||||||
@@ -322,6 +321,7 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
|
|||||||
all = es.merge(all, gulp.src('resources/linux/code.png', { base: '.' }));
|
all = es.merge(all, gulp.src('resources/linux/code.png', { base: '.' }));
|
||||||
} else if (platform === 'darwin') {
|
} else if (platform === 'darwin') {
|
||||||
const shortcut = gulp.src('resources/darwin/bin/code.sh')
|
const shortcut = gulp.src('resources/darwin/bin/code.sh')
|
||||||
|
.pipe(replace('@@APPNAME@@', product.applicationName))
|
||||||
.pipe(rename('bin/code'));
|
.pipe(rename('bin/code'));
|
||||||
|
|
||||||
all = es.merge(all, shortcut);
|
all = es.merge(all, shortcut);
|
||||||
@@ -366,10 +366,14 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
|
|||||||
|
|
||||||
result = es.merge(result, gulp.src('resources/win32/VisualElementsManifest.xml', { base: 'resources/win32' })
|
result = es.merge(result, gulp.src('resources/win32/VisualElementsManifest.xml', { base: 'resources/win32' })
|
||||||
.pipe(rename(product.nameShort + '.VisualElementsManifest.xml')));
|
.pipe(rename(product.nameShort + '.VisualElementsManifest.xml')));
|
||||||
|
|
||||||
|
result = es.merge(result, gulp.src('.build/policies/win32/**', { base: '.build/policies/win32' })
|
||||||
|
.pipe(rename(f => f.dirname = `policies/${f.dirname}`)));
|
||||||
|
|
||||||
} else if (platform === 'linux') {
|
} else if (platform === 'linux') {
|
||||||
result = es.merge(result, gulp.src('resources/linux/bin/code.sh', { base: '.' })
|
result = es.merge(result, gulp.src('resources/linux/bin/code.sh', { base: '.' })
|
||||||
.pipe(replace('@@PRODNAME@@', product.nameLong))
|
.pipe(replace('@@PRODNAME@@', product.nameLong))
|
||||||
.pipe(replace('@@NAME@@', product.applicationName))
|
.pipe(replace('@@APPNAME@@', product.applicationName))
|
||||||
.pipe(rename('bin/' + product.applicationName)));
|
.pipe(rename('bin/' + product.applicationName)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -523,7 +527,7 @@ gulp.task(task.define(
|
|||||||
|
|
||||||
gulp.task('vscode-translations-pull', function () {
|
gulp.task('vscode-translations-pull', function () {
|
||||||
return es.merge([...i18n.defaultLanguages, ...i18n.extraLanguages].map(language => {
|
return es.merge([...i18n.defaultLanguages, ...i18n.extraLanguages].map(language => {
|
||||||
let includeDefault = !!innoSetupConfig[language.id].defaultInfo;
|
const includeDefault = !!innoSetupConfig[language.id].defaultInfo;
|
||||||
return i18n.pullSetupXlfFiles(apiHostname, apiName, apiToken, language, includeDefault).pipe(vfs.dest(`../vscode-translations-import/${language.id}/setup`));
|
return i18n.pullSetupXlfFiles(apiHostname, apiName, apiToken, language, includeDefault).pipe(vfs.dest(`../vscode-translations-import/${language.id}/setup`));
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -16,6 +16,9 @@ const task = require('./lib/task');
|
|||||||
const packageJson = require('../package.json');
|
const packageJson = require('../package.json');
|
||||||
const product = require('../product.json');
|
const product = require('../product.json');
|
||||||
const rpmDependenciesGenerator = require('./linux/rpm/dependencies-generator');
|
const rpmDependenciesGenerator = require('./linux/rpm/dependencies-generator');
|
||||||
|
const debianDependenciesGenerator = require('./linux/debian/dependencies-generator');
|
||||||
|
const sysrootInstaller = require('./linux/debian/install-sysroot');
|
||||||
|
const debianRecommendedDependencies = require('./linux/debian/dep-lists').recommendedDeps;
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const root = path.dirname(__dirname);
|
const root = path.dirname(__dirname);
|
||||||
const commit = util.getVersion(root);
|
const commit = util.getVersion(root);
|
||||||
@@ -75,12 +78,16 @@ function prepareDebPackage(arch) {
|
|||||||
let size = 0;
|
let size = 0;
|
||||||
const control = code.pipe(es.through(
|
const control = code.pipe(es.through(
|
||||||
function (f) { size += f.isDirectory() ? 4096 : f.contents.length; },
|
function (f) { size += f.isDirectory() ? 4096 : f.contents.length; },
|
||||||
function () {
|
async function () {
|
||||||
const that = this;
|
const that = this;
|
||||||
|
const sysroot = await sysrootInstaller.getSysroot(debArch);
|
||||||
|
const dependencies = debianDependenciesGenerator.getDependencies(binaryDir, product.applicationName, debArch, sysroot);
|
||||||
gulp.src('resources/linux/debian/control.template', { base: '.' })
|
gulp.src('resources/linux/debian/control.template', { base: '.' })
|
||||||
.pipe(replace('@@NAME@@', product.applicationName))
|
.pipe(replace('@@NAME@@', product.applicationName))
|
||||||
.pipe(replace('@@VERSION@@', packageJson.version + '-' + linuxPackageRevision))
|
.pipe(replace('@@VERSION@@', packageJson.version + '-' + linuxPackageRevision))
|
||||||
.pipe(replace('@@ARCHITECTURE@@', debArch))
|
.pipe(replace('@@ARCHITECTURE@@', debArch))
|
||||||
|
.pipe(replace('@@DEPENDS@@', dependencies.join(', ')))
|
||||||
|
.pipe(replace('@@RECOMMENDS@@', debianRecommendedDependencies.join(', ')))
|
||||||
.pipe(replace('@@INSTALLEDSIZE@@', Math.ceil(size / 1024)))
|
.pipe(replace('@@INSTALLEDSIZE@@', Math.ceil(size / 1024)))
|
||||||
.pipe(rename('DEBIAN/control'))
|
.pipe(rename('DEBIAN/control'))
|
||||||
.pipe(es.through(function (f) { that.emit('data', f); }, function () { that.emit('end'); }));
|
.pipe(es.through(function (f) { that.emit('data', f); }, function () { that.emit('end'); }));
|
||||||
@@ -212,7 +219,7 @@ function buildRpmPackage(arch) {
|
|||||||
|
|
||||||
return shell.task([
|
return shell.task([
|
||||||
'mkdir -p ' + destination,
|
'mkdir -p ' + destination,
|
||||||
'HOME="$(pwd)/' + destination + '" fakeroot rpmbuild -bb ' + rpmBuildPath + '/SPECS/' + product.applicationName + '.spec --target=' + rpmArch,
|
'HOME="$(pwd)/' + destination + '" rpmbuild -bb ' + rpmBuildPath + '/SPECS/' + product.applicationName + '.spec --target=' + rpmArch,
|
||||||
'cp "' + rpmOut + '/$(ls ' + rpmOut + ')" ' + destination + '/'
|
'cp "' + rpmOut + '/$(ls ' + rpmOut + ')" ' + destination + '/'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ function packageTask(sourceFolderName, destinationFolderName) {
|
|||||||
gulp.src('resources/server/code-512.png', { base: 'resources/server' })
|
gulp.src('resources/server/code-512.png', { base: 'resources/server' })
|
||||||
);
|
);
|
||||||
|
|
||||||
let all = es.merge(
|
const all = es.merge(
|
||||||
packageJsonStream,
|
packageJsonStream,
|
||||||
license,
|
license,
|
||||||
sources,
|
sources,
|
||||||
@@ -218,7 +218,7 @@ function packageTask(sourceFolderName, destinationFolderName) {
|
|||||||
pwaicons
|
pwaicons
|
||||||
);
|
);
|
||||||
|
|
||||||
let result = all
|
const result = all
|
||||||
.pipe(util.skipDirectories())
|
.pipe(util.skipDirectories())
|
||||||
.pipe(util.fixWin32DirectoryPermissions());
|
.pipe(util.fixWin32DirectoryPermissions());
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ function hygiene(some, linting = true) {
|
|||||||
const m = /([^\t\n\r\x20-\x7E⊃⊇✔︎✓🎯⚠️🛑🔴🚗🚙🚕🎉✨❗⇧⌥⌘×÷¦⋯…↑↓→→←↔⟷·•●◆▼⟪⟫┌└├⏎↩√φ]+)/g.exec(line);
|
const m = /([^\t\n\r\x20-\x7E⊃⊇✔︎✓🎯⚠️🛑🔴🚗🚙🚕🎉✨❗⇧⌥⌘×÷¦⋯…↑↓→→←↔⟷·•●◆▼⟪⟫┌└├⏎↩√φ]+)/g.exec(line);
|
||||||
if (m) {
|
if (m) {
|
||||||
console.error(
|
console.error(
|
||||||
file.relative + `(${i + 1},${m.index + 1}): Unexpected unicode character: "${m[0]}". To suppress, use // allow-any-unicode-next-line`
|
file.relative + `(${i + 1},${m.index + 1}): Unexpected unicode character: "${m[0]}" (charCode: ${m[0].charCodeAt(0)}). To suppress, use // allow-any-unicode-next-line`
|
||||||
);
|
);
|
||||||
errorCount++;
|
errorCount++;
|
||||||
}
|
}
|
||||||
@@ -115,8 +115,8 @@ function hygiene(some, linting = true) {
|
|||||||
})
|
})
|
||||||
.then(
|
.then(
|
||||||
(result) => {
|
(result) => {
|
||||||
let original = result.src.replace(/\r\n/gm, '\n');
|
const original = result.src.replace(/\r\n/gm, '\n');
|
||||||
let formatted = result.dest.replace(/\r\n/gm, '\n');
|
const formatted = result.dest.replace(/\r\n/gm, '\n');
|
||||||
|
|
||||||
if (original !== formatted) {
|
if (original !== formatted) {
|
||||||
console.error(
|
console.error(
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.createAsar = void 0;
|
exports.createAsar = void 0;
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
@@ -81,7 +81,7 @@ function createAsar(folderPath, unpackGlobs, destFilename) {
|
|||||||
out.push(file.contents);
|
out.push(file.contents);
|
||||||
}
|
}
|
||||||
}, function () {
|
}, function () {
|
||||||
let finish = () => {
|
const finish = () => {
|
||||||
{
|
{
|
||||||
const headerPickle = pickle.createEmpty();
|
const headerPickle = pickle.createEmpty();
|
||||||
headerPickle.writeString(JSON.stringify(filesystem.header));
|
headerPickle.writeString(JSON.stringify(filesystem.header));
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as es from 'event-stream';
|
import * as es from 'event-stream';
|
||||||
const pickle = require('chromium-pickle-js');
|
const pickle = require('chromium-pickle-js');
|
||||||
@@ -98,7 +96,7 @@ export function createAsar(folderPath: string, unpackGlobs: string[], destFilena
|
|||||||
}
|
}
|
||||||
}, function () {
|
}, function () {
|
||||||
|
|
||||||
let finish = () => {
|
const finish = () => {
|
||||||
{
|
{
|
||||||
const headerPickle = pickle.createEmpty();
|
const headerPickle = pickle.createEmpty();
|
||||||
headerPickle.writeString(JSON.stringify(filesystem.header));
|
headerPickle.writeString(JSON.stringify(filesystem.header));
|
||||||
|
|||||||
@@ -98,12 +98,12 @@ function writeControlFile(control) {
|
|||||||
fs.writeFileSync(controlFilePath, JSON.stringify(control, null, 2));
|
fs.writeFileSync(controlFilePath, JSON.stringify(control, null, 2));
|
||||||
}
|
}
|
||||||
function getBuiltInExtensions() {
|
function getBuiltInExtensions() {
|
||||||
log('Syncronizing built-in extensions...');
|
log('Synchronizing built-in extensions...');
|
||||||
log(`You can manage built-in extensions with the ${ansiColors.cyan('--builtin')} flag`);
|
log(`You can manage built-in extensions with the ${ansiColors.cyan('--builtin')} flag`);
|
||||||
const control = readControlFile();
|
const control = readControlFile();
|
||||||
const streams = [];
|
const streams = [];
|
||||||
for (const extension of [...builtInExtensions, ...webBuiltInExtensions]) {
|
for (const extension of [...builtInExtensions, ...webBuiltInExtensions]) {
|
||||||
let controlState = control[extension.name] || 'marketplace';
|
const controlState = control[extension.name] || 'marketplace';
|
||||||
control[extension.name] = controlState;
|
control[extension.name] = controlState;
|
||||||
streams.push(syncExtension(extension, controlState));
|
streams.push(syncExtension(extension, controlState));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -136,14 +136,14 @@ function writeControlFile(control: IControlFile): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function getBuiltInExtensions(): Promise<void> {
|
export function getBuiltInExtensions(): Promise<void> {
|
||||||
log('Syncronizing built-in extensions...');
|
log('Synchronizing built-in extensions...');
|
||||||
log(`You can manage built-in extensions with the ${ansiColors.cyan('--builtin')} flag`);
|
log(`You can manage built-in extensions with the ${ansiColors.cyan('--builtin')} flag`);
|
||||||
|
|
||||||
const control = readControlFile();
|
const control = readControlFile();
|
||||||
const streams: Stream[] = [];
|
const streams: Stream[] = [];
|
||||||
|
|
||||||
for (const extension of [...builtInExtensions, ...webBuiltInExtensions]) {
|
for (const extension of [...builtInExtensions, ...webBuiltInExtensions]) {
|
||||||
let controlState = control[extension.name] || 'marketplace';
|
const controlState = control[extension.name] || 'marketplace';
|
||||||
control[extension.name] = controlState;
|
control[extension.name] = controlState;
|
||||||
|
|
||||||
streams.push(syncExtension(extension, controlState));
|
streams.push(syncExtension(extension, controlState));
|
||||||
|
|||||||
@@ -43,14 +43,20 @@ function bundle(entryPoints, config, callback) {
|
|||||||
if (!config.paths['vs/css']) {
|
if (!config.paths['vs/css']) {
|
||||||
config.paths['vs/css'] = 'out-build/vs/css.build';
|
config.paths['vs/css'] = 'out-build/vs/css.build';
|
||||||
}
|
}
|
||||||
|
config.buildForceInvokeFactory = config.buildForceInvokeFactory || {};
|
||||||
|
config.buildForceInvokeFactory['vs/nls'] = true;
|
||||||
|
config.buildForceInvokeFactory['vs/css'] = true;
|
||||||
loader.config(config);
|
loader.config(config);
|
||||||
loader(['require'], (localRequire) => {
|
loader(['require'], (localRequire) => {
|
||||||
const resolvePath = (path) => {
|
const resolvePath = (entry) => {
|
||||||
const r = localRequire.toUrl(path);
|
let r = localRequire.toUrl(entry.path);
|
||||||
if (!/\.js/.test(r)) {
|
if (!r.endsWith('.js')) {
|
||||||
return r + '.js';
|
r += '.js';
|
||||||
}
|
}
|
||||||
return r;
|
// avoid packaging the build version of plugins:
|
||||||
|
r = r.replace('vs/nls.build.js', 'vs/nls.js');
|
||||||
|
r = r.replace('vs/css.build.js', 'vs/css.js');
|
||||||
|
return { path: r, amdModuleId: entry.amdModuleId };
|
||||||
};
|
};
|
||||||
for (const moduleId in entryPointsMap) {
|
for (const moduleId in entryPointsMap) {
|
||||||
const entryPoint = entryPointsMap[moduleId];
|
const entryPoint = entryPointsMap[moduleId];
|
||||||
@@ -299,9 +305,18 @@ function emitEntryPoint(modulesMap, deps, entryPoint, includedModules, prepend,
|
|||||||
if (module.shim) {
|
if (module.shim) {
|
||||||
mainResult.sources.push(emitShimmedModule(c, deps[c], module.shim, module.path, contents));
|
mainResult.sources.push(emitShimmedModule(c, deps[c], module.shim, module.path, contents));
|
||||||
}
|
}
|
||||||
else {
|
else if (module.defineLocation) {
|
||||||
mainResult.sources.push(emitNamedModule(c, module.defineLocation, module.path, contents));
|
mainResult.sources.push(emitNamedModule(c, module.defineLocation, module.path, contents));
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
const moduleCopy = {
|
||||||
|
id: module.id,
|
||||||
|
path: module.path,
|
||||||
|
defineLocation: module.defineLocation,
|
||||||
|
dependencies: module.dependencies
|
||||||
|
};
|
||||||
|
throw new Error(`Cannot bundle module '${module.id}' for entry point '${entryPoint}' because it has no shim and it lacks a defineLocation: ${JSON.stringify(moduleCopy)}`);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
Object.keys(usedPlugins).forEach((pluginName) => {
|
Object.keys(usedPlugins).forEach((pluginName) => {
|
||||||
const plugin = usedPlugins[pluginName];
|
const plugin = usedPlugins[pluginName];
|
||||||
@@ -322,10 +337,13 @@ function emitEntryPoint(modulesMap, deps, entryPoint, includedModules, prepend,
|
|||||||
plugin.writeFile(pluginName, entryPoint, req, write, {});
|
plugin.writeFile(pluginName, entryPoint, req, write, {});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const toIFile = (path) => {
|
const toIFile = (entry) => {
|
||||||
const contents = readFileAndRemoveBOM(path);
|
let contents = readFileAndRemoveBOM(entry.path);
|
||||||
|
if (entry.amdModuleId) {
|
||||||
|
contents = contents.replace(/^define\(/m, `define("${entry.amdModuleId}",`);
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
path: path,
|
path: entry.path,
|
||||||
contents: contents
|
contents: contents
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ interface IPosition {
|
|||||||
interface IBuildModuleInfo {
|
interface IBuildModuleInfo {
|
||||||
id: string;
|
id: string;
|
||||||
path: string;
|
path: string;
|
||||||
defineLocation: IPosition;
|
defineLocation: IPosition | null;
|
||||||
dependencies: string[];
|
dependencies: string[];
|
||||||
shim: string;
|
shim: string;
|
||||||
exports: any;
|
exports: any;
|
||||||
@@ -42,12 +42,17 @@ interface ILoaderPluginReqFunc {
|
|||||||
toUrl(something: string): string;
|
toUrl(something: string): string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface IExtraFile {
|
||||||
|
path: string;
|
||||||
|
amdModuleId?: string;
|
||||||
|
}
|
||||||
|
|
||||||
export interface IEntryPoint {
|
export interface IEntryPoint {
|
||||||
name: string;
|
name: string;
|
||||||
include?: string[];
|
include?: string[];
|
||||||
exclude?: string[];
|
exclude?: string[];
|
||||||
prepend?: string[];
|
prepend?: IExtraFile[];
|
||||||
append?: string[];
|
append?: IExtraFile[];
|
||||||
dest?: string;
|
dest?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,6 +97,13 @@ interface IPartialBundleResult {
|
|||||||
export interface ILoaderConfig {
|
export interface ILoaderConfig {
|
||||||
isBuild?: boolean;
|
isBuild?: boolean;
|
||||||
paths?: { [path: string]: any };
|
paths?: { [path: string]: any };
|
||||||
|
/*
|
||||||
|
* Normally, during a build, no module factories are invoked. This can be used
|
||||||
|
* to forcefully execute a module's factory.
|
||||||
|
*/
|
||||||
|
buildForceInvokeFactory: {
|
||||||
|
[moduleId: string]: boolean;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -132,15 +144,21 @@ export function bundle(entryPoints: IEntryPoint[], config: ILoaderConfig, callba
|
|||||||
if (!config.paths['vs/css']) {
|
if (!config.paths['vs/css']) {
|
||||||
config.paths['vs/css'] = 'out-build/vs/css.build';
|
config.paths['vs/css'] = 'out-build/vs/css.build';
|
||||||
}
|
}
|
||||||
|
config.buildForceInvokeFactory = config.buildForceInvokeFactory || {};
|
||||||
|
config.buildForceInvokeFactory['vs/nls'] = true;
|
||||||
|
config.buildForceInvokeFactory['vs/css'] = true;
|
||||||
loader.config(config);
|
loader.config(config);
|
||||||
|
|
||||||
loader(['require'], (localRequire: any) => {
|
loader(['require'], (localRequire: any) => {
|
||||||
const resolvePath = (path: string) => {
|
const resolvePath = (entry: IExtraFile) => {
|
||||||
const r = localRequire.toUrl(path);
|
let r = localRequire.toUrl(entry.path);
|
||||||
if (!/\.js/.test(r)) {
|
if (!r.endsWith('.js')) {
|
||||||
return r + '.js';
|
r += '.js';
|
||||||
}
|
}
|
||||||
return r;
|
// avoid packaging the build version of plugins:
|
||||||
|
r = r.replace('vs/nls.build.js', 'vs/nls.js');
|
||||||
|
r = r.replace('vs/css.build.js', 'vs/css.js');
|
||||||
|
return { path: r, amdModuleId: entry.amdModuleId };
|
||||||
};
|
};
|
||||||
for (const moduleId in entryPointsMap) {
|
for (const moduleId in entryPointsMap) {
|
||||||
const entryPoint = entryPointsMap[moduleId];
|
const entryPoint = entryPointsMap[moduleId];
|
||||||
@@ -403,8 +421,8 @@ function emitEntryPoint(
|
|||||||
deps: IGraph,
|
deps: IGraph,
|
||||||
entryPoint: string,
|
entryPoint: string,
|
||||||
includedModules: string[],
|
includedModules: string[],
|
||||||
prepend: string[],
|
prepend: IExtraFile[],
|
||||||
append: string[],
|
append: IExtraFile[],
|
||||||
dest: string | undefined
|
dest: string | undefined
|
||||||
): IEmitEntryPointResult {
|
): IEmitEntryPointResult {
|
||||||
if (!dest) {
|
if (!dest) {
|
||||||
@@ -444,8 +462,16 @@ function emitEntryPoint(
|
|||||||
|
|
||||||
if (module.shim) {
|
if (module.shim) {
|
||||||
mainResult.sources.push(emitShimmedModule(c, deps[c], module.shim, module.path, contents));
|
mainResult.sources.push(emitShimmedModule(c, deps[c], module.shim, module.path, contents));
|
||||||
} else {
|
} else if (module.defineLocation) {
|
||||||
mainResult.sources.push(emitNamedModule(c, module.defineLocation, module.path, contents));
|
mainResult.sources.push(emitNamedModule(c, module.defineLocation, module.path, contents));
|
||||||
|
} else {
|
||||||
|
const moduleCopy = {
|
||||||
|
id: module.id,
|
||||||
|
path: module.path,
|
||||||
|
defineLocation: module.defineLocation,
|
||||||
|
dependencies: module.dependencies
|
||||||
|
};
|
||||||
|
throw new Error(`Cannot bundle module '${module.id}' for entry point '${entryPoint}' because it has no shim and it lacks a defineLocation: ${JSON.stringify(moduleCopy)}`);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -470,10 +496,13 @@ function emitEntryPoint(
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const toIFile = (path: string): IFile => {
|
const toIFile = (entry: IExtraFile): IFile => {
|
||||||
const contents = readFileAndRemoveBOM(path);
|
let contents = readFileAndRemoveBOM(entry.path);
|
||||||
|
if (entry.amdModuleId) {
|
||||||
|
contents = contents.replace(/^define\(/m, `define("${entry.amdModuleId}",`);
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
path: path,
|
path: entry.path,
|
||||||
contents: contents
|
contents: contents
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.watchApiProposalNamesTask = exports.compileApiProposalNamesTask = exports.watchTask = exports.compileTask = void 0;
|
exports.watchApiProposalNamesTask = exports.compileApiProposalNamesTask = exports.watchTask = exports.compileTask = exports.transpileTask = void 0;
|
||||||
const es = require("event-stream");
|
const es = require("event-stream");
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
const gulp = require("gulp");
|
const gulp = require("gulp");
|
||||||
@@ -22,7 +22,7 @@ const watch = require('./watch');
|
|||||||
const reporter = (0, reporter_1.createReporter)();
|
const reporter = (0, reporter_1.createReporter)();
|
||||||
function getTypeScriptCompilerOptions(src) {
|
function getTypeScriptCompilerOptions(src) {
|
||||||
const rootDir = path.join(__dirname, `../../${src}`);
|
const rootDir = path.join(__dirname, `../../${src}`);
|
||||||
let options = {};
|
const options = {};
|
||||||
options.verbose = false;
|
options.verbose = false;
|
||||||
options.sourceMap = true;
|
options.sourceMap = true;
|
||||||
if (process.env['VSCODE_NO_SOURCEMAP']) { // To be used by developers in a hurry
|
if (process.env['VSCODE_NO_SOURCEMAP']) { // To be used by developers in a hurry
|
||||||
@@ -34,8 +34,8 @@ function getTypeScriptCompilerOptions(src) {
|
|||||||
options.newLine = /\r\n/.test(fs.readFileSync(__filename, 'utf8')) ? 0 : 1;
|
options.newLine = /\r\n/.test(fs.readFileSync(__filename, 'utf8')) ? 0 : 1;
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
function createCompile(src, build, emitError) {
|
function createCompile(src, build, emitError, transpileOnly) {
|
||||||
const tsb = require('gulp-tsb');
|
const tsb = require('./tsb');
|
||||||
const sourcemaps = require('gulp-sourcemaps');
|
const sourcemaps = require('gulp-sourcemaps');
|
||||||
const projectPath = path.join(__dirname, '../../', src, 'tsconfig.json');
|
const projectPath = path.join(__dirname, '../../', src, 'tsconfig.json');
|
||||||
const overrideOptions = Object.assign(Object.assign({}, getTypeScriptCompilerOptions(src)), { inlineSources: Boolean(build) });
|
const overrideOptions = Object.assign(Object.assign({}, getTypeScriptCompilerOptions(src)), { inlineSources: Boolean(build) });
|
||||||
@@ -69,7 +69,7 @@ function createCompile(src, build, emitError) {
|
|||||||
.pipe(noDeclarationsFilter)
|
.pipe(noDeclarationsFilter)
|
||||||
.pipe(build ? nls.nls() : es.through())
|
.pipe(build ? nls.nls() : es.through())
|
||||||
.pipe(noDeclarationsFilter.restore)
|
.pipe(noDeclarationsFilter.restore)
|
||||||
.pipe(sourcemaps.write('.', {
|
.pipe(transpileOnly ? es.through() : sourcemaps.write('.', {
|
||||||
addComment: false,
|
addComment: false,
|
||||||
includeContent: !!build,
|
includeContent: !!build,
|
||||||
sourceRoot: overrideOptions.sourceRoot
|
sourceRoot: overrideOptions.sourceRoot
|
||||||
@@ -83,14 +83,24 @@ function createCompile(src, build, emitError) {
|
|||||||
};
|
};
|
||||||
return pipeline;
|
return pipeline;
|
||||||
}
|
}
|
||||||
|
function transpileTask(src, out) {
|
||||||
|
return function () {
|
||||||
|
const transpile = createCompile(src, false, true, true);
|
||||||
|
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
|
||||||
|
return srcPipe
|
||||||
|
.pipe(transpile())
|
||||||
|
.pipe(gulp.dest(out));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
exports.transpileTask = transpileTask;
|
||||||
function compileTask(src, out, build) {
|
function compileTask(src, out, build) {
|
||||||
return function () {
|
return function () {
|
||||||
if (os.totalmem() < 4000000000) {
|
if (os.totalmem() < 4000000000) {
|
||||||
throw new Error('compilation requires 4GB of RAM');
|
throw new Error('compilation requires 4GB of RAM');
|
||||||
}
|
}
|
||||||
const compile = createCompile(src, build, true);
|
const compile = createCompile(src, build, true, false);
|
||||||
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
|
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
|
||||||
let generator = new MonacoGenerator(false);
|
const generator = new MonacoGenerator(false);
|
||||||
if (src === 'src') {
|
if (src === 'src') {
|
||||||
generator.execute();
|
generator.execute();
|
||||||
}
|
}
|
||||||
@@ -103,10 +113,10 @@ function compileTask(src, out, build) {
|
|||||||
exports.compileTask = compileTask;
|
exports.compileTask = compileTask;
|
||||||
function watchTask(out, build) {
|
function watchTask(out, build) {
|
||||||
return function () {
|
return function () {
|
||||||
const compile = createCompile('src', build);
|
const compile = createCompile('src', build, false, false);
|
||||||
const src = gulp.src('src/**', { base: 'src' });
|
const src = gulp.src('src/**', { base: 'src' });
|
||||||
const watchSrc = watch('src/**', { base: 'src', readDelay: 200 });
|
const watchSrc = watch('src/**', { base: 'src', readDelay: 200 });
|
||||||
let generator = new MonacoGenerator(true);
|
const generator = new MonacoGenerator(true);
|
||||||
generator.execute();
|
generator.execute();
|
||||||
return watchSrc
|
return watchSrc
|
||||||
.pipe(generator.stream)
|
.pipe(generator.stream)
|
||||||
@@ -122,7 +132,7 @@ class MonacoGenerator {
|
|||||||
this._isWatch = isWatch;
|
this._isWatch = isWatch;
|
||||||
this.stream = es.through();
|
this.stream = es.through();
|
||||||
this._watchedFiles = {};
|
this._watchedFiles = {};
|
||||||
let onWillReadFile = (moduleId, filePath) => {
|
const onWillReadFile = (moduleId, filePath) => {
|
||||||
if (!this._isWatch) {
|
if (!this._isWatch) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -159,7 +169,7 @@ class MonacoGenerator {
|
|||||||
}, 20);
|
}, 20);
|
||||||
}
|
}
|
||||||
_run() {
|
_run() {
|
||||||
let r = monacodts.run3(this._declarationResolver);
|
const r = monacodts.run3(this._declarationResolver);
|
||||||
if (!r && !this._isWatch) {
|
if (!r && !this._isWatch) {
|
||||||
// The build must always be able to generate the monaco.d.ts
|
// The build must always be able to generate the monaco.d.ts
|
||||||
throw new Error(`monaco.d.ts generation error - Cannot continue`);
|
throw new Error(`monaco.d.ts generation error - Cannot continue`);
|
||||||
@@ -188,6 +198,15 @@ class MonacoGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
function generateApiProposalNames() {
|
function generateApiProposalNames() {
|
||||||
|
let eol;
|
||||||
|
try {
|
||||||
|
const src = fs.readFileSync('src/vs/workbench/services/extensions/common/extensionsApiProposals.ts', 'utf-8');
|
||||||
|
const match = /\r?\n/m.exec(src);
|
||||||
|
eol = match ? match[0] : os.EOL;
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
eol = os.EOL;
|
||||||
|
}
|
||||||
const pattern = /vscode\.proposed\.([a-zA-Z]+)\.d\.ts$/;
|
const pattern = /vscode\.proposed\.([a-zA-Z]+)\.d\.ts$/;
|
||||||
const proposalNames = new Set();
|
const proposalNames = new Set();
|
||||||
const input = es.through();
|
const input = es.through();
|
||||||
@@ -214,7 +233,7 @@ function generateApiProposalNames() {
|
|||||||
'});',
|
'});',
|
||||||
'export type ApiProposalName = keyof typeof allApiProposals;',
|
'export type ApiProposalName = keyof typeof allApiProposals;',
|
||||||
'',
|
'',
|
||||||
].join(os.EOL);
|
].join(eol);
|
||||||
this.emit('data', new File({
|
this.emit('data', new File({
|
||||||
path: 'vs/workbench/services/extensions/common/extensionsApiProposals.ts',
|
path: 'vs/workbench/services/extensions/common/extensionsApiProposals.ts',
|
||||||
contents: Buffer.from(contents)
|
contents: Buffer.from(contents)
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ const reporter = createReporter();
|
|||||||
|
|
||||||
function getTypeScriptCompilerOptions(src: string): ts.CompilerOptions {
|
function getTypeScriptCompilerOptions(src: string): ts.CompilerOptions {
|
||||||
const rootDir = path.join(__dirname, `../../${src}`);
|
const rootDir = path.join(__dirname, `../../${src}`);
|
||||||
let options: ts.CompilerOptions = {};
|
const options: ts.CompilerOptions = {};
|
||||||
options.verbose = false;
|
options.verbose = false;
|
||||||
options.sourceMap = true;
|
options.sourceMap = true;
|
||||||
if (process.env['VSCODE_NO_SOURCEMAP']) { // To be used by developers in a hurry
|
if (process.env['VSCODE_NO_SOURCEMAP']) { // To be used by developers in a hurry
|
||||||
@@ -39,8 +39,8 @@ function getTypeScriptCompilerOptions(src: string): ts.CompilerOptions {
|
|||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
function createCompile(src: string, build: boolean, emitError?: boolean) {
|
function createCompile(src: string, build: boolean, emitError: boolean, transpileOnly: boolean) {
|
||||||
const tsb = require('gulp-tsb') as typeof import('gulp-tsb');
|
const tsb = require('./tsb') as typeof import('./tsb');
|
||||||
const sourcemaps = require('gulp-sourcemaps') as typeof import('gulp-sourcemaps');
|
const sourcemaps = require('gulp-sourcemaps') as typeof import('gulp-sourcemaps');
|
||||||
|
|
||||||
|
|
||||||
@@ -80,7 +80,7 @@ function createCompile(src: string, build: boolean, emitError?: boolean) {
|
|||||||
.pipe(noDeclarationsFilter)
|
.pipe(noDeclarationsFilter)
|
||||||
.pipe(build ? nls.nls() : es.through())
|
.pipe(build ? nls.nls() : es.through())
|
||||||
.pipe(noDeclarationsFilter.restore)
|
.pipe(noDeclarationsFilter.restore)
|
||||||
.pipe(sourcemaps.write('.', {
|
.pipe(transpileOnly ? es.through() : sourcemaps.write('.', {
|
||||||
addComment: false,
|
addComment: false,
|
||||||
includeContent: !!build,
|
includeContent: !!build,
|
||||||
sourceRoot: overrideOptions.sourceRoot
|
sourceRoot: overrideOptions.sourceRoot
|
||||||
@@ -96,6 +96,19 @@ function createCompile(src: string, build: boolean, emitError?: boolean) {
|
|||||||
return pipeline;
|
return pipeline;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function transpileTask(src: string, out: string): () => NodeJS.ReadWriteStream {
|
||||||
|
|
||||||
|
return function () {
|
||||||
|
|
||||||
|
const transpile = createCompile(src, false, true, true);
|
||||||
|
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
|
||||||
|
|
||||||
|
return srcPipe
|
||||||
|
.pipe(transpile())
|
||||||
|
.pipe(gulp.dest(out));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export function compileTask(src: string, out: string, build: boolean): () => NodeJS.ReadWriteStream {
|
export function compileTask(src: string, out: string, build: boolean): () => NodeJS.ReadWriteStream {
|
||||||
|
|
||||||
return function () {
|
return function () {
|
||||||
@@ -104,9 +117,9 @@ export function compileTask(src: string, out: string, build: boolean): () => Nod
|
|||||||
throw new Error('compilation requires 4GB of RAM');
|
throw new Error('compilation requires 4GB of RAM');
|
||||||
}
|
}
|
||||||
|
|
||||||
const compile = createCompile(src, build, true);
|
const compile = createCompile(src, build, true, false);
|
||||||
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
|
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
|
||||||
let generator = new MonacoGenerator(false);
|
const generator = new MonacoGenerator(false);
|
||||||
if (src === 'src') {
|
if (src === 'src') {
|
||||||
generator.execute();
|
generator.execute();
|
||||||
}
|
}
|
||||||
@@ -121,12 +134,12 @@ export function compileTask(src: string, out: string, build: boolean): () => Nod
|
|||||||
export function watchTask(out: string, build: boolean): () => NodeJS.ReadWriteStream {
|
export function watchTask(out: string, build: boolean): () => NodeJS.ReadWriteStream {
|
||||||
|
|
||||||
return function () {
|
return function () {
|
||||||
const compile = createCompile('src', build);
|
const compile = createCompile('src', build, false, false);
|
||||||
|
|
||||||
const src = gulp.src('src/**', { base: 'src' });
|
const src = gulp.src('src/**', { base: 'src' });
|
||||||
const watchSrc = watch('src/**', { base: 'src', readDelay: 200 });
|
const watchSrc = watch('src/**', { base: 'src', readDelay: 200 });
|
||||||
|
|
||||||
let generator = new MonacoGenerator(true);
|
const generator = new MonacoGenerator(true);
|
||||||
generator.execute();
|
generator.execute();
|
||||||
|
|
||||||
return watchSrc
|
return watchSrc
|
||||||
@@ -150,7 +163,7 @@ class MonacoGenerator {
|
|||||||
this._isWatch = isWatch;
|
this._isWatch = isWatch;
|
||||||
this.stream = es.through();
|
this.stream = es.through();
|
||||||
this._watchedFiles = {};
|
this._watchedFiles = {};
|
||||||
let onWillReadFile = (moduleId: string, filePath: string) => {
|
const onWillReadFile = (moduleId: string, filePath: string) => {
|
||||||
if (!this._isWatch) {
|
if (!this._isWatch) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -192,7 +205,7 @@ class MonacoGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private _run(): monacodts.IMonacoDeclarationResult | null {
|
private _run(): monacodts.IMonacoDeclarationResult | null {
|
||||||
let r = monacodts.run3(this._declarationResolver);
|
const r = monacodts.run3(this._declarationResolver);
|
||||||
if (!r && !this._isWatch) {
|
if (!r && !this._isWatch) {
|
||||||
// The build must always be able to generate the monaco.d.ts
|
// The build must always be able to generate the monaco.d.ts
|
||||||
throw new Error(`monaco.d.ts generation error - Cannot continue`);
|
throw new Error(`monaco.d.ts generation error - Cannot continue`);
|
||||||
@@ -225,6 +238,16 @@ class MonacoGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function generateApiProposalNames() {
|
function generateApiProposalNames() {
|
||||||
|
let eol: string;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const src = fs.readFileSync('src/vs/workbench/services/extensions/common/extensionsApiProposals.ts', 'utf-8');
|
||||||
|
const match = /\r?\n/m.exec(src);
|
||||||
|
eol = match ? match[0] : os.EOL;
|
||||||
|
} catch {
|
||||||
|
eol = os.EOL;
|
||||||
|
}
|
||||||
|
|
||||||
const pattern = /vscode\.proposed\.([a-zA-Z]+)\.d\.ts$/;
|
const pattern = /vscode\.proposed\.([a-zA-Z]+)\.d\.ts$/;
|
||||||
const proposalNames = new Set<string>();
|
const proposalNames = new Set<string>();
|
||||||
|
|
||||||
@@ -253,7 +276,7 @@ function generateApiProposalNames() {
|
|||||||
'});',
|
'});',
|
||||||
'export type ApiProposalName = keyof typeof allApiProposals;',
|
'export type ApiProposalName = keyof typeof allApiProposals;',
|
||||||
'',
|
'',
|
||||||
].join(os.EOL);
|
].join(eol);
|
||||||
|
|
||||||
this.emit('data', new File({
|
this.emit('data', new File({
|
||||||
path: 'vs/workbench/services/extensions/common/extensionsApiProposals.ts',
|
path: 'vs/workbench/services/extensions/common/extensionsApiProposals.ts',
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.getProductionDependencies = void 0;
|
exports.getProductionDependencies = void 0;
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as cp from 'child_process';
|
import * as cp from 'child_process';
|
||||||
import * as _ from 'underscore';
|
import * as _ from 'underscore';
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.config = void 0;
|
exports.config = void 0;
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as vfs from 'vinyl-fs';
|
import * as vfs from 'vinyl-fs';
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// Rule Definition
|
// Rule Definition
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import * as eslint from 'eslint';
|
import * as eslint from 'eslint';
|
||||||
import { TSESTree } from '@typescript-eslint/experimental-utils';
|
import { TSESTree } from '@typescript-eslint/experimental-utils';
|
||||||
import * as ESTree from 'estree';
|
import * as ESTree from 'estree';
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ module.exports = new (_a = class NoUnexternalizedStrings {
|
|||||||
key = keyNode.value;
|
key = keyNode.value;
|
||||||
}
|
}
|
||||||
else if (keyNode.type === experimental_utils_1.AST_NODE_TYPES.ObjectExpression) {
|
else if (keyNode.type === experimental_utils_1.AST_NODE_TYPES.ObjectExpression) {
|
||||||
for (let property of keyNode.properties) {
|
for (const property of keyNode.properties) {
|
||||||
if (property.type === experimental_utils_1.AST_NODE_TYPES.Property && !property.computed) {
|
if (property.type === experimental_utils_1.AST_NODE_TYPES.Property && !property.computed) {
|
||||||
if (property.key.type === experimental_utils_1.AST_NODE_TYPES.Identifier && property.key.name === 'key') {
|
if (property.key.type === experimental_utils_1.AST_NODE_TYPES.Identifier && property.key.name === 'key') {
|
||||||
if (isStringLiteral(property.value)) {
|
if (isStringLiteral(property.value)) {
|
||||||
@@ -83,7 +83,7 @@ module.exports = new (_a = class NoUnexternalizedStrings {
|
|||||||
// (2)
|
// (2)
|
||||||
// report all invalid NLS keys
|
// report all invalid NLS keys
|
||||||
if (!key.match(NoUnexternalizedStrings._rNlsKeys)) {
|
if (!key.match(NoUnexternalizedStrings._rNlsKeys)) {
|
||||||
for (let value of values) {
|
for (const value of values) {
|
||||||
context.report({ loc: value.call.loc, messageId: 'badKey', data: { key } });
|
context.report({ loc: value.call.loc, messageId: 'badKey', data: { key } });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ export = new class NoUnexternalizedStrings implements eslint.Rule.RuleModule {
|
|||||||
key = keyNode.value;
|
key = keyNode.value;
|
||||||
|
|
||||||
} else if (keyNode.type === AST_NODE_TYPES.ObjectExpression) {
|
} else if (keyNode.type === AST_NODE_TYPES.ObjectExpression) {
|
||||||
for (let property of keyNode.properties) {
|
for (const property of keyNode.properties) {
|
||||||
if (property.type === AST_NODE_TYPES.Property && !property.computed) {
|
if (property.type === AST_NODE_TYPES.Property && !property.computed) {
|
||||||
if (property.key.type === AST_NODE_TYPES.Identifier && property.key.name === 'key') {
|
if (property.key.type === AST_NODE_TYPES.Identifier && property.key.name === 'key') {
|
||||||
if (isStringLiteral(property.value)) {
|
if (isStringLiteral(property.value)) {
|
||||||
@@ -97,7 +97,7 @@ export = new class NoUnexternalizedStrings implements eslint.Rule.RuleModule {
|
|||||||
// (2)
|
// (2)
|
||||||
// report all invalid NLS keys
|
// report all invalid NLS keys
|
||||||
if (!key.match(NoUnexternalizedStrings._rNlsKeys)) {
|
if (!key.match(NoUnexternalizedStrings._rNlsKeys)) {
|
||||||
for (let value of values) {
|
for (const value of values) {
|
||||||
context.report({ loc: value.call.loc, messageId: 'badKey', data: { key } });
|
context.report({ loc: value.call.loc, messageId: 'badKey', data: { key } });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
/*---------------------------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------------------------
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
// FORKED FROM https://github.com/eslint/eslint/blob/b23ad0d789a909baf8d7c41a35bc53df932eaf30/lib/rules/no-unused-expressions.js
|
|
||||||
// and added support for `OptionalCallExpression`, see https://github.com/facebook/create-react-app/issues/8107 and https://github.com/eslint/eslint/issues/12642
|
|
||||||
/**
|
|
||||||
* @fileoverview Flag expressions in statement position that do not side effect
|
|
||||||
* @author Michael Ficarra
|
|
||||||
*/
|
|
||||||
'use strict';
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// Rule Definition
|
// Rule Definition
|
||||||
|
|||||||
@@ -11,8 +11,6 @@
|
|||||||
* @author Michael Ficarra
|
* @author Michael Ficarra
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import * as eslint from 'eslint';
|
import * as eslint from 'eslint';
|
||||||
import { TSESTree } from '@typescript-eslint/experimental-utils';
|
import { TSESTree } from '@typescript-eslint/experimental-utils';
|
||||||
import * as ESTree from 'estree';
|
import * as ESTree from 'estree';
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ module.exports = new class ApiProviderNaming {
|
|||||||
return {
|
return {
|
||||||
['TSInterfaceDeclaration[id.name=/.+Provider/] TSMethodSignature[key.name=/^(provide|resolve).+/]']: (node) => {
|
['TSInterfaceDeclaration[id.name=/.+Provider/] TSMethodSignature[key.name=/^(provide|resolve).+/]']: (node) => {
|
||||||
let found = false;
|
let found = false;
|
||||||
for (let param of node.params) {
|
for (const param of node.params) {
|
||||||
if (param.type === experimental_utils_1.AST_NODE_TYPES.Identifier) {
|
if (param.type === experimental_utils_1.AST_NODE_TYPES.Identifier) {
|
||||||
found = found || param.name === 'token';
|
found = found || param.name === 'token';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ export = new class ApiProviderNaming implements eslint.Rule.RuleModule {
|
|||||||
['TSInterfaceDeclaration[id.name=/.+Provider/] TSMethodSignature[key.name=/^(provide|resolve).+/]']: (node: any) => {
|
['TSInterfaceDeclaration[id.name=/.+Provider/] TSMethodSignature[key.name=/^(provide|resolve).+/]']: (node: any) => {
|
||||||
|
|
||||||
let found = false;
|
let found = false;
|
||||||
for (let param of (<TSESTree.TSMethodSignature>node).params) {
|
for (const param of (<TSESTree.TSMethodSignature>node).params) {
|
||||||
if (param.type === AST_NODE_TYPES.Identifier) {
|
if (param.type === AST_NODE_TYPES.Identifier) {
|
||||||
found = found || param.name === 'token';
|
found = found || param.name === 'token';
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user