chore: upgrade to turbo v2 and reduce ci quality gate runtime #4824
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: Test - Linter & Playwright | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- main | |
- dev | |
paths: | |
- 'electron/**' | |
- .github/workflows/jan-electron-linter-and-test.yml | |
- 'web/**' | |
- 'joi/**' | |
- 'package.json' | |
- 'node_modules/**' | |
- 'yarn.lock' | |
- 'core/**' | |
- 'extensions/**' | |
- '!README.md' | |
- 'Makefile' | |
pull_request: | |
branches: | |
- main | |
- dev | |
- release/** | |
paths: | |
- 'electron/**' | |
- .github/workflows/jan-electron-linter-and-test.yml | |
- 'web/**' | |
- 'joi/**' | |
- 'package.json' | |
- 'node_modules/**' | |
- 'yarn.lock' | |
- 'Makefile' | |
- 'extensions/**' | |
- 'core/**' | |
- '!README.md' | |
jobs: | |
base_branch_cov: | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
ref: ${{ github.base_ref }} | |
- name: Use Node.js v20.9.0 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: v20.9.0 | |
- name: Install dependencies | |
run: | | |
yarn | |
yarn build:core | |
yarn build:joi | |
- name: Run test coverage | |
run: yarn test:coverage | |
- name: Upload code coverage for ref branch | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ref-lcov.info | |
path: ./coverage/lcov.info | |
test-on-macos: | |
if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) || github.event_name == 'push' || github.event_name == 'workflow_dispatch' | |
runs-on: macos-latest | |
steps: | |
- name: Getting the repo | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Installing node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 20 | |
- name: 'Cleanup cache' | |
continue-on-error: true | |
run: | | |
rm -rf ~/jan | |
make clean | |
- name: Get Commit Message for PR | |
if: github.event_name == 'pull_request' | |
run: | | |
echo "REPORT_PORTAL_DESCRIPTION=${{github.event.after}})" >> $GITHUB_ENV | |
- name: Get Commit Message for push event | |
if: github.event_name == 'push' | |
run: | | |
echo "REPORT_PORTAL_DESCRIPTION=${{github.sha}})" >> $GITHUB_ENV | |
- name: 'Config report portal' | |
run: | | |
make update-playwright-config REPORT_PORTAL_URL=${{ secrets.REPORT_PORTAL_URL }} REPORT_PORTAL_API_KEY=${{ secrets.REPORT_PORTAL_API_KEY }} REPORT_PORTAL_PROJECT_NAME=${{ secrets.REPORT_PORTAL_PROJECT_NAME }} REPORT_PORTAL_LAUNCH_NAME="Jan App macos" REPORT_PORTAL_DESCRIPTION="${{env.REPORT_PORTAL_DESCRIPTION}}" | |
- name: Linter and test | |
run: | | |
make test | |
env: | |
CSC_IDENTITY_AUTO_DISCOVERY: 'false' | |
test-on-macos-pr-target: | |
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository | |
runs-on: macos-latest | |
steps: | |
- name: Getting the repo | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Installing node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 20 | |
- name: 'Cleanup cache' | |
continue-on-error: true | |
run: | | |
rm -rf ~/jan | |
make clean | |
- name: Linter and test | |
run: | | |
make test | |
env: | |
CSC_IDENTITY_AUTO_DISCOVERY: 'false' | |
test-on-windows: | |
if: github.event_name == 'push' | |
strategy: | |
fail-fast: false | |
matrix: | |
antivirus-tools: ['mcafee', 'default-windows-security', 'bit-defender'] | |
runs-on: windows-desktop-${{ matrix.antivirus-tools }} | |
steps: | |
- name: Getting the repo | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Installing node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 20 | |
# Clean cache, continue on error | |
- name: 'Cleanup cache' | |
shell: powershell | |
continue-on-error: true | |
run: | | |
$path = "$Env:APPDATA\jan" | |
if (Test-Path $path) { | |
Remove-Item "\\?\$path" -Recurse -Force | |
} else { | |
Write-Output "Folder does not exist." | |
} | |
make clean | |
- name: Get Commit Message for push event | |
if: github.event_name == 'push' | |
shell: bash | |
run: | | |
echo "REPORT_PORTAL_DESCRIPTION=${{github.sha}}" >> $GITHUB_ENV | |
- name: 'Config report portal' | |
shell: bash | |
run: | | |
make update-playwright-config REPORT_PORTAL_URL=${{ secrets.REPORT_PORTAL_URL }} REPORT_PORTAL_API_KEY=${{ secrets.REPORT_PORTAL_API_KEY }} REPORT_PORTAL_PROJECT_NAME=${{ secrets.REPORT_PORTAL_PROJECT_NAME }} REPORT_PORTAL_LAUNCH_NAME="Jan App Windows ${{ matrix.antivirus-tools }}" REPORT_PORTAL_DESCRIPTION="${{env.REPORT_PORTAL_DESCRIPTION}}" | |
- name: Linter and test | |
shell: powershell | |
run: | | |
make test | |
test-on-windows-pr: | |
if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) | |
runs-on: windows-desktop-default-windows-security | |
steps: | |
- name: Getting the repo | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Installing node | |
uses: actions/setup-node@v1 | |
with: | |
node-version: 20 | |
# Clean cache, continue on error | |
- name: 'Cleanup cache' | |
shell: powershell | |
continue-on-error: true | |
run: | | |
$path = "$Env:APPDATA\jan" | |
if (Test-Path $path) { | |
Remove-Item "\\?\$path" -Recurse -Force | |
} else { | |
Write-Output "Folder does not exist." | |
} | |
make clean | |
- name: Get Commit Message for PR | |
if: github.event_name == 'pull_request' | |
shell: bash | |
run: | | |
echo "REPORT_PORTAL_DESCRIPTION=${{github.event.after}}" >> $GITHUB_ENV | |
- name: 'Config report portal' | |
shell: bash | |
run: | | |
make update-playwright-config REPORT_PORTAL_URL=${{ secrets.REPORT_PORTAL_URL }} REPORT_PORTAL_API_KEY=${{ secrets.REPORT_PORTAL_API_KEY }} REPORT_PORTAL_PROJECT_NAME=${{ secrets.REPORT_PORTAL_PROJECT_NAME }} REPORT_PORTAL_LAUNCH_NAME="Jan App Windows" REPORT_PORTAL_DESCRIPTION="${{env.REPORT_PORTAL_DESCRIPTION}}" | |
- name: Linter and test | |
shell: powershell | |
run: | | |
make test | |
test-on-windows-pr-target: | |
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository | |
runs-on: windows-latest | |
steps: | |
- name: Getting the repo | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Installing node | |
uses: actions/setup-node@v1 | |
with: | |
node-version: 20 | |
# Clean cache, continue on error | |
- name: 'Cleanup cache' | |
shell: powershell | |
continue-on-error: true | |
run: | | |
$path = "$Env:APPDATA\jan" | |
if (Test-Path $path) { | |
Remove-Item "\\?\$path" -Recurse -Force | |
} else { | |
Write-Output "Folder does not exist." | |
} | |
make clean | |
- name: Linter and test | |
shell: powershell | |
run: | | |
make test | |
test-on-ubuntu: | |
runs-on: ubuntu-latest | |
if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) || github.event_name == 'push' || github.event_name == 'workflow_dispatch' | |
steps: | |
- name: Getting the repo | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Installing node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 20 | |
- name: 'Cleanup cache' | |
continue-on-error: true | |
run: | | |
rm -rf ~/jan | |
make clean | |
- name: Get Commit Message for PR | |
if: github.event_name == 'pull_request' | |
run: | | |
echo "REPORT_PORTAL_DESCRIPTION=${{github.event.after}}" >> $GITHUB_ENV | |
- name: Get Commit Message for push event | |
if: github.event_name == 'push' | |
run: | | |
echo "REPORT_PORTAL_DESCRIPTION=${{github.sha}}" >> $GITHUB_ENV | |
- name: 'Config report portal' | |
shell: bash | |
run: | | |
make update-playwright-config REPORT_PORTAL_URL=${{ secrets.REPORT_PORTAL_URL }} REPORT_PORTAL_API_KEY=${{ secrets.REPORT_PORTAL_API_KEY }} REPORT_PORTAL_PROJECT_NAME=${{ secrets.REPORT_PORTAL_PROJECT_NAME }} REPORT_PORTAL_LAUNCH_NAME="Jan App Linux" REPORT_PORTAL_DESCRIPTION="${{env.REPORT_PORTAL_DESCRIPTION}}" | |
- name: Linter and test | |
run: | | |
export DISPLAY=$(w -h | awk 'NR==1 {print $2}') | |
echo -e "Display ID: $DISPLAY" | |
make test | |
- uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: playwright-report | |
path: electron/playwright-report/ | |
retention-days: 2 | |
coverage-check: | |
runs-on: ubuntu-latest | |
needs: base_branch_cov | |
if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) || github.event_name == 'push' || github.event_name == 'workflow_dispatch' | |
steps: | |
- name: Getting the repo | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Installing node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 20 | |
- name: Install yarn | |
run: npm install -g yarn | |
- name: 'Cleanup cache' | |
continue-on-error: true | |
run: | | |
rm -rf ~/jan | |
make clean | |
- name: Download code coverage report from base branch | |
uses: actions/download-artifact@v4 | |
with: | |
name: ref-lcov.info | |
- name: Linter and test coverage | |
run: | | |
export DISPLAY=$(w -h | awk 'NR==1 {print $2}') | |
echo -e "Display ID: $DISPLAY" | |
make lint | |
yarn build:test | |
yarn test:coverage | |
- name: Generate Code Coverage report | |
id: code-coverage | |
uses: barecheck/code-coverage-action@v1 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
lcov-file: './coverage/lcov.info' | |
base-lcov-file: './lcov.info' | |
send-summary-comment: true | |
show-annotations: 'warning' | |
test-on-ubuntu-pr-target: | |
runs-on: ubuntu-latest | |
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository | |
steps: | |
- name: Getting the repo | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Installing node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 20 | |
- name: 'Cleanup cache' | |
continue-on-error: true | |
run: | | |
rm -rf ~/jan | |
make clean | |
- name: Linter and test | |
run: | | |
export DISPLAY=$(w -h | awk 'NR==1 {print $2}') | |
echo -e "Display ID: $DISPLAY" | |
make test |