commit 7fc703b7a01c038cfff69c88fea5d681b3011ea1
Author: juancarmore <juancar_more2@hotmail.com>
Date: Wed Nov 5 17:45:06 2025 +0100
backend: add E2EE configuration schema to MeetRoom
commit 3ad51133aaa696c36b9fc5dd1c271b5e09077e0b
Author: juancarmore <juancar_more2@hotmail.com>
Date: Wed Nov 5 16:15:13 2025 +0100
backend: enhance MongoDB configuration logging and validation
commit b5b52e97dd4a0e16dbb5cda53dc406aa5c739380
Author: cruizba <carlos.ruizbal@gmail.com>
Date: Wed Nov 5 15:50:05 2025 +0100
feat: add MongoDB configuration options for optional mongodb and configurable uri
commit c6f0c35435a18365c99f44c692d5d2f2a9bd53ab
Author: juancarmore <juancar_more2@hotmail.com>
Date: Wed Nov 5 13:59:10 2025 +0100
ci: update backend integration test scripts and workflow
commit 19a1348f2f695a27694f1c5e80de696d039b6f4e
Author: juancarmore <juancar_more2@hotmail.com>
Date: Fri Oct 31 12:05:38 2025 +0100
frontend: replace AuthService with ApiKeyService for API key management
commit 9465e40bc1babfae1203dc317907dc86dc57cd0c
Author: juancarmore <juancar_more2@hotmail.com>
Date: Fri Oct 31 12:05:07 2025 +0100
test: refactor auth and api key tests structure to improve consistency
commit b154aa8186eaaa51e027fc1459b9175f87affbd8
Author: juancarmore <juancar_more2@hotmail.com>
Date: Fri Oct 31 12:02:42 2025 +0100
openapi: move API key management endpoints to a dedicated file and update references
commit 6987d2b587d1cd6ba85f2ea38c408957e5f0de04
Author: juancarmore <juancar_more2@hotmail.com>
Date: Fri Oct 31 12:01:00 2025 +0100
backend: move API key management endpoints to its own controller
commit 8c9452bb74887265920942e3253921a43504790b
Author: juancarmore <juancar_more2@hotmail.com>
Date: Fri Oct 31 12:00:00 2025 +0100
backend: comment out MigrationService import and related export to prevent initialization error
commit daa923fa9f6ee68cb4f4ebfa61ce16026fbdc374
Author: juancarmore <juancar_more2@hotmail.com>
Date: Thu Oct 30 23:09:18 2025 +0100
backend: implement migration service
commit 058593fb9488ae00077e28a591c7ea2a8b8d96cc
Author: juancarmore <juancar_more2@hotmail.com>
Date: Thu Oct 30 23:08:05 2025 +0100
backend: add migration repository and model to handle database migrations
commit 4cbc9a9f48ede801333bfe37f0dba2993a79c29c
Author: juancarmore <juancar_more2@hotmail.com>
Date: Thu Oct 30 19:41:01 2025 +0100
backend: refactor update repository methods to throw errors instead of returning null for not found cases
commit 03496a733b9fa39776eb4bf70057459c7e567954
Author: juancarmore <juancar_more2@hotmail.com>
Date: Thu Oct 30 17:55:42 2025 +0100
openapi: update roomName parameter description and reference in recordings path
commit 74293e04967fb1416b69324294ae864df9173f91
Author: juancarmore <juancar_more2@hotmail.com>
Date: Thu Oct 30 17:55:04 2025 +0100
openapi: add analytics endpoint and schema for usage metrics
commit 8de171b0b340ffa787ef136a3e516f03f96b1938
Author: juancarmore <juancar_more2@hotmail.com>
Date: Thu Oct 30 17:40:24 2025 +0100
test: add analytics API and corresponding security tests
commit aaa15acdda5f09c6c0e45d24385cc9ec5daca55b
Author: juancarmore <juancar_more2@hotmail.com>
Date: Thu Oct 30 14:04:58 2025 +0100
frontend: implement analytics service and update overview component to use new metrics
commit 13bad60bcc02e9d7aa46fc9bb96f7cc85ec818cc
Author: juancarmore <juancar_more2@hotmail.com>
Date: Thu Oct 30 14:04:23 2025 +0100
backend: add analytics endpoint for usage metrics
commit ee820bba27f421bb2f9d34130bc00b41aefad217
Author: juancarmore <juancar_more2@hotmail.com>
Date: Thu Oct 30 13:18:29 2025 +0100
backend: replace z.enum with z.nativeEnum for improved type safety in validation schemas
commit 1d394d059e6beef47faddd2205482974ecc1860c
Author: juancarmore <juancar_more2@hotmail.com>
Date: Thu Oct 30 11:50:03 2025 +0100
backend: update MongoDB configuration to use new environment variables and improve connection string handling
commit 56c0c3a1bd19bbd2a5e0fdbe582fdf288c6f33d1
Author: juancarmore <juancar_more2@hotmail.com>
Date: Wed Oct 29 18:23:06 2025 +0100
frontend: update room ID reference in recording lists component
commit 189d1b26ad18d29cf9f7c6f85c2524ed5ad33f72
Author: juancarmore <juancar_more2@hotmail.com>
Date: Wed Oct 29 18:12:07 2025 +0100
tests: remove unused MeetStorageService references and related tests
commit fe3fcdba35afcf186b0ff05e9ec3b2ae05da1005
Author: juancarmore <juancar_more2@hotmail.com>
Date: Wed Oct 29 17:31:18 2025 +0100
backend: rename MeetStorageService to LegacyStorageService and remove all unused methods
commit fa782f234d561b5f7f6d4a50e54e3278b9beaec4
Author: juancarmore <juancar_more2@hotmail.com>
Date: Wed Oct 29 15:56:31 2025 +0100
backend: replace MeetStorageService with RecordingRepository and BlobStorageService for recording management
commit 51dea37c07e477bc7e447b2e57acd21b44deb5e4
Author: juancarmore <juancar_more2@hotmail.com>
Date: Wed Oct 29 15:53:48 2025 +0100
frontend: add roomName filter to recording service and recordings component
commit fa283e7c51b3382300cb25fa5f8a9e144637c757
Author: juancarmore <juancar_more2@hotmail.com>
Date: Wed Oct 29 15:53:04 2025 +0100
backend: add roomName filter in get recordings endpoint
commit d1dfb24cfda2e22d739f506bf0213275cd4b2bdd
Author: juancarmore <juancar_more2@hotmail.com>
Date: Wed Oct 29 15:51:00 2025 +0100
backend: implement BlobStorageService for managing recording media files in object storage
commit ce293cf37545fa3aaad638eb25dfd9ae5fc8dd72
Author: juancarmore <juancar_more2@hotmail.com>
Date: Wed Oct 29 15:48:04 2025 +0100
backend: add unique index for efficient querying on MeetApiKey and MeetGlobalConfig schemas
commit 3d999b4249e15f63ef086d2ab38485e0fbadb27e
Author: juancarmore <juancar_more2@hotmail.com>
Date: Wed Oct 29 15:47:44 2025 +0100
backend: add RecordingRepository and schema for managing recording entities
commit 757636c55254e76643b99a66bc583ab834c5eadd
Author: juancarmore <juancar_more2@hotmail.com>
Date: Tue Oct 28 13:05:12 2025 +0100
tests: refactor list rooms with pagination test to create rooms sequentially and ensure correct ordering
commit cda25543e30883431962bef8617cb245eade8a1d
Author: juancarmore <juancar_more2@hotmail.com>
Date: Tue Oct 28 13:04:32 2025 +0100
tests: centralize method restoreDefaultGlobalConfig and refactor code
commit 726d128d7471ad4abbaabda086304f22705ddf82
Author: juancarmore <juancar_more2@hotmail.com>
Date: Tue Oct 28 13:01:17 2025 +0100
backend: enhance GlobalConfig schema with authentication, security, webhook, and room configuration sub-schemas
commit fd49fbb03cd8d70f29cc5781a0e0b9b5244f4747
Author: juancarmore <juancar_more2@hotmail.com>
Date: Tue Oct 28 11:02:34 2025 +0100
backend: add StorageInitService for managing storage initialization and refactor dependency injection
commit 783f480337e61bfc19ad6d19f3b84c523577c309
Author: juancarmore <juancar_more2@hotmail.com>
Date: Tue Oct 28 11:01:58 2025 +0100
backend: refactor middleware and services to use GlobalConfigService for configuration management
commit d28247647c2e0712c0575faa8a85a8c67a75f343
Author: juancarmore <juancar_more2@hotmail.com>
Date: Mon Oct 27 22:23:40 2025 +0100
backend: move authenticateUser method to UserService and rename AuthService to ApiKeyService
commit c8f98391a178da4f9525069203fe4e3d2aecfaaa
Author: juancarmore <juancar_more2@hotmail.com>
Date: Mon Oct 27 22:21:37 2025 +0100
backend: implement GlobalConfigService for managing global configuration and update related controllers
commit 08421feffc8cd4cadb8f2df3b4c41169d4776572
Author: juancarmore <juancar_more2@hotmail.com>
Date: Mon Oct 27 22:20:23 2025 +0100
backend: add GlobalConfigRepository and schema for managing global configuration
commit e1e1b0dda511fb5fbdd8fc88f8a691bc974866c9
Author: juancarmore <juancar_more2@hotmail.com>
Date: Mon Oct 27 13:53:52 2025 +0100
backend: refactor AuthService and MeetStorageService to use ApiKeyRepository for API key management
commit c46fd1669d0923a63195ef95ddf3105584fc18fc
Author: juancarmore <juancar_more2@hotmail.com>
Date: Mon Oct 27 13:52:56 2025 +0100
backend: add ApiKeyRepository and schema for managing API keys
commit c1220eb89b98e842009fd16d95ddd87fd87ae02c
Author: juancarmore <juancar_more2@hotmail.com>
Date: Mon Oct 27 13:52:27 2025 +0100
backend: rename UserDocument and UserModel to MeetUserDocument and MeetUserModel for consistency
commit 331e4ca264086e4fd0e947f2c8adc04dbfe7f831
Author: juancarmore <juancar_more2@hotmail.com>
Date: Mon Oct 27 12:27:43 2025 +0100
backend: replace MeetStorageService usage with UserRepository in UserService
commit ec074307c3cd8c30f4babef5194fc4ebbe7ea7c0
Author: juancarmore <juancar_more2@hotmail.com>
Date: Mon Oct 27 12:05:15 2025 +0100
test: update startTestServer calls to await for asynchronous initialization
commit 3bba2e2822824a1855e6691c0c3b456c9ac5dd3a
Author: juancarmore <juancar_more2@hotmail.com>
Date: Mon Oct 27 12:04:39 2025 +0100
test: initialize eager services in startTestServer and update calls to await for asynchronous initialization
commit e52f7353515f95835c9d15dba41ff33a2e26d367
Author: juancarmore <juancar_more2@hotmail.com>
Date: Fri Oct 24 19:40:04 2025 +0200
backend: add User schema and repository for user management
commit 10c548afa9e45dd72d0fb86c9dab0a601c08e652
Author: juancarmore <juancar_more2@hotmail.com>
Date: Fri Oct 24 19:39:38 2025 +0200
backend: add findAll method to BaseRepository and findExpiredRooms method to RoomRepository
commit cbe467e0e5475311f8aea4b4ff99a481007537c0
Author: juancarmore <juancar_more2@hotmail.com>
Date: Fri Oct 24 19:39:09 2025 +0200
backend: optimize MeetRoom schema by adding indexes for efficient querying
commit fb95ef3248e64721e107c3c019e6a61a210ad6ce
Author: juancarmore <juancar_more2@hotmail.com>
Date: Fri Oct 24 18:07:38 2025 +0200
backend: enhance cursor-based pagination to handle null/undefined values in MongoDB queries
commit bf709bb8e4a301a5738e44c7d7fb2f219846c3ce
Author: juancarmore <juancar_more2@hotmail.com>
Date: Fri Oct 24 18:07:25 2025 +0200
ci: update integration test paths to reflect new directory structure
commit 67ce9da156dccded23eb2b9b9a8a34c835d7f27b
Author: juancarmore <juancar_more2@hotmail.com>
Date: Fri Oct 24 15:09:21 2025 +0200
backend: replace storage service with RoomRepository for room management
commit 25dcd057d6597910fa4992dc45934e85edbd6a3e
Author: juancarmore <juancar_more2@hotmail.com>
Date: Fri Oct 24 15:07:55 2025 +0200
backend: implement RoomRepository to manage MeetRoom objects in MongoDB
commit 42e6036741871b964d9d7a644210eedeaf1ad543
Author: juancarmore <juancar_more2@hotmail.com>
Date: Fri Oct 24 15:05:31 2025 +0200
backend: add mongoose dependecy and create MongoDBService
360 lines
15 KiB
YAML
360 lines
15 KiB
YAML
name: Backend Integration Tests
|
|
on:
|
|
push:
|
|
paths:
|
|
- 'meet-ce/backend/src/**'
|
|
- 'meet-ce/backend/package.json'
|
|
- 'pnpm-lock.yaml'
|
|
- 'meet-ce/backend/tests/**'
|
|
- '.github/workflows/backend-integration-test.yaml'
|
|
pull_request:
|
|
paths:
|
|
- 'meet-ce/backend/src/**'
|
|
workflow_dispatch:
|
|
inputs:
|
|
use-aws:
|
|
description: 'Run recording tests in AWS EC2 runner'
|
|
default: 'true'
|
|
aws-instance-type:
|
|
description: 'AWS EC2 instance type'
|
|
default: 'c5.2xlarge'
|
|
|
|
jobs:
|
|
build-components:
|
|
name: Build OpenVidu Components Angular
|
|
runs-on: ov-actions-runner
|
|
steps:
|
|
- name: Build Components
|
|
id: build
|
|
uses: OpenVidu/actions/build-openvidu-components-angular@main
|
|
outputs:
|
|
artifact_name: ${{ steps.build.outputs.artifact_name }}
|
|
|
|
test-api:
|
|
name: ${{ matrix.test-name }}
|
|
needs: build-components
|
|
runs-on: ov-actions-runner
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- test-name: 'Room Management API Tests (Rooms, Meetings, Participants)'
|
|
test-script: 'test:integration-backend-room-management'
|
|
- test-name: 'Webhook Tests'
|
|
test-script: 'test:integration-backend-webhooks'
|
|
- test-name: 'Auth & Security API Tests (Security, Auth, API Keys, Users)'
|
|
test-script: 'test:integration-backend-auth-security'
|
|
- test-name: 'Config & Analytics API Tests (Global Config, Analytics)'
|
|
test-script: 'test:integration-backend-config-analytics'
|
|
steps:
|
|
- name: Install LK CLI
|
|
run: curl -sSL https://get.livekit.io/cli | bash
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v5
|
|
with:
|
|
node-version: '22.13'
|
|
- name: Setup pnpm
|
|
uses: pnpm/action-setup@v4
|
|
with:
|
|
version: 10.18.3
|
|
|
|
- name: Setup OpenVidu Local Deployment
|
|
uses: OpenVidu/actions/start-openvidu-local-deployment@main
|
|
with:
|
|
ref-openvidu-local-deployment: development
|
|
pre_startup_commands: |
|
|
cat <<'BASH' > pre_startup_commands.sh
|
|
#!/bin/bash
|
|
echo "Commenting out openvidu-meet container in docker-compose.yaml"
|
|
if [ -f docker-compose.yaml ]; then
|
|
yq e 'del(.services.openvidu-meet)' -i docker-compose.yaml
|
|
fi
|
|
BASH
|
|
chmod +x pre_startup_commands.sh && ./pre_startup_commands.sh
|
|
|
|
- name: Setup OpenVidu Meet
|
|
uses: OpenVidu/actions/start-openvidu-meet@main
|
|
with:
|
|
build_components_angular: 'true'
|
|
components_artifact_name: ${{ needs.build-components.outputs.artifact_name }}
|
|
|
|
- name: Run tests
|
|
run: pnpm run ${{ matrix.test-script }}
|
|
env:
|
|
JEST_JUNIT_OUTPUT_DIR: './backend/reports/'
|
|
|
|
- name: Upload OpenVidu Meet logs
|
|
if: failure()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ matrix.test-name }}-openvidu-meet-logs
|
|
path: meet_backend.log
|
|
retention-days: 2
|
|
|
|
- name: Publish Test Report
|
|
uses: mikepenz/action-junit-report@v4
|
|
if: always()
|
|
with:
|
|
report_paths: '**/reports/junit.xml'
|
|
fail_on_failure: true
|
|
require_tests: true
|
|
|
|
- name: Clean up
|
|
if: always()
|
|
uses: OpenVidu/actions/cleanup@main
|
|
|
|
start-aws-runner-s3:
|
|
name: Prepare AWS runner (S3)
|
|
runs-on: ov-actions-runner
|
|
if: ${{ inputs.use-aws != 'false' }}
|
|
outputs:
|
|
label: ${{ steps.start-ec2-runner.outputs.label }}
|
|
ec2-instance-id: ${{ steps.start-ec2-runner.outputs.ec2-instance-id }}
|
|
steps:
|
|
- name: Start AWS EC2 Runner
|
|
id: start-ec2-runner
|
|
uses: OpenVidu/actions/start-aws-runner@main
|
|
with:
|
|
aws-instance-type: ${{ inputs.aws-instance-type || 'c5.2xlarge' }}
|
|
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
aws-region: ${{ vars.AWS_REGION }}
|
|
github-token: ${{ secrets.OPENVIDU_GITHUB_TOKEN }}
|
|
ec2-image-id: ${{ vars.AWS_GITHUB_ACTIONS_AMI }}
|
|
subnet-id: ${{ vars.AWS_SUBNET_ID }}
|
|
security-group-id: ${{ vars.AWS_SECURITY_GROUP_ID }}
|
|
workflow-name: ${{ github.workflow }}-s3
|
|
repository-name: ${{ github.repository }}
|
|
|
|
start-aws-runner-abs:
|
|
name: Prepare AWS runner (ABS)
|
|
runs-on: ov-actions-runner
|
|
if: ${{ inputs.use-aws != 'false' }}
|
|
outputs:
|
|
label: ${{ steps.start-ec2-runner.outputs.label }}
|
|
ec2-instance-id: ${{ steps.start-ec2-runner.outputs.ec2-instance-id }}
|
|
steps:
|
|
- name: Start AWS EC2 Runner
|
|
id: start-ec2-runner
|
|
uses: OpenVidu/actions/start-aws-runner@main
|
|
with:
|
|
aws-instance-type: ${{ inputs.aws-instance-type || 'c5.2xlarge' }}
|
|
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
aws-region: ${{ vars.AWS_REGION }}
|
|
github-token: ${{ secrets.OPENVIDU_GITHUB_TOKEN }}
|
|
ec2-image-id: ${{ vars.AWS_GITHUB_ACTIONS_AMI }}
|
|
subnet-id: ${{ vars.AWS_SUBNET_ID }}
|
|
security-group-id: ${{ vars.AWS_SECURITY_GROUP_ID }}
|
|
workflow-name: ${{ github.workflow }}-abs
|
|
repository-name: ${{ github.repository }}
|
|
|
|
start-aws-runner-gcs:
|
|
name: Prepare AWS runner (GCS)
|
|
runs-on: ov-actions-runner
|
|
if: ${{ inputs.use-aws != 'false' }}
|
|
outputs:
|
|
label: ${{ steps.start-ec2-runner.outputs.label }}
|
|
ec2-instance-id: ${{ steps.start-ec2-runner.outputs.ec2-instance-id }}
|
|
steps:
|
|
- name: Start AWS EC2 Runner
|
|
id: start-ec2-runner
|
|
uses: OpenVidu/actions/start-aws-runner@main
|
|
with:
|
|
aws-instance-type: ${{ inputs.aws-instance-type || 'c5.2xlarge' }}
|
|
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
aws-region: ${{ vars.AWS_REGION }}
|
|
github-token: ${{ secrets.OPENVIDU_GITHUB_TOKEN }}
|
|
ec2-image-id: ${{ vars.AWS_GITHUB_ACTIONS_AMI }}
|
|
subnet-id: ${{ vars.AWS_SUBNET_ID }}
|
|
security-group-id: ${{ vars.AWS_SECURITY_GROUP_ID }}
|
|
workflow-name: ${{ github.workflow }}-gcs
|
|
repository-name: ${{ github.repository }}
|
|
|
|
test-recordings:
|
|
name: Recordings API Tests (${{ matrix.storage-provider }})
|
|
needs:
|
|
- start-aws-runner-s3
|
|
- start-aws-runner-abs
|
|
- start-aws-runner-gcs
|
|
- build-components
|
|
if: ${{ always() && (needs.start-aws-runner-s3.result == 'success' || needs.start-aws-runner-s3.result == 'skipped') && (needs.start-aws-runner-abs.result == 'success' || needs.start-aws-runner-abs.result == 'skipped') && (needs.start-aws-runner-gcs.result == 'success' || needs.start-aws-runner-gcs.result == 'skipped') }}
|
|
runs-on: ${{ (matrix.storage-provider == 's3' && needs.start-aws-runner-s3.outputs.label) || (matrix.storage-provider == 'abs' && needs.start-aws-runner-abs.outputs.label) || (matrix.storage-provider == 'gcs' && needs.start-aws-runner-gcs.outputs.label) || 'ov-actions-runner' }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
storage-provider: [s3, abs, gcs]
|
|
timeout-minutes: 30
|
|
steps:
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v5
|
|
with:
|
|
node-version: '22.13'
|
|
- name: Setup pnpm
|
|
uses: pnpm/action-setup@v2
|
|
with:
|
|
version: 10
|
|
- name: Install LK CLI
|
|
run: curl -sSL https://get.livekit.io/cli | bash
|
|
- name: Save GCP credentials
|
|
if: matrix.storage-provider == 'gcs'
|
|
run: |
|
|
echo '${{ secrets.GCP_CREDENTIALS_JSON }}' > /tmp/credentials.json
|
|
chmod 600 /tmp/credentials.json
|
|
- name: Remove existing rooms or recordings in buckets
|
|
if: matrix.storage-provider == 'abs' || matrix.storage-provider == 'gcs'
|
|
run: |
|
|
if [[ "${{ matrix.storage-provider }}" == "abs" ]]; then
|
|
echo "Installing Azure CLI..."
|
|
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
|
|
|
|
echo "Logging into Azure..."
|
|
az storage blob delete-batch \
|
|
--account-name "${{ vars.MEET_AZURE_ACCOUNT_NAME }}" \
|
|
--account-key "${{ secrets.MEET_AZURE_ACCOUNT_KEY }}" \
|
|
--source openvidu-appdata-recordings \
|
|
--pattern "openvidu-meet/*" \
|
|
--delete-snapshots include || echo "No files found to delete or container doesn't exist"
|
|
echo "Existing blobs deleted from Azure Blob Storage container."
|
|
|
|
elif [[ "${{ matrix.storage-provider }}" == "gcs" ]]; then
|
|
echo "Installing Google Cloud CLI..."
|
|
curl https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-linux-x86_64.tar.gz | tar -xz
|
|
./google-cloud-sdk/install.sh --quiet
|
|
export PATH=$PATH:$(pwd)/google-cloud-sdk/bin
|
|
|
|
echo "Authenticating with Google Cloud..."
|
|
gcloud auth activate-service-account --key-file=/tmp/credentials.json
|
|
|
|
echo "Removing openvidu-meet folder from GCS bucket..."
|
|
gsutil -m rm -r gs://openvidu-appdata/openvidu-meet/ || echo "No files found to delete or bucket doesn't exist"
|
|
fi
|
|
- name: Setup OpenVidu Local Deployment
|
|
uses: OpenVidu/actions/start-openvidu-local-deployment@main
|
|
with:
|
|
ref-openvidu-local-deployment: development
|
|
pre_startup_commands: |
|
|
cat <<'BASH' > pre_startup_commands.sh
|
|
#!/bin/bash
|
|
if [[ "${{ matrix.storage-provider }}" == "abs" ]]; then
|
|
echo "Using Azure Blob Storage provider"
|
|
yq e -i '
|
|
del(.storage.s3) |
|
|
.storage.azure = {
|
|
"account_name": "${{ vars.MEET_AZURE_ACCOUNT_NAME }}",
|
|
"account_key": "${{ secrets.MEET_AZURE_ACCOUNT_KEY }}",
|
|
"container_name": "openvidu-appdata-recordings"
|
|
}
|
|
' egress.yaml
|
|
elif [[ "${{ matrix.storage-provider }}" == "gcs" ]]; then
|
|
echo "Using Google Cloud Storage provider"
|
|
yq eval --inplace '.storage.gcp.credentials_json = (load("/tmp/credentials.json") | tostring) | .storage.gcp.credentials_json style="single"' egress.yaml
|
|
|
|
yq e -i '
|
|
del(.storage.s3) |
|
|
.storage.gcp.bucket = "openvidu-appdata"
|
|
' egress.yaml
|
|
fi
|
|
|
|
echo "Commenting out openvidu-meet container in docker-compose.yaml"
|
|
if [ -f docker-compose.yaml ]; then
|
|
yq e 'del(.services.openvidu-meet)' -i docker-compose.yaml
|
|
fi
|
|
BASH
|
|
chmod +x pre_startup_commands.sh && ./pre_startup_commands.sh
|
|
|
|
- name: Setup OpenVidu Meet
|
|
uses: OpenVidu/actions/start-openvidu-meet@main
|
|
with:
|
|
build_components_angular: 'true'
|
|
components_artifact_name: ${{ needs.build-components.outputs.artifact_name }}
|
|
env:
|
|
MEET_BLOB_STORAGE_MODE: ${{ matrix.storage-provider }}
|
|
# ABS variables
|
|
MEET_AZURE_ACCOUNT_NAME: ${{ matrix.storage-provider == 'abs' && vars.MEET_AZURE_ACCOUNT_NAME || '' }}
|
|
MEET_AZURE_ACCOUNT_KEY: ${{ matrix.storage-provider == 'abs' && secrets.MEET_AZURE_ACCOUNT_KEY || '' }}
|
|
MEET_AZURE_CONTAINER_NAME: ${{ matrix.storage-provider == 'abs' && 'openvidu-appdata-recordings' || '' }}
|
|
# GCS variables
|
|
GOOGLE_APPLICATION_CREDENTIALS: ${{ matrix.storage-provider == 'gcs' && '/tmp/credentials.json' || '' }}
|
|
MEET_S3_BUCKET: ${{ matrix.storage-provider == 'gcs' && 'openvidu-appdata' || 'openvidu-appdata' }}
|
|
|
|
- name: Run tests
|
|
run: pnpm run test:integration-backend-recordings
|
|
env:
|
|
JEST_JUNIT_OUTPUT_DIR: './backend/reports/'
|
|
MEET_BLOB_STORAGE_MODE: ${{ matrix.storage-provider }}
|
|
# ABS variables
|
|
MEET_AZURE_ACCOUNT_NAME: ${{ matrix.storage-provider == 'abs' && vars.MEET_AZURE_ACCOUNT_NAME || '' }}
|
|
MEET_AZURE_ACCOUNT_KEY: ${{ matrix.storage-provider == 'abs' && secrets.MEET_AZURE_ACCOUNT_KEY || '' }}
|
|
MEET_AZURE_CONTAINER_NAME: ${{ matrix.storage-provider == 'abs' && 'openvidu-appdata-recordings' || '' }}
|
|
# GCS variables
|
|
GOOGLE_APPLICATION_CREDENTIALS: ${{ matrix.storage-provider == 'gcs' && '/tmp/credentials.json' || '' }}
|
|
MEET_S3_BUCKET: ${{ matrix.storage-provider == 'gcs' && 'openvidu-appdata' || 'openvidu-appdata' }}
|
|
|
|
- name: Publish Test Report
|
|
uses: mikepenz/action-junit-report@v4
|
|
if: always()
|
|
with:
|
|
report_paths: '**/reports/junit.xml'
|
|
fail_on_failure: true
|
|
require_tests: true
|
|
|
|
- name: Upload OpenVidu Meet logs
|
|
if: failure()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: recordings-test-${{ matrix.storage-provider }}-openvidu-meet-logs
|
|
path: backend/meet_backend.log
|
|
retention-days: 2
|
|
|
|
- name: Clean up credentials
|
|
if: always() && matrix.storage-provider == 'gcs'
|
|
run: |
|
|
rm -f /tmp/credentials.json
|
|
echo "GCP credentials file removed"
|
|
|
|
- name: Clean up
|
|
if: always()
|
|
uses: OpenVidu/actions/cleanup@main
|
|
|
|
stop-runner:
|
|
name: Stop EC2 runner (${{ matrix.storage-provider }})
|
|
needs:
|
|
- start-aws-runner-s3
|
|
- start-aws-runner-abs
|
|
- start-aws-runner-gcs
|
|
- test-recordings
|
|
runs-on: ov-actions-runner
|
|
if: ${{ always() }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
storage-provider: [s3, abs, gcs]
|
|
steps:
|
|
- name: Stop AWS EC2 Runner
|
|
if: ${{ (matrix.storage-provider == 's3' && needs.start-aws-runner-s3.result != 'skipped') || (matrix.storage-provider == 'abs' && needs.start-aws-runner-abs.result != 'skipped') || (matrix.storage-provider == 'gcs' && needs.start-aws-runner-gcs.result != 'skipped') }}
|
|
uses: OpenVidu/actions/stop-aws-runner@main
|
|
with:
|
|
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
aws-region: ${{ vars.AWS_REGION }}
|
|
github-token: ${{ secrets.OPENVIDU_GITHUB_TOKEN }}
|
|
label: ${{ (matrix.storage-provider == 's3' && needs.start-aws-runner-s3.outputs.label) || (matrix.storage-provider == 'abs' && needs.start-aws-runner-abs.outputs.label) || (matrix.storage-provider == 'gcs' && needs.start-aws-runner-gcs.outputs.label) }}
|
|
ec2-instance-id: ${{ (matrix.storage-provider == 's3' && needs.start-aws-runner-s3.outputs.ec2-instance-id) || (matrix.storage-provider == 'abs' && needs.start-aws-runner-abs.outputs.ec2-instance-id) || (matrix.storage-provider == 'gcs' && needs.start-aws-runner-gcs.outputs.ec2-instance-id) }}
|
|
|
|
remove-components-artifact:
|
|
name: Remove OpenVidu Components Angular Artifact
|
|
needs:
|
|
- build-components
|
|
- test-api
|
|
- test-recordings
|
|
runs-on: ov-actions-runner
|
|
if: ${{ always() }}
|
|
steps:
|
|
- name: Remove Artifact
|
|
uses: geekyeggo/delete-artifact@v5
|
|
with:
|
|
name: ${{ needs.build-components.outputs.artifact_name }}
|