name: CI on: push: branches: - main - release/* pull_request: branches: - main - release/* jobs: windows: name: Windows runs-on: windows-latest timeout-minutes: 30 env: CHILD_CONCURRENCY: "1" GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v2.2.0 - uses: actions/setup-node@v2 with: node-version: 12 - uses: actions/setup-python@v2 with: python-version: "2.x" # {{SQL CARBON EDIT}} Skip caching for now # - 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 archive # id: cacheNodeModules # uses: actions/cache@v2 # with: # path: ".build/node_modules_cache" # key: "${{ runner.os }}-cacheNodeModulesArchive-${{ steps.nodeModulesCacheKey.outputs.value }}" # - name: Extract node_modules archive # if: ${{ steps.cacheNodeModules.outputs.cache-hit == 'true' }} # run: 7z.exe x .build/node_modules_cache/cache.7z -aos # - 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' }} {{SQL CARBON EDIT}} Skipping caching for now env: PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 ELECTRON_SKIP_BINARY_DOWNLOAD: 1 run: yarn --frozen-lockfile --network-timeout 180000 # - name: Create node_modules archive {{SQL CARBON EDIT}} Skip caching for now # if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }} # run: | # mkdir -Force .build # node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt # mkdir -Force .build/node_modules_cache # 7z.exe a .build/node_modules_cache/cache.7z -mx3 `@.build/node_modules_list.txt - name: Compile and Download run: yarn npm-run-all --max_old_space_size=4095 -lp compile "electron x64" # {{SQL CARBON EDIT}} Remove unused options playwright-install download-builtin-extensions - name: Run Unit Tests (Electron) run: .\scripts\test.bat # - name: Run Unit Tests (Browser) {{SQL CARBON EDIT}} disable for now # run: yarn test-browser --browser chromium # - name: Run Integration Tests (Electron) {{SQL CARBON EDIT}} disable for now # run: .\scripts\test-integration.bat linux: name: Linux runs-on: ubuntu-latest timeout-minutes: 30 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v2.2.0 # TODO: rename azure-pipelines/linux/xvfb.init to github-actions - name: Setup Build Environment run: | sudo apt-get update sudo apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 dbus xvfb libgtk-3-0 libgbm1 libkrb5-dev # {{SQL CARBON EDIT}} add kerberos dep 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@v2 with: node-version: 12 # {{SQL CARBON EDIT}} Skip caching for now # - 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 }}-cacheNodeModules13-${{ steps.nodeModulesCacheKey.outputs.value }} # restore-keys: ${{ runner.os }}-cacheNodeModules13- # - 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' }} {{SQL CARBON EDIT}} Skip caching for now 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" playwright-install download-builtin-extensions - name: Run Unit Tests (Electron) id: electron-unit-tests run: DISPLAY=:10 ./scripts/test.sh --coverage --runGlob "**/sql/**/*.test.js" # {{SQL CARBON EDIT}} Run only our tests with coverage - name: Run Extension Unit Tests (Electron) id: electron-extension-unit-tests run: DISPLAY=:10 ./scripts/test-extensions-unit.sh # {{SQL CARBON EDIT}} Add coveralls. We merge first to get around issue where parallel builds weren't being combined correctly - name: Combine code coverage files run: node test/combineCoverage - name: Upload Code Coverage uses: coverallsapp/github-action@v1.1.1 with: github-token: ${{ secrets.GITHUB_TOKEN }} path-to-lcov: "test/coverage/lcov.info" # - name: Run Unit Tests (Browser) {{SQL CARBON EDIT}} Skip for now # id: browser-unit-tests # run: DISPLAY=:10 yarn test-browser --browser chromium # - name: Run Integration Tests (Electron) {{SQL CARBON EDIT}} Skip for now # id: electron-integration-tests # run: DISPLAY=:10 ./scripts/test-integration.sh darwin: name: macOS runs-on: macos-latest timeout-minutes: 30 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v2.2.0 - uses: actions/setup-node@v2 with: node-version: 12 # {{SQL CARBON EDIT}} Skip caching for now # - 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 }}-cacheNodeModules13-${{ steps.nodeModulesCacheKey.outputs.value }} # restore-keys: ${{ runner.os }}-cacheNodeModules13- # - 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: Compile and Download run: yarn npm-run-all --max_old_space_size=4095 -lp compile "electron x64" playwright-install download-builtin-extensions - name: Run Unit Tests (Electron) run: DISPLAY=:10 ./scripts/test.sh # - name: Run Unit Tests (Browser) {{SQL CARBON EDIT}} Skip for now # run: DISPLAY=:10 yarn test-browser --browser chromium # - name: Run Integration Tests (Electron) {{SQL CARBON EDIT}} Skip for now # run: DISPLAY=:10 ./scripts/test-integration.sh hygiene: name: Hygiene and Layering runs-on: ubuntu-latest timeout-minutes: 30 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: 12 - 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 }}-cacheNodeModules13-${{ steps.nodeModulesCacheKey.outputs.value }} restore-keys: ${{ runner.os }}-cacheNodeModules13- - 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: Setup Build Environment # {{SQL CARBON EDIT}} Add step to install required packages if we need to run yarn if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }} run: | sudo apt-get update sudo apt-get install -y libkrb5-dev - 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: Run Strict Compile Options # {{SQL CARBON EDIT}} add step run: yarn strict-vscode # - name: Run Monaco Editor Checks {{SQL CARBON EDIT}} Remove Monaco checks # run: yarn monaco-compile-check - name: Run Trusted Types Checks run: yarn tsec-compile-check # - name: Editor Distro & ESM Bundle {{SQL CARBON EDIT}} Remove Monaco checks # run: yarn gulp editor-esm-bundle # - name: Typings validation prep {{SQL CARBON EDIT}} Remove Monaco checks # run: | # mkdir typings-test # - name: Typings validation {{SQL CARBON EDIT}} Remove Monaco checks # working-directory: ./typings-test # run: | # yarn init -yp # ../node_modules/.bin/tsc --init # echo "import '../out-monaco-editor-core';" > a.ts # ../node_modules/.bin/tsc --noEmit # - name: Webpack Editor {{SQL CARBON EDIT}} Remove Monaco checks # working-directory: ./test/monaco # run: yarn run bundle # - name: Compile Editor Tests {{SQL CARBON EDIT}} Remove Monaco checks # working-directory: ./test/monaco # run: yarn run compile # - name: Download Playwright {{SQL CARBON EDIT}} Remove Monaco checks # run: yarn playwright-install # - name: Run Editor Tests {{SQL CARBON EDIT}} Remove Monaco checks # timeout-minutes: 5 # working-directory: ./test/monaco # run: yarn test