CI #987
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: | | |
yarn --skip-integrity-check --network-timeout 100000 | |
yarn browser build | |
yarn electron build | |
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: yarn browser start & | |
- 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 |