diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 91aea18..f38b50b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,39 +1,68 @@ name: CI on: - push: + pull_request: branches: - main - dev - pull_request: permissions: actions: read contents: read jobs: - main: + lint-and-build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: - fetch-depth: 0 - - # This enables task distribution via Nx Cloud - # Run this command as early as possible, before dependencies are installed - # Learn more at https://nx.dev/ci/reference/nx-cloud-cli#npx-nxcloud-startcirun - - run: npx nx-cloud start-ci-run --distribute-on="3 linux-medium-js" --stop-agents-after="e2e-ci" + node-version: '20' + cache: 'npm' + - run: npm ci --legacy-peer-deps + - run: npx nx run-many --target=lint --all + - run: npx nx run-many --target=build --all - # Cache node_modules + test: + runs-on: ubuntu-latest + needs: lint-and-build + steps: + - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 20 + node-version: '20' cache: 'npm' + - run: npm ci --legacy-peer-deps + - run: npx nx run-many --target=test --all + - uses: actions/upload-artifact@v3 + with: + name: test-coverage + path: 'coverage/apps/**' + e2e: + runs-on: ubuntu-latest + needs: lint-and-build + services: + mongodb: + image: mongo:4.4 + ports: + - 27017:27017 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' - run: npm ci --legacy-peer-deps - - uses: nrwl/nx-set-shas@v4 + - name: Install Xvfb + run: sudo apt-get update && sudo apt-get install -y xvfb + - name: Run E2E Tests + run: | + xvfb-run --auto-servernum npx nx run server:serve & + sleep 10 # Give the server some time to start + xvfb-run --auto-servernum npx nx run-many --target=e2e --all + - uses: actions/upload-artifact@v3 + with: + name: e2e-results + path: cypress/videos/** - # Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud - # - run: npx nx-cloud record -- echo Hello World - # Nx Affected runs only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected - - run: npx nx affected -t lint test build e2e-ci