name: Build, unit test and lint branch on: [pull_request] jobs: install: name: Install & Build runs-on: ubuntu-latest steps: - uses: actions/checkout@v3.5.3 with: repository: n8n-io/n8n ref: ${{ inputs.branch }} - uses: pnpm/action-setup@v2.4.0 - name: Use Node.js 18 uses: actions/setup-node@v3.7.0 with: node-version: 18.x cache: pnpm - name: Install dependencies run: pnpm install --frozen-lockfile - name: Build run: pnpm build - name: Cache build artifacts uses: actions/cache/save@v3.3.1 with: path: ./packages/**/dist key: ${{ github.sha }}-base:18-test-lint unit-test: name: Unit tests runs-on: ubuntu-latest needs: install steps: - uses: actions/checkout@v3.5.3 with: repository: n8n-io/n8n ref: ${{ inputs.branch }} - uses: pnpm/action-setup@v2.4.0 - name: Use Node.js 18 uses: actions/setup-node@v3.7.0 with: node-version: 18.x cache: pnpm - name: Install dependencies run: pnpm install --frozen-lockfile - name: Restore cached build artifacts uses: actions/cache/restore@v3.3.1 with: path: ./packages/**/dist key: ${{ github.sha }}-base:18-test-lint - name: Test run: pnpm test - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 with: files: packages/@n8n/client-oauth2/coverage/cobertura-coverage.xml,packages/cli/coverage/cobertura-coverage.xml,packages/core/coverage/cobertura-coverage.xml,packages/design-system/coverage/cobertura-coverage.xml,packages/editor-ui/coverage/cobertura-coverage.xml,packages/nodes-base/coverage/cobertura-coverage.xml,packages/workflow/coverage/cobertura-coverage.xml lint: name: Lint changes runs-on: ubuntu-latest needs: install steps: - uses: actions/checkout@v3.5.3 with: repository: n8n-io/n8n ref: ${{ inputs.branch }} - uses: pnpm/action-setup@v2.4.0 - name: Use Node.js 18 uses: actions/setup-node@v3.7.0 with: node-version: 18.x cache: pnpm - name: Install dependencies run: pnpm install --frozen-lockfile - name: Restore cached build artifacts uses: actions/cache/restore@v3.3.1 with: path: ./packages/**/dist key: ${{ github.sha }}-base:18-test-lint - name: Fetch base branch for `git diff` run: git fetch origin ${{ github.event.pull_request.base.ref }}:${{ github.event.pull_request.base.ref }} - name: Run ESLint on changes only env: ESLINT_PLUGIN_DIFF_COMMIT: ${{ github.event.pull_request.base.ref }} run: pnpm lint