mirror of
https://github.com/toeverything/AFFiNE.git
synced 2024-12-18 13:22:40 +03:00
1b6a78cd00
Co-authored-by: Mirone <Saul-Mirone@outlook.com>
286 lines
7.9 KiB
YAML
286 lines
7.9 KiB
YAML
name: Build & 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.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.yml'
|
|
- '!.github/actions/build-rust/action.yml'
|
|
- '!.github/actions/setup-node/action.yml'
|
|
|
|
env:
|
|
DEBUG: napi:*
|
|
BUILD_TYPE: canary
|
|
APP_NAME: affine
|
|
AFFINE_ENV: dev
|
|
COVERAGE: true
|
|
DISTRIBUTION: browser
|
|
MACOSX_DEPLOYMENT_TARGET: '10.13'
|
|
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
|
|
|
|
jobs:
|
|
lint:
|
|
name: Lint
|
|
runs-on: ubuntu-latest
|
|
environment: development
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Setup Node.js
|
|
uses: ./.github/actions/setup-node
|
|
with:
|
|
electron-install: false
|
|
- name: Run i18n codegen
|
|
run: yarn i18n-codegen gen
|
|
- name: Run ESLint
|
|
run: yarn lint:eslint --max-warnings=0
|
|
- name: Run Prettier
|
|
# Set nmMode in `actions/setup-node` will modify the .yarnrc.yml
|
|
run: |
|
|
git checkout .yarnrc.yml
|
|
yarn lint:prettier
|
|
- name: Run circular
|
|
run: yarn circular
|
|
- name: Run Type Check
|
|
run: yarn typecheck
|
|
|
|
check-yarn-binary:
|
|
name: Check yarn binary
|
|
runs-on: ubuntu-latest
|
|
environment: development
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Run check
|
|
run: |
|
|
yarn set version $(node -e "console.log(require('./package.json').packageManager.split('@')[1])")
|
|
git diff --exit-code
|
|
|
|
build-prototype:
|
|
name: Build Prototype
|
|
runs-on: ubuntu-latest
|
|
environment: development
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Setup Node.js
|
|
uses: ./.github/actions/setup-node
|
|
with:
|
|
electron-install: false
|
|
- name: Build Prototype
|
|
run: yarn nx build prototype
|
|
- name: Upload prototype artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: prototype
|
|
path: ./apps/prototype/dist
|
|
if-no-files-found: error
|
|
|
|
build-docs:
|
|
name: Build Docs
|
|
runs-on: ubuntu-latest
|
|
environment: development
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Setup Node.js
|
|
uses: ./.github/actions/setup-node
|
|
with:
|
|
electron-install: false
|
|
- run: yarn nx build @affine/docs
|
|
env:
|
|
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
|
|
|
|
e2e-plugin-test:
|
|
name: E2E Plugin Test
|
|
runs-on: ubuntu-latest
|
|
environment: development
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Setup Node.js
|
|
uses: ./.github/actions/setup-node
|
|
with:
|
|
playwright-install: true
|
|
electron-install: false
|
|
- name: Run playwright tests
|
|
run: yarn e2e --forbid-only
|
|
working-directory: tests/affine-plugin
|
|
env:
|
|
COVERAGE: 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: e2e-plugin-test
|
|
name: affine
|
|
fail_ci_if_error: false
|
|
|
|
- name: Upload test results
|
|
if: ${{ failure() }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: test-results-e2e-plugin
|
|
path: ./test-results
|
|
if-no-files-found: ignore
|
|
|
|
e2e-prototype-test:
|
|
name: E2E Prototype Test
|
|
runs-on: ubuntu-latest
|
|
environment: development
|
|
needs: build-prototype
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Setup Node.js
|
|
uses: ./.github/actions/setup-node
|
|
with:
|
|
playwright-install: true
|
|
electron-install: false
|
|
- name: Download prototype artifact
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: prototype
|
|
path: ./apps/prototype/dist
|
|
- name: Run playwright tests
|
|
run: yarn e2e --forbid-only
|
|
working-directory: tests/affine-prototype
|
|
env:
|
|
COVERAGE: 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: e2etest-prototype
|
|
# name: affine
|
|
# fail_ci_if_error: false
|
|
|
|
- name: Upload test results
|
|
if: ${{ failure() }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: test-results-e2e-prototype
|
|
path: ./test-results
|
|
if-no-files-found: ignore
|
|
|
|
e2e-test:
|
|
name: E2E Test
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
shard: [1, 2, 3, 4, 5]
|
|
environment: development
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Setup Node.js
|
|
uses: ./.github/actions/setup-node
|
|
with:
|
|
playwright-install: true
|
|
electron-install: false
|
|
|
|
- name: Run playwright tests
|
|
run: yarn e2e --forbid-only --shard=${{ matrix.shard }}/${{ strategy.job-total }}
|
|
working-directory: tests/affine-local
|
|
env:
|
|
COVERAGE: 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: e2etest
|
|
name: affine
|
|
fail_ci_if_error: false
|
|
|
|
- name: Upload test results
|
|
if: ${{ failure() }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: test-results-e2e-${{ matrix.shard }}
|
|
path: ./test-results
|
|
if-no-files-found: ignore
|
|
|
|
e2e-migration-test:
|
|
name: E2E Migration Test
|
|
runs-on: ubuntu-latest
|
|
environment: development
|
|
strategy:
|
|
matrix:
|
|
spec:
|
|
- { package: 0.7.0-canary.18 }
|
|
- { package: 0.8.0-canary.7 }
|
|
- { package: 0.8.3 }
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Setup Node.js
|
|
uses: ./.github/actions/setup-node
|
|
with:
|
|
playwright-install: true
|
|
electron-install: false
|
|
|
|
- name: Unzip
|
|
run: yarn unzip
|
|
working-directory: ./tests/affine-legacy/${{ matrix.spec.package }}
|
|
|
|
- name: Run playwright tests
|
|
run: yarn e2e --forbid-only
|
|
working-directory: ./tests/affine-legacy/${{ matrix.spec.package }}
|
|
|
|
- name: Upload test results
|
|
if: ${{ failure() }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: test-results-e2e-migration-${{ matrix.spec.package }}
|
|
path: ./tests/affine-legacy/${{ matrix.spec.package }}/test-results
|
|
if-no-files-found: ignore
|
|
|
|
unit-test:
|
|
name: Unit Test
|
|
runs-on: ubuntu-latest
|
|
environment: development
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Setup Node.js
|
|
uses: ./.github/actions/setup-node
|
|
with:
|
|
electron-install: false
|
|
|
|
- name: Unit Test
|
|
run: yarn nx test:coverage @affine/monorepo
|
|
|
|
- name: Upload unit test coverage results
|
|
uses: codecov/codecov-action@v3
|
|
with:
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
files: ./.coverage/store/lcov.info
|
|
flags: unittest
|
|
name: affine
|
|
fail_ci_if_error: false
|