diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3470ab0af9a..f3d140b7b94 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,8 +48,8 @@ jobs: - name: Run Valid Layers Checks run: yarn valid-layers-check - compile: - name: Compile Build + build-compile: + name: "Build: Compile" runs-on: ubuntu-latest env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -98,9 +98,9 @@ jobs: - name: Minify VS Code run: yarn gulp minify-vscode - linux-build: - name: Linux Build - needs: compile + build-linux-unit-tests: + name: "Build: Linux Unit Tests" + needs: build-compile runs-on: ubuntu-latest env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -161,9 +161,224 @@ jobs: - name: Run Unit Tests (Browser) run: DISPLAY=:10 yarn test-browser --build --browser chromium + build-linux-integration-tests: + name: "Build: Linux Integration Tests" + needs: build-compile + runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v2 + + # 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 + 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-beta + with: + node-version: 12 + + - name: Restore cached node modules + id: cacheNodeModules + uses: actions/cache@v2 + with: + path: '**/node_modules' + key: ${{ runner.os }}-cacheNodeModules-${{ hashFiles('.yarnrc', 'remote/.yarnrc', '**/yarn.lock', '!**/node_modules/**/yarn.lock', '!**/.*/**/yarn.lock') }} + restore-keys: ${{ runner.os }}-cacheNodeModules- + + - name: Restore cached /build/ scripts + id: cacheBuildScripts + uses: actions/cache@v2 + with: + path: build/**/*.js + key: ${{ runner.os }}-cacheBuildScripts-${{ hashFiles('build/yarn.lock', 'build/tsconfig.json', 'build/tsconfig.build.json', 'build/**/*.ts', '!**/node_modules/**/*.ts') }} + + - name: Restore cached compiled code + id: cacheCompiledCode + uses: actions/cache@v2 + with: + path: | + .build + out-build + out-vscode-min + key: cacheCompiledCode-${{ env.GITHUB_SHA }} + + - name: Build VS Code + run: yarn gulp vscode-linux-x64-min-ci + + - name: Download Electron + run: yarn electron x64 + - name: Run Integration Tests (Electron) run: DISPLAY=:10 ./scripts/test-integration.sh --build + build-darwin-unit-tests: + name: "Build: macOS Unit Tests" + needs: build-compile + runs-on: macos-latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v2 + + - uses: actions/setup-node@v2-beta + with: + node-version: 12 + + - name: Cache node modules + id: cacheNodeModules + uses: actions/cache@v2 + with: + path: '**/node_modules' + key: ${{ runner.os }}-cacheNodeModules-${{ hashFiles('.yarnrc', 'remote/.yarnrc', '**/yarn.lock', '!**/node_modules/**/yarn.lock', '!**/.*/**/yarn.lock') }} + restore-keys: ${{ runner.os }}-cacheNodeModules- + - name: Cache /build/ scripts + id: cacheBuildScripts + uses: actions/cache@v2 + with: + path: build/**/*.js + key: ${{ runner.os }}-cacheBuildScripts-${{ hashFiles('build/yarn.lock', 'build/tsconfig.json', 'build/tsconfig.build.json', 'build/**/*.ts', '!**/node_modules/**/*.ts') }} + - name: Execute yarn + if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' || steps.cacheBuildScripts.outputs.cache-hit != 'true' }} + env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + run: yarn --frozen-lockfile + + - name: Restore cached compiled code + id: cacheCompiledCode + uses: actions/cache@v2 + with: + path: | + .build + out-build + out-vscode-min + key: cacheCompiledCode-${{ env.GITHUB_SHA }} + + - name: Build VS Code + run: yarn gulp vscode-darwin-x64-min-ci + + - name: Download Electron + run: yarn electron x64 + + - name: Run Unit Tests (Electron) + run: ./scripts/test.sh --build + + - name: Download Playwright + run: node ./node_modules/playwright/install.js + + - name: Run Unit Tests (Browser) + run: yarn test-browser --build --browser chromium --browser webkit --browser firefox + + build-darwin-integration-tests: + name: "Build: macOS Integration Tests" + needs: build-compile + runs-on: macos-latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v2 + + - uses: actions/setup-node@v2-beta + with: + node-version: 12 + + - name: Cache node modules + id: cacheNodeModules + uses: actions/cache@v2 + with: + path: '**/node_modules' + key: ${{ runner.os }}-cacheNodeModules-${{ hashFiles('.yarnrc', 'remote/.yarnrc', '**/yarn.lock', '!**/node_modules/**/yarn.lock', '!**/.*/**/yarn.lock') }} + restore-keys: ${{ runner.os }}-cacheNodeModules- + - name: Cache /build/ scripts + id: cacheBuildScripts + uses: actions/cache@v2 + with: + path: build/**/*.js + key: ${{ runner.os }}-cacheBuildScripts-${{ hashFiles('build/yarn.lock', 'build/tsconfig.json', 'build/tsconfig.build.json', 'build/**/*.ts', '!**/node_modules/**/*.ts') }} + - name: Execute yarn + if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' || steps.cacheBuildScripts.outputs.cache-hit != 'true' }} + env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + run: yarn --frozen-lockfile + + - name: Restore cached compiled code + id: cacheCompiledCode + uses: actions/cache@v2 + with: + path: | + .build + out-build + out-vscode-min + key: cacheCompiledCode-${{ env.GITHUB_SHA }} + + - name: Build VS Code + run: yarn gulp vscode-darwin-x64-min-ci + + - name: Download Electron + run: yarn electron x64 + + - name: Run Integration Tests (Electron) + run: ./scripts/test-integration.sh --build + + build-darwin-smoke-tests: + name: "Build: macOS Smoke Tests" + needs: build-compile + runs-on: macos-latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v2 + + - uses: actions/setup-node@v2-beta + with: + node-version: 12 + + - name: Cache node modules + id: cacheNodeModules + uses: actions/cache@v2 + with: + path: '**/node_modules' + key: ${{ runner.os }}-cacheNodeModules-${{ hashFiles('.yarnrc', 'remote/.yarnrc', '**/yarn.lock', '!**/node_modules/**/yarn.lock', '!**/.*/**/yarn.lock') }} + restore-keys: ${{ runner.os }}-cacheNodeModules- + - name: Cache /build/ scripts + id: cacheBuildScripts + uses: actions/cache@v2 + with: + path: build/**/*.js + key: ${{ runner.os }}-cacheBuildScripts-${{ hashFiles('build/yarn.lock', 'build/tsconfig.json', 'build/tsconfig.build.json', 'build/**/*.ts', '!**/node_modules/**/*.ts') }} + - name: Execute yarn + if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' || steps.cacheBuildScripts.outputs.cache-hit != 'true' }} + env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + run: yarn --frozen-lockfile + + - name: Restore cached compiled code + id: cacheCompiledCode + uses: actions/cache@v2 + with: + path: | + .build + out-build + out-vscode-min + key: cacheCompiledCode-${{ env.GITHUB_SHA }} + + - name: Build VS Code + run: yarn gulp vscode-darwin-x64-min-ci + + - name: Run Smoke Tests (Electron) + continue-on-error: true + run: | + set -e + APP_ROOT=$(GITHUB_WORKSPACE)/VSCode-darwin-x64 + APP_NAME="`ls $APP_ROOT | head -n 1`" + yarn smoketest --build "$APP_ROOT/$APP_NAME" + linux: name: Linux runs-on: ubuntu-latest