mirror of https://github.com/OpenVidu/openvidu.git
221 lines
6.8 KiB
YAML
221 lines
6.8 KiB
YAML
name: OpenVidu Dashboard CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
paths:
|
|
- 'openvidu-dashboard/**'
|
|
- '.github/workflows/openvidu-dashboard-ci.yml'
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
paths:
|
|
- 'openvidu-dashboard/**'
|
|
- '.github/workflows/openvidu-dashboard-ci.yml'
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: openvidu-dashboard-ci-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
checks:
|
|
name: Lint, format, type check and spec validation
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: openvidu-dashboard
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
|
|
with:
|
|
node-version-file: openvidu-dashboard/.node-version
|
|
|
|
- name: Set up pnpm
|
|
uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
|
|
with:
|
|
package_json_file: openvidu-dashboard/package.json
|
|
cache: true
|
|
cache_dependency_path: openvidu-dashboard/pnpm-lock.yaml
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
|
|
- name: Lint
|
|
run: ./dashboard.sh lint --skip-install
|
|
|
|
- name: Check formatting
|
|
run: ./dashboard.sh format-check --skip-install
|
|
|
|
- name: Type check
|
|
run: ./dashboard.sh typecheck --skip-install
|
|
|
|
- name: Validate OpenSpec
|
|
run: ./dashboard.sh spec-validate --skip-install
|
|
|
|
unit:
|
|
name: Unit tests
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: openvidu-dashboard
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
|
|
with:
|
|
node-version-file: openvidu-dashboard/.node-version
|
|
|
|
- name: Set up pnpm
|
|
uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
|
|
with:
|
|
package_json_file: openvidu-dashboard/package.json
|
|
cache: true
|
|
cache_dependency_path: openvidu-dashboard/pnpm-lock.yaml
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
|
|
- name: Unit tests
|
|
run: ./dashboard.sh test-unit --skip-install
|
|
|
|
integration:
|
|
name: Integration tests (MongoDB)
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 45
|
|
defaults:
|
|
run:
|
|
working-directory: openvidu-dashboard
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
|
|
with:
|
|
node-version-file: openvidu-dashboard/.node-version
|
|
|
|
- name: Set up pnpm
|
|
uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
|
|
with:
|
|
package_json_file: openvidu-dashboard/package.json
|
|
cache: true
|
|
cache_dependency_path: openvidu-dashboard/pnpm-lock.yaml
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
|
|
# Millisecond latency budgets are noisy on shared runners: overruns become warning annotations. Query plan
|
|
# assertions still fail the job.
|
|
- name: Integration tests
|
|
env:
|
|
DASHBOARD_TEST_LATENCY_BUDGETS: report
|
|
run: ./dashboard.sh test-integration --skip-install
|
|
|
|
contract:
|
|
name: Data model contract with the writer
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 30
|
|
defaults:
|
|
run:
|
|
working-directory: openvidu-dashboard
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
|
|
# Beside the openvidu-livekit submodule, which pins the released writer instead of openvidu/main.
|
|
- name: Checkout openvidu-livekit
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
repository: OpenVidu/openvidu-livekit
|
|
ref: openvidu/main
|
|
path: openvidu-livekit-main
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
|
|
with:
|
|
go-version-file: openvidu-livekit-main/go.mod
|
|
cache-dependency-path: openvidu-livekit-main/go.sum
|
|
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
|
|
with:
|
|
node-version-file: openvidu-dashboard/.node-version
|
|
|
|
- name: Set up pnpm
|
|
uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
|
|
with:
|
|
package_json_file: openvidu-dashboard/package.json
|
|
cache: true
|
|
cache_dependency_path: openvidu-dashboard/pnpm-lock.yaml
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install --frozen-lockfile --filter "@openvidu-dashboard/backend..."
|
|
|
|
- name: Contract check
|
|
run: ./dashboard.sh contract-check ../openvidu-livekit-main --skip-install
|
|
|
|
e2e:
|
|
name: End-to-end tests (Playwright)
|
|
needs: checks
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 45
|
|
defaults:
|
|
run:
|
|
working-directory: openvidu-dashboard
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
|
|
with:
|
|
node-version-file: openvidu-dashboard/.node-version
|
|
|
|
- name: Set up pnpm
|
|
uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
|
|
with:
|
|
package_json_file: openvidu-dashboard/package.json
|
|
cache: true
|
|
cache_dependency_path: openvidu-dashboard/pnpm-lock.yaml
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
|
|
- name: Install Playwright browsers
|
|
working-directory: openvidu-dashboard/dashboard-ce/e2e
|
|
run: pnpm exec playwright install --with-deps chromium
|
|
|
|
- name: End-to-end tests
|
|
run: ./dashboard.sh e2e --skip-install
|
|
|
|
- name: Upload the Playwright report
|
|
if: failure()
|
|
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
with:
|
|
name: openvidu-dashboard-playwright-report
|
|
path: |
|
|
openvidu-dashboard/dashboard-ce/e2e/playwright-report
|
|
openvidu-dashboard/dashboard-ce/e2e/test-results
|
|
retention-days: 7
|