name: CI/CD on: push: branches: - master paths-ignore: - '**/*.md' - 'doc/**' - 'logo/**' workflow_dispatch: pull_request: branches: - master paths-ignore: - '**/*.md' - 'doc/**' - 'logo/**' jobs: lint: name: Lint runs-on: ubuntu-22.04 timeout-minutes: 60 steps: - name: Checkout uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 - name: Use Node.js 22.x uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3.8.2 with: node-version: 22.x registry-url: 'https://registry.npmjs.org' - name: Use Python 3.13 uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: '3.13' - name: Install and Build shell: bash run: | npm ci ./scripts/check_git_status.sh env: NODE_OPTIONS: --max_old_space_size=4096 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # https://github.com/microsoft/vscode-ripgrep/issues/9 - name: Lint run: | npm run lint build: name: Build and Test (${{ matrix.os }}, node-${{ matrix.node }}) strategy: fail-fast: false matrix: os: [windows-2022, ubuntu-22.04, macos-14] node: [20.x, 22.x] runs-on: ${{ matrix.os }} timeout-minutes: 60 steps: - name: Checkout uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 - name: Use Node.js ${{ matrix.node }} uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3.8.2 with: node-version: ${{ matrix.node }} registry-url: 'https://registry.npmjs.org' - name: Use Python 3.13 uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: '3.13' - name: Build shell: bash run: | npm ci npm run build git status ./scripts/check_git_status.sh env: NODE_OPTIONS: --max_old_space_size=4096 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # https://github.com/microsoft/vscode-ripgrep/issues/9 - name: Download Plugins shell: bash run: | npm run download:plugins -- --rate-limit 3 - name: Test (headless) if: matrix.tests != 'skip' shell: bash run: | npm run rebuild:browser npm run test:theia - name: Test (browser) if: matrix.tests != 'skip' && matrix.node == '20.x' run: | npm run test:browser - name: Test (electron) if: matrix.tests != 'skip' && runner.os == 'Linux' run: | xvfb-run -a npm run test:electron