diff --git a/.github/workflows/build-master.yml b/.github/workflows/build-master.yml deleted file mode 100644 index f95a53e0e5..0000000000 --- a/.github/workflows/build-master.yml +++ /dev/null @@ -1,354 +0,0 @@ -name: Build & Test - -on: - push: - branches: [master] - -jobs: - lint: - name: Lint - runs-on: ubuntu-latest - environment: development - - steps: - - uses: actions/checkout@v3 - - name: Setup Node.js - uses: ./.github/actions/setup-node - - run: yarn lint --max-warnings=0 - - build-storybook: - name: Build Storybook - runs-on: ubuntu-latest - environment: development - - steps: - - uses: actions/checkout@v3 - - name: Setup Node.js - uses: ./.github/actions/setup-node - - run: yarn build:storybook - - name: Upload storybook artifact - uses: actions/upload-artifact@v3 - with: - name: storybook - path: ./packages/component/storybook-static - if-no-files-found: error - - build-frontend: - name: Build @affine/web - runs-on: ubuntu-latest - environment: production - - steps: - - uses: actions/checkout@v3 - - name: Setup Node.js - uses: ./.github/actions/setup-node - - name: Cache Next.js - uses: actions/cache@v3 - with: - path: | - ${{ github.workspace }}/apps/web/.next/cache - key: ${{ runner.os }}-nextjs-${{ hashFiles('**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }} - restore-keys: | - ${{ runner.os }}-nextjs-${{ hashFiles('**/yarn.lock') }}- - - - name: Build - run: yarn build - env: - NEXT_PUBLIC_FIREBASE_API_KEY: ${{ secrets.NEXT_PUBLIC_FIREBASE_API_KEY }} - NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN: ${{ secrets.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN }} - NEXT_PUBLIC_FIREBASE_PROJECT_ID: ${{ secrets.NEXT_PUBLIC_FIREBASE_PROJECT_ID }} - NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET: ${{ secrets.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET }} - NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID: ${{ secrets.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID }} - NEXT_PUBLIC_FIREBASE_APP_ID: ${{ secrets.NEXT_PUBLIC_FIREBASE_APP_ID }} - NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID: ${{ secrets.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID }} - PERFSEE_TOKEN: ${{ secrets.PERFSEE_TOKEN }} - - - name: Export - run: yarn export - - - name: Upload artifact - uses: actions/upload-artifact@v3 - with: - name: next-js - path: ./apps/web/out - if-no-files-found: error - - publish-frontend: - name: Push frontend image - runs-on: ubuntu-latest - needs: build-frontend - - permissions: - contents: read - packages: write - - env: - REGISTRY: ghcr.io - IMAGE_NAME: 'toeverything/affine-pathfinder' - IMAGE_TAG: canary-${{ github.sha }} - IMAGE_TAG_LATEST: nightly-latest - - steps: - - name: Check out the repo - uses: actions/checkout@v3 - - - name: Download artifact - uses: actions/download-artifact@v3 - with: - name: next-js - path: ./apps/web/out - - - name: Log in to Docker Hub - uses: docker/login-action@v2 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@v4 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - tags: | - ${{ env.IMAGE_TAG }} - ${{ env.IMAGE_TAG_LATEST }} - - - name: Build Docker image - uses: docker/build-push-action@v3 - with: - context: . - push: true - file: ./.github/deployment/Dockerfile - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - - build-frontend-dev: - name: Build @affine/web dev - runs-on: ubuntu-latest - environment: development - - steps: - - uses: actions/checkout@v3 - - name: Setup Node.js - uses: ./.github/actions/setup-node - - name: Cache Next.js - uses: actions/cache@v3 - with: - path: | - ${{ github.workspace }}/apps/web/.next/cache - key: ${{ runner.os }}-nextjs-dev-${{ hashFiles('**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }} - restore-keys: | - ${{ runner.os }}-nextjs-dev-${{ hashFiles('**/yarn.lock') }}- - - - name: Build - run: yarn build - env: - NEXT_PUBLIC_FIREBASE_API_KEY: ${{ secrets.NEXT_PUBLIC_FIREBASE_API_KEY }} - NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN: ${{ secrets.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN }} - NEXT_PUBLIC_FIREBASE_PROJECT_ID: ${{ secrets.NEXT_PUBLIC_FIREBASE_PROJECT_ID }} - NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET: ${{ secrets.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET }} - NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID: ${{ secrets.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID }} - NEXT_PUBLIC_FIREBASE_APP_ID: ${{ secrets.NEXT_PUBLIC_FIREBASE_APP_ID }} - NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID: ${{ secrets.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID }} - API_SERVER_PROFILE: local - ENABLE_DEBUG_PAGE: true - COVERAGE: true - - - name: Upload artifact - uses: actions/upload-artifact@v3 - with: - name: next-js-dev - path: ./apps/web/.next - if-no-files-found: error - - storybook-test: - name: Storybook Test - runs-on: ubuntu-latest - environment: development - needs: [build-storybook] - steps: - - uses: actions/checkout@v3 - - name: Setup Node.js - uses: ./.github/actions/setup-node - with: - playwright-install: true - - name: Download storybook artifact - uses: actions/download-artifact@v3 - with: - name: storybook - path: ./packages/component/storybook-static - - name: Run storybook tests - working-directory: ./packages/component - run: | - yarn exec concurrently -k -s first -n "SB,TEST" -c "magenta,blue" "yarn exec serve ./storybook-static -l 6006" "yarn exec wait-on tcp:6006 && yarn test-storybook --coverage" - - name: Upload storybook test coverage results - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - files: ./packages/component/coverage/storybook/coverage-storybook.json - flags: storybook-test - name: affine - fail_ci_if_error: true - - server-test: - name: Server Test - runs-on: ubuntu-latest - environment: development - 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 - 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 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: Run server tests - run: yarn test:coverage - working-directory: apps/server - env: - 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: ./apps/server/.coverage/lcov.info - flags: server-test - name: affine - fail_ci_if_error: true - - e2e-test: - name: E2E Test - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - shard: [1, 2, 3, 4] - environment: development - needs: [build-frontend-dev, build-storybook] - services: - octobase: - image: ghcr.io/toeverything/cloud-self-hosted:nightly-latest - ports: - - 3000:3000 - env: - SIGN_KEY: 'test123' - RUST_LOG: 'debug' - JWST_DEV: '1' - credentials: - username: ${{ github.actor }} - password: ${{ secrets.ACTIONS_PACKAGE_PUBLISH }} - - steps: - - uses: actions/checkout@v3 - - name: Setup Node.js - uses: ./.github/actions/setup-node - with: - playwright-install: true - - name: Download artifact - uses: actions/download-artifact@v3 - with: - name: next-js-dev - path: ./apps/web/.next - - - name: Download storybook artifact - uses: actions/download-artifact@v3 - with: - name: storybook - path: ./packages/component/storybook-static - - - name: Wait for Octobase Ready - run: | - node ./scripts/wait-3000-healthz.mjs - - - name: Run playwright tests - run: yarn test --forbid-only --shard=${{ matrix.shard }}/${{ strategy.job-total }} - 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: true - - - name: Upload test results - if: ${{ failure() }} - uses: actions/upload-artifact@v2 - with: - name: test-results-e2e-${{ matrix.shard }} - path: ./test-results - if-no-files-found: ignore - - unit-test: - name: Unit Test - runs-on: ubuntu-latest - environment: development - needs: build-frontend - services: - octobase: - image: ghcr.io/toeverything/cloud-self-hosted:nightly-latest - ports: - - 3000:3000 - env: - SIGN_KEY: 'test123' - RUST_LOG: 'debug' - JWST_DEV: '1' - credentials: - username: ${{ github.actor }} - password: ${{ secrets.ACTIONS_PACKAGE_PUBLISH }} - - steps: - - uses: actions/checkout@v3 - - name: Setup Node.js - uses: ./.github/actions/setup-node - - name: Download artifact - uses: actions/download-artifact@v3 - with: - name: next-js - path: ./apps/web/.next - - - name: Unit Test - run: yarn run test:unit:coverage - - - 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: true diff --git a/.github/workflows/build-test-version.yml b/.github/workflows/build-test-version.yml deleted file mode 100644 index bc8eed4aa9..0000000000 --- a/.github/workflows/build-test-version.yml +++ /dev/null @@ -1,105 +0,0 @@ -name: Build Test Version - -on: - workflow_dispatch: - inputs: - tag: - description: 'Custom Tag. Set nightly-latest will publish to development.' - required: true - type: string - -# Cancels all previous workflow runs for pull requests that have not completed. -# See https://docs.github.com/en/actions/using-jobs/using-concurrency -concurrency: - # The concurrency group contains the workflow name and the branch name for - # pull requests or the commit hash for any other events. - group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} - cancel-in-progress: true - -jobs: - build: - name: Lint and Build - runs-on: self-hosted - environment: development - - steps: - - uses: actions/checkout@v3 - - name: Setup Node.js - uses: ./.github/actions/setup-node - - - name: Lint - run: | - yarn lint --max-warnings=0 - - # - name: Test - # run: yarn test - - - name: Build - run: yarn build - env: - NEXT_PUBLIC_FIREBASE_API_KEY: ${{ secrets.NEXT_PUBLIC_FIREBASE_API_KEY }} - NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN: ${{ secrets.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN }} - NEXT_PUBLIC_FIREBASE_PROJECT_ID: ${{ secrets.NEXT_PUBLIC_FIREBASE_PROJECT_ID }} - NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET: ${{ secrets.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET }} - NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID: ${{ secrets.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID }} - NEXT_PUBLIC_FIREBASE_APP_ID: ${{ secrets.NEXT_PUBLIC_FIREBASE_APP_ID }} - NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID: ${{ secrets.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID }} - - - name: Export - run: yarn export - - - name: Upload artifact - uses: actions/upload-artifact@v3 - with: - path: ./apps/web/out - - push_to_registry: - # See https://docs.github.com/en/actions/publishing-packages/publishing-docker-images - name: Push Docker image to Docker Hub - runs-on: ubuntu-latest - needs: build - - permissions: - contents: read - packages: write - - env: - REGISTRY: ghcr.io - IMAGE_NAME: 'toeverything/affine-pathfinder-testing' - IMAGE_TAG: canary-${{ github.sha }} - IMAGE_TAG_LATEST: nightly-latest - - steps: - - name: Check out the repo - uses: actions/checkout@v3 - - - name: Download artifact - uses: actions/download-artifact@v3 - with: - name: artifact - path: apps/web/out/ - - - name: Log in to Docker Hub - uses: docker/login-action@v2 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@v4 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - tags: | - ${{ env.IMAGE_TAG }} - ${{ inputs.tag }} - - - name: Build and push Docker image - uses: docker/build-push-action@v3 - with: - context: . - push: true - file: ./.github/deployment/Dockerfile - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ef880fbda9..1414209f0f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,6 +1,9 @@ name: Build & Test on: + push: + branches: + - master pull_request: branches: - master