nx/docs/shared/monorepo-ci-gitlab.md

1.2 KiB

title description
Configuring CI Using GitLab and Nx Learn how to set up GitLab CI for your Nx workspace with examples of YAML configuration for building and testing affected projects efficiently.

Configuring CI Using GitLab and Nx

Below is an example of a GitLab setup, building and testing only what is affected.

image: node:20

variables:
  GIT_DEPTH: 0

main:
  interruptible: true
  only:
    - main
    - merge_requests
  cache:
    key:
      files:
        - package-lock.json
    paths:
      - .npm/
  script:
    # Connect your workspace on <%= nxCloudHost %> and uncomment this to enable task distribution.
    # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e-ci" targets have been requested
    # - npx nx-cloud start-ci-run --distribute-on="3 linux-medium-js" --stop-agents-after="e2e-ci"

    - npm ci --cache .npm --prefer-offline
    - NX_HEAD=$CI_COMMIT_SHA
    - NX_BASE=${CI_MERGE_REQUEST_DIFF_BASE_SHA:-$CI_COMMIT_BEFORE_SHA}

    - npx nx-cloud record -- nx format:check --base=$NX_BASE --head=$NX_HEAD
    - npx nx affected --base=$NX_BASE --head=$NX_HEAD -t lint test build e2e-ci