158 lines
5.3 KiB
YAML
158 lines
5.3 KiB
YAML
name: Build
|
|
|
|
on:
|
|
pull_request:
|
|
branches: [main]
|
|
paths:
|
|
- "tdrive/backend/node/**"
|
|
- "tdrive/frontend/**"
|
|
- "tdrive/connectors/onlyoffice-connector/**"
|
|
- "tdrive/backend/utils/ldap-sync/**"
|
|
- "tdrive/backend/utils/nextcloud-migration/**"
|
|
|
|
jobs:
|
|
setup:
|
|
name: Setup jobs
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
changes: ${{ steps.filter.outputs.changes }}
|
|
steps:
|
|
- uses: dorny/paths-filter@v3
|
|
id: filter
|
|
with:
|
|
filters: |
|
|
backend:
|
|
- "tdrive/backend/node/**"
|
|
frontend:
|
|
- "tdrive/frontend/**"
|
|
onlyoffice-connector:
|
|
- "tdrive/connectors/onlyoffice-connector/**"
|
|
ldap-sync:
|
|
- "tdrive/backend/utils/ldap-sync/**"
|
|
nextcloud-migration:
|
|
- "tdrive/backend/utils/nextcloud-migration/**"
|
|
|
|
lint-backend:
|
|
runs-on: ubuntu-latest
|
|
if: contains(needs.setup.outputs.changes, 'backend')
|
|
needs:
|
|
- setup
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Prettier code style check
|
|
run: |
|
|
cd tdrive
|
|
docker-compose -f docker-compose.tests.yml run -e NODE_OPTIONS=--unhandled-rejections=warn node npm run lint:prettier
|
|
- name: Lint
|
|
run: |
|
|
cd tdrive
|
|
docker-compose -f docker-compose.tests.yml run -e NODE_OPTIONS=--unhandled-rejections=warn node npm run lint
|
|
|
|
test-backend:
|
|
runs-on: ubuntu-latest
|
|
if: contains(needs.setup.outputs.changes, 'backend')
|
|
needs:
|
|
- setup
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: e2e-mongo-s3-test
|
|
run: |
|
|
cd tdrive
|
|
docker-compose -f docker-compose.tests.yml run --rm -e NODE_OPTIONS=--unhandled-rejections=warn -e SEARCH_DRIVER=mongodb -e DB_DRIVER=mongodb -e PUBSUB_TYPE=local node npm run test:all
|
|
docker-compose -f docker-compose.tests.yml down
|
|
- name: e2e-opensearch-test
|
|
run: |
|
|
cd tdrive
|
|
docker-compose -f docker-compose.dev.tests.opensearch.yml up -d --force-recreate opensearch-node1 postgres node
|
|
sleep 60
|
|
docker-compose -f docker-compose.dev.tests.opensearch.yml logs
|
|
docker-compose -f docker-compose.dev.tests.opensearch.yml run -e NODE_OPTIONS=--unhandled-rejections=warn -e SEARCH_DRIVER=opensearch -e DB_DRIVER=postgres -e PUBSUB_TYPE=local node npm run test:all
|
|
docker-compose -f docker-compose.dev.tests.opensearch.yml down
|
|
- name: e2e-cassandra-test
|
|
run: |
|
|
cd tdrive
|
|
docker-compose -f docker-compose.tests.yml up -d scylladb elasticsearch rabbitmq
|
|
sleep 60
|
|
docker-compose -f docker-compose.tests.yml run -e NODE_OPTIONS=--unhandled-rejections=warn -e SEARCH_DRIVER=elasticsearch -e DB_DRIVER=cassandra node npm run test:all
|
|
- name: coverage
|
|
uses: adRise/jest-cov-reporter@e13d7638888cad7788298f4022b203b31a10c7c8
|
|
with:
|
|
branch-coverage-report-path: ./tdrive/coverage/coverage-summary.json
|
|
base-coverage-report-path: ./tdrive/coverage/coverage-summary.json
|
|
delta: 0.3
|
|
fullCoverageDiff: true
|
|
|
|
build-frontend:
|
|
runs-on: ubuntu-latest
|
|
if: contains(needs.setup.outputs.changes, 'frontend')
|
|
needs:
|
|
- setup
|
|
env:
|
|
FRONTEND_ENV: ${{ secrets.FRONTEND_ENV }}
|
|
|
|
strategy:
|
|
matrix:
|
|
node-version: [16.x]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Use Node.js ${{ matrix.node-version }}
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
- run: cd tdrive/frontend/ && yarn install
|
|
- run: cp tdrive/frontend/src/app/environment/environment.ts.dist tdrive/frontend/src/app/environment/environment.ts
|
|
- if: ${{ env.FRONTEND_ENV }}
|
|
run: echo ${{ secrets.FRONTEND_ENV }} > tdrive/frontend/src/app/environment/environment.ts
|
|
- run: cd tdrive/frontend/ && yarn test
|
|
- run: cd tdrive/frontend/ && yarn build
|
|
- name: Upload frontend build artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: frontend-build
|
|
path: tdrive/frontend/build/
|
|
|
|
build-onlyoffice-connector:
|
|
runs-on: ubuntu-latest
|
|
if: contains(needs.setup.outputs.changes, 'onlyoffice-connector')
|
|
needs:
|
|
- setup
|
|
strategy:
|
|
matrix:
|
|
node-version: [16.x]
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Use Node.js ${{ matrix.node-version }}
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
|
|
- name: Install dependencies and build
|
|
run: |
|
|
cd tdrive/connectors/onlyoffice-connector
|
|
npm i
|
|
npm run build --if-present
|
|
npm run lint
|
|
|
|
build-ldap-sync:
|
|
runs-on: ubuntu-20.04
|
|
if: contains(needs.setup.outputs.changes, 'ldap-sync')
|
|
needs:
|
|
- setup
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Build ldap sync
|
|
run: cd tdrive/backend/utils/ldap-sync && npm i && npm run build
|
|
|
|
build-nextcloud-migration:
|
|
runs-on: ubuntu-20.04
|
|
if: contains(needs.setup.outputs.changes, 'nextcloud-migration')
|
|
needs:
|
|
- setup
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Build Nextcloud migration
|
|
run: cd tdrive/backend/utils/nextcloud-migration && npm i && npm run build
|