fix: adapt for npm switch in theia #1037
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- main | |
workflow_dispatch: | |
pull_request: | |
branches: | |
- main | |
schedule: | |
- cron: "0 4 * * *" # Runs every day at 4am: https://docs.github.com/en/actions/reference/events-that-trigger-workflows#scheduled-events-schedule | |
jobs: | |
build: | |
name: E2E Tests on ubuntu-22.04 with Node.js 20.x | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 60 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 | |
- name: Use Node.js 20.x | |
uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3.8.2 | |
with: | |
node-version: 20.x | |
registry-url: 'https://registry.npmjs.org' | |
- name: Use Python 3.11 | |
uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v4.8.0 | |
with: | |
python-version: '3.11' | |
- name: Build | |
shell: bash | |
run: | | |
yarn | |
- name: Checkout Theia | |
uses: actions/checkout@v3 | |
with: | |
repository: eclipse-theia/theia | |
path: ./theia | |
- name: Patch Theia to disable splash screen | |
shell: bash | |
working-directory: ./theia | |
run: | | |
sed -i '/"splashScreenOptions": {/,/}/c\ "splashScreenOptions": {}' examples/electron/package.json | |
- name: Build Theia | |
shell: bash | |
working-directory: ./theia | |
run: | | |
npm install -g node-gyp | |
npm ci | |
npm run build | |
npm run build:browser | |
npm run build:electron | |
env: | |
NODE_OPTIONS: --max_old_space_size=4096 | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # https://github.com/microsoft/vscode-ripgrep/issues/9 | |
- name: Cache Build Result | |
uses: actions/cache@v3 | |
id: build-result | |
with: | |
path: ./ | |
key: ${{ github.run_number }} | |
browser-tests: | |
name: E2E Browser Tests on ubuntu-22.04 with Node.js 20.x | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 60 | |
needs: [build] | |
steps: | |
- name: Restore Build Result (#${{ github.run_number }}) | |
uses: actions/cache/restore@v3 | |
id: build-result | |
with: | |
path: ./ | |
key: ${{ github.run_number }} | |
fail-on-cache-miss: true | |
- name: Use Node.js 20.x | |
uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3.8.2 | |
with: | |
node-version: 20.x | |
registry-url: 'https://registry.npmjs.org' | |
- name: Use Python 3.11 | |
uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v4.8.0 | |
with: | |
python-version: '3.11' | |
- name: Run Theia | |
shell: bash | |
working-directory: ./theia | |
run: npm run start:browser & | |
- name: Test (playwright browser) | |
shell: bash | |
run: yarn ui-tests-ci | |
- name: Upload test results (browser) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ui-tests-browser-${{ github.run_number }} | |
path: allure-results/* | |
electron-tests: | |
name: E2E Electron Tests on ubuntu-22.04 with Node.js 20.x | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 60 | |
needs: [build] | |
steps: | |
- name: Restore Build Result (#${{ github.run_number }}) | |
uses: actions/cache/restore@v3 | |
id: build-result | |
with: | |
path: ./ | |
key: ${{ github.run_number }} | |
fail-on-cache-miss: true | |
- name: Use Node.js 20.x | |
uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3.8.2 | |
with: | |
node-version: 20.x | |
registry-url: 'https://registry.npmjs.org' | |
- name: Use Python 3.11 | |
uses: actions/setup-python@b64ffcaf5b410884ad320a9cfac8866006a109aa # v4.8.0 | |
with: | |
python-version: '3.11' | |
- name: Test (playwright electron) | |
shell: bash | |
run: xvfb-run yarn ui-tests-ci-electron | |
- name: Upload test results (electron) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ui-tests-electron-${{ github.run_number }} | |
path: allure-results/* | |
generate-report: | |
name: Generate Report of E2E Electron Tests | |
runs-on: ubuntu-22.04 | |
needs: [browser-tests, electron-tests] | |
steps: | |
- name: Get History | |
uses: actions/checkout@v2 | |
if: always() && github.ref == 'refs/heads/main' | |
continue-on-error: true | |
with: | |
ref: gh-pages | |
path: gh-pages | |
- name: Download test results | |
uses: actions/download-artifact@v4 | |
with: | |
path: allure-results | |
pattern: ui-tests-*-${{ github.run_number }} | |
merge-multiple: true | |
- name: Generate Report | |
uses: simple-elf/allure-report-action@58e6590adf6d8f196a0d771bf8a00e6921086a62 # v1.9 | |
if: always() && github.ref == 'refs/heads/main' | |
with: | |
allure_results: allure-results | |
allure_history: allure-history | |
keep_reports: 100 | |
subfolder: allure | |
- name: Publish Report | |
if: always() && github.ref == 'refs/heads/main' | |
uses: peaceiris/actions-gh-pages@v2 | |
env: | |
PERSONAL_TOKEN: ${{ secrets.TOKEN }} | |
PUBLISH_BRANCH: gh-pages | |
PUBLISH_DIR: allure-history |