mirror of
https://github.com/toeverything/AFFiNE.git
synced 2024-11-27 06:33:32 +03:00
216 lines
6.0 KiB
YAML
216 lines
6.0 KiB
YAML
name: Build(Server) & Test
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- v[0-9]+.[0-9]+.x-staging
|
|
- v[0-9]+.[0-9]+.x
|
|
paths-ignore:
|
|
- README.md
|
|
- .github/**
|
|
- '!.github/workflows/build-server.yml'
|
|
- '!.github/actions/build-rust/action.yml'
|
|
- '!.github/actions/setup-node/action.yml'
|
|
pull_request:
|
|
merge_group:
|
|
branches:
|
|
- master
|
|
- v[0-9]+.[0-9]+.x-staging
|
|
- v[0-9]+.[0-9]+.x
|
|
paths-ignore:
|
|
- README.md
|
|
- .github/**
|
|
- '!.github/workflows/build-server.yml'
|
|
- '!.github/actions/build-rust/action.yml'
|
|
- '!.github/actions/setup-node/action.yml'
|
|
|
|
env:
|
|
DEBUG: napi:*
|
|
BUILD_TYPE: canary
|
|
APP_NAME: affine
|
|
COVERAGE: true
|
|
DISTRIBUTION: browser
|
|
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
|
|
|
|
jobs:
|
|
build-storage:
|
|
name: Build Storage
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
RUSTFLAGS: '-C debuginfo=1'
|
|
environment: development
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Setup Node.js
|
|
uses: ./.github/actions/setup-node
|
|
- name: Setup Rust
|
|
uses: ./.github/actions/build-rust
|
|
with:
|
|
target: 'x86_64-unknown-linux-gnu'
|
|
package: '@affine/storage'
|
|
nx_token: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
|
|
- name: Upload storage.node
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: storage.node
|
|
path: ./packages/storage/storage.node
|
|
if-no-files-found: error
|
|
|
|
server-test:
|
|
name: Server Test
|
|
runs-on: ubuntu-latest
|
|
environment: development
|
|
needs: build-storage
|
|
services:
|
|
postgres:
|
|
image: postgres
|
|
env:
|
|
POSTGRES_PASSWORD: affine
|
|
options: >-
|
|
--health-cmd pg_isready
|
|
--health-interval 10s
|
|
--health-timeout 5s
|
|
--health-retries 5
|
|
ports:
|
|
- 5432:5432
|
|
mailer:
|
|
image: mailhog/mailhog
|
|
ports:
|
|
- 1025:1025
|
|
- 8025:8025
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Setup Node.js
|
|
uses: ./.github/actions/setup-node
|
|
|
|
- name: Initialize database
|
|
run: |
|
|
psql -h localhost -U postgres -c "CREATE DATABASE affine;"
|
|
psql -h localhost -U postgres -c "CREATE USER affine WITH PASSWORD 'affine';"
|
|
psql -h localhost -U postgres -c "ALTER USER affine WITH SUPERUSER;"
|
|
env:
|
|
PGPASSWORD: affine
|
|
|
|
- name: Generate prisma client
|
|
run: |
|
|
yarn workspace @affine/server exec prisma generate
|
|
yarn workspace @affine/server exec prisma db push
|
|
env:
|
|
DATABASE_URL: postgresql://affine:affine@localhost:5432/affine
|
|
|
|
- name: Run init-db script
|
|
run: yarn workspace @affine/server exec ts-node-esm ./scripts/init-db.ts
|
|
env:
|
|
DATABASE_URL: postgresql://affine:affine@localhost:5432/affine
|
|
|
|
- name: Download storage.node
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: storage.node
|
|
path: ./apps/server
|
|
|
|
- name: Run server tests
|
|
run: yarn workspace @affine/server test:coverage
|
|
env:
|
|
CARGO_TARGET_DIR: '${{ github.workspace }}/target'
|
|
DATABASE_URL: postgresql://affine:affine@localhost:5432/affine
|
|
ENABLE_LOCAL_EMAIL: true
|
|
|
|
- name: Upload server test coverage results
|
|
uses: codecov/codecov-action@v3
|
|
with:
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
files: ./apps/server/.coverage/lcov.info
|
|
flags: server-test
|
|
name: affine
|
|
fail_ci_if_error: false
|
|
|
|
server-e2e-test:
|
|
name: Server E2E Test
|
|
runs-on: ubuntu-latest
|
|
environment: development
|
|
needs: build-storage
|
|
services:
|
|
postgres:
|
|
image: postgres
|
|
env:
|
|
POSTGRES_PASSWORD: affine
|
|
options: >-
|
|
--health-cmd pg_isready
|
|
--health-interval 10s
|
|
--health-timeout 5s
|
|
--health-retries 5
|
|
ports:
|
|
- 5432:5432
|
|
mailer:
|
|
image: mailhog/mailhog
|
|
ports:
|
|
- 1025:1025
|
|
- 8025:8025
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Setup Node.js
|
|
uses: ./.github/actions/setup-node
|
|
with:
|
|
playwright-install: true
|
|
|
|
- name: Initialize database
|
|
run: |
|
|
psql -h localhost -U postgres -c "CREATE DATABASE affine;"
|
|
psql -h localhost -U postgres -c "CREATE USER affine WITH PASSWORD 'affine';"
|
|
psql -h localhost -U postgres -c "ALTER USER affine WITH SUPERUSER;"
|
|
env:
|
|
PGPASSWORD: affine
|
|
|
|
- name: Generate prisma client
|
|
run: |
|
|
yarn exec prisma generate
|
|
yarn exec prisma db push
|
|
working-directory: apps/server
|
|
env:
|
|
DATABASE_URL: postgresql://affine:affine@localhost:5432/affine
|
|
|
|
- name: Run init-db script
|
|
run: yarn exec ts-node-esm ./scripts/init-db.ts
|
|
working-directory: apps/server
|
|
env:
|
|
DATABASE_URL: postgresql://affine:affine@localhost:5432/affine
|
|
|
|
- name: Download storage.node
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: storage.node
|
|
path: ./apps/server
|
|
|
|
- name: Run playwright tests
|
|
run: yarn e2e --forbid-only
|
|
working-directory: tests/affine-cloud
|
|
env:
|
|
COVERAGE: true
|
|
DATABASE_URL: postgresql://affine:affine@localhost:5432/affine
|
|
ENABLE_LOCAL_EMAIL: true
|
|
|
|
- name: Collect code coverage report
|
|
run: yarn exec nyc report -t .nyc_output --report-dir .coverage --reporter=lcov
|
|
|
|
- name: Upload e2e test coverage results
|
|
uses: codecov/codecov-action@v3
|
|
with:
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
files: ./.coverage/lcov.info
|
|
flags: server-e2etest
|
|
name: affine
|
|
fail_ci_if_error: false
|
|
|
|
- name: Upload test results
|
|
if: ${{ failure() }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: test-results-e2e-server
|
|
path: ./tests/affine-cloud/test-results
|
|
if-no-files-found: ignore
|