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