mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2024-11-29 06:54:25 -05:00
d66ab3a8e1
something in our CI setup lets turbo believe that the environment has changed so much that the build can't be restored from the cache. Therefore all the cypress jobs are rebuilding the frontend on their own. It probably has something to do with the fact that the cypress jobs are not running with the ubuntu image but with the cypress docker image. I couldn't find out how to fix this, so I changed the CI to use a GitHub actions artifact. Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
206 lines
6.5 KiB
YAML
206 lines
6.5 KiB
YAML
# SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
|
|
#
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
name: E2E Tests
|
|
|
|
on:
|
|
push:
|
|
branches: [ develop ]
|
|
pull_request_target:
|
|
branches: [ develop ]
|
|
pull_request:
|
|
branches: [ develop ]
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ !!github.event.pull_request && github.event.pull_request.head.label || github.ref }}-${{ github.event_name }}-${{ github.job }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
NODEJS_VERSION: 18
|
|
HEAD_COMMIT_HASH: "${{ !!github.event.pull_request && github.event.pull_request.head.sha || github.sha }}"
|
|
|
|
jobs:
|
|
backend-sqlite: # This run also collects coverage
|
|
if: "(github.event_name == 'pull_request_target') == github.event.pull_request.head.repo.fork"
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Setup node
|
|
uses: ./.github/actions/setup-node
|
|
with:
|
|
NODEJS_VERSION: ${{ env.NODEJS_VERSION }}
|
|
|
|
- name: Run e2e tests
|
|
run: yarn turbo run test:e2e:ci --filter=backend
|
|
shell: bash
|
|
env:
|
|
HEDGEDOC_TEST_DB_TYPE: sqlite
|
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
|
TURBO_API: ${{ vars.TURBO_API }}
|
|
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
|
|
|
|
- name: Upload coverage
|
|
uses: codecov/codecov-action@40a12dcee2df644d47232dde008099a3e9e4f865 # v3.1.2
|
|
with:
|
|
directory: backend/coverage-e2e
|
|
flags: e2e-tests
|
|
|
|
backend-mariadb:
|
|
if: "(github.event_name == 'pull_request_target') == github.event.pull_request.head.repo.fork"
|
|
runs-on: ubuntu-latest
|
|
services:
|
|
mariadb:
|
|
image: mariadb
|
|
env:
|
|
MYSQL_USER: hedgedoc
|
|
MYSQL_PASSWORD: hedgedoc
|
|
MYSQL_DATABASE: hedgedoc
|
|
MYSQL_ROOT_PASSWORD: hedgedoc
|
|
options: --health-cmd "mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 5
|
|
ports:
|
|
- 3306:3306
|
|
steps:
|
|
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Setup node
|
|
uses: ./.github/actions/setup-node
|
|
with:
|
|
NODEJS_VERSION: ${{ env.NODEJS_VERSION }}
|
|
|
|
- name: Run e2e tests
|
|
run: yarn turbo run test:e2e:ci --filter=backend
|
|
shell: bash
|
|
env:
|
|
HEDGEDOC_TEST_DB_TYPE: mariadb
|
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
|
TURBO_API: ${{ vars.TURBO_API }}
|
|
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
|
|
|
|
backend-postgres:
|
|
if: "(github.event_name == 'pull_request_target') == github.event.pull_request.head.repo.fork"
|
|
runs-on: ubuntu-latest
|
|
services:
|
|
postgres:
|
|
image: postgres
|
|
env:
|
|
POSTGRES_PASSWORD: hedgedoc
|
|
POSTGRES_USER: hedgedoc
|
|
options: --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5
|
|
ports:
|
|
- 5432:5432
|
|
steps:
|
|
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Setup node
|
|
uses: ./.github/actions/setup-node
|
|
with:
|
|
NODEJS_VERSION: ${{ env.NODEJS_VERSION }}
|
|
|
|
- name: Run e2e tests
|
|
run: yarn turbo run test:e2e:ci --filter=backend
|
|
shell: bash
|
|
env:
|
|
HEDGEDOC_TEST_DB_TYPE: postgres
|
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
|
TURBO_API: ${{ vars.TURBO_API }}
|
|
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
|
|
|
|
frontend-build:
|
|
if: "(github.event_name == 'pull_request_target') == github.event.pull_request.head.repo.fork"
|
|
runs-on: ubuntu-latest
|
|
name: Build test build of frontend
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
|
with:
|
|
ref: ${{ env.HEAD_COMMIT_HASH }}
|
|
|
|
- name: Setup node
|
|
uses: ./.github/actions/setup-node
|
|
with:
|
|
NODEJS_VERSION: ${{ env.NODEJS_VERSION }}
|
|
|
|
- name: Build test production build
|
|
run: yarn turbo run build:test --filter=frontend
|
|
shell: bash
|
|
env:
|
|
NODEJS_VERSION: ${{ env.NODEJS_VERSION }}
|
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
|
TURBO_API: ${{ vars.TURBO_API }}
|
|
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
|
|
|
|
- name: Compress build
|
|
run: tar --exclude='frontend/.next/cache' --exclude='frontend/.next/standalone' --zstd -cf frontend-e2e-build.tar.zst frontend/.next/
|
|
|
|
- name: Upload build artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: frontend-e2e-build
|
|
retention-days: 1
|
|
path: frontend-e2e-build.tar.zst
|
|
|
|
frontend-cypress:
|
|
if: "(github.event_name == 'pull_request_target') == github.event.pull_request.head.repo.fork"
|
|
needs: frontend-build
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: cypress/browsers:node-18.14.1-chrome-111.0.5563.64-1-ff-111.0-edge-111.0.1661.43-1
|
|
options: --shm-size=2g
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
containers: [ 1, 2, 3 ]
|
|
steps:
|
|
- name: Install jq and zstd
|
|
run: apt-get update && apt-get install -y jq zstd
|
|
|
|
- name: Check out repo
|
|
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
|
with:
|
|
ref: ${{ env.HEAD_COMMIT_HASH }}
|
|
|
|
- name: Setup node
|
|
uses: ./.github/actions/setup-node
|
|
with:
|
|
NODEJS_VERSION: ${{ env.NODEJS_VERSION }}
|
|
|
|
- name: Download build
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: frontend-e2e-build
|
|
|
|
- name: Decompress build
|
|
run: tar -xf frontend-e2e-build.tar.zst
|
|
|
|
- name: Run server
|
|
working-directory: frontend/
|
|
run: yarn start:ci &
|
|
env:
|
|
NODE_ENV: test
|
|
|
|
- name: Wait for server
|
|
run: "sleep 3 && curl --max-time 120 http://127.0.0.1:3001/"
|
|
|
|
- name: Run cypress
|
|
run: yarn turbo run test:e2e:ci --filter=frontend
|
|
shell: bash
|
|
env:
|
|
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
|
TURBO_API: ${{ vars.TURBO_API }}
|
|
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
|
|
CYPRESS_CONTAINER_ID: ${{ matrix.containers }}
|
|
|
|
- uses: actions/upload-artifact@65d862660abb392b8c4a3d1195a2108db131dd05 # master
|
|
with:
|
|
name: screenshots
|
|
path: cypress/screenshots
|