mirror of
https://github.com/toeverything/AFFiNE.git
synced 2024-11-23 21:52:49 +03:00
316 lines
9.2 KiB
YAML
316 lines
9.2 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@v4
|
|
- name: Setup Node.js
|
|
uses: ./.github/actions/setup-node
|
|
with:
|
|
extra-flags: workspaces focus @affine/storage
|
|
electron-install: false
|
|
build-infra: false
|
|
build-plugins: false
|
|
- name: Build 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/backend/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@v4
|
|
|
|
- name: Setup Node.js
|
|
uses: ./.github/actions/setup-node
|
|
with:
|
|
electron-install: false
|
|
|
|
- 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 ./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: ./packages/backend/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
|
|
|
|
- name: Upload server test coverage results
|
|
uses: codecov/codecov-action@v3
|
|
with:
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
files: ./packages/backend/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@v4
|
|
|
|
- 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 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 ./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: ./packages/backend/server
|
|
|
|
- name: Run playwright tests
|
|
run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn workspace @affine-test/affine-cloud e2e --forbid-only
|
|
env:
|
|
COVERAGE: true
|
|
DATABASE_URL: postgresql://affine:affine@localhost:5432/affine
|
|
|
|
- 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
|
|
|
|
server-desktop-e2e-test:
|
|
name: Server Desktop 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@v4
|
|
|
|
- name: Setup Node.js
|
|
uses: ./.github/actions/setup-node
|
|
with:
|
|
playwright-install: true
|
|
hard-link-nm: false
|
|
|
|
- name: Build AFFiNE native
|
|
uses: ./.github/actions/build-rust
|
|
with:
|
|
target: x86_64-unknown-linux-gnu
|
|
package: '@affine/native'
|
|
nx_token: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
|
|
|
|
- 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 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 ./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: ./packages/backend/server
|
|
|
|
- name: Build Plugins
|
|
run: yarn run build:plugins
|
|
|
|
- name: Build Desktop Layers
|
|
run: yarn workspace @affine/electron build:dev
|
|
|
|
- name: Run playwright tests
|
|
run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" yarn workspace @affine-test/affine-desktop-cloud e2e
|
|
env:
|
|
COVERAGE: true
|
|
DEV_SERVER_URL: http://localhost:8080
|
|
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
|