name: Build, unit/smoke test and lint branch on: [pull_request] jobs: install: name: Install & Build runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: repository: n8n-io/n8n ref: ${{ inputs.branch }} - uses: pnpm/action-setup@v2.2.4 - name: Use Node.js 16 uses: actions/setup-node@v3 with: node-version: 16.x cache: pnpm - name: Install dependencies run: pnpm install --frozen-lockfile - name: Build run: pnpm build - name: Cache build artifacts uses: actions/cache@v3 with: path: | /github/home/.cache /github/home/.pnpm-store ./node_modules ./packages key: ${{ github.sha }}-base:16.18.1-test-lint unit-test: name: Unit tests runs-on: ubuntu-latest needs: install steps: - uses: actions/checkout@v3 with: repository: n8n-io/n8n ref: ${{ inputs.branch }} - name: Restore cached build artifacts uses: actions/cache@v3 with: path: | /github/home/.cache /github/home/.pnpm-store ./node_modules ./packages key: ${{ github.sha }}-base:16.18.1-test-lint - uses: pnpm/action-setup@v2.2.4 - name: Use Node.js 16 uses: actions/setup-node@v3 with: node-version: 16.x cache: pnpm - name: Test run: pnpm test lint: name: Lint changes runs-on: ubuntu-latest needs: install steps: - uses: actions/checkout@v3 with: repository: n8n-io/n8n ref: ${{ inputs.branch }} - name: Restore cached build artifacts uses: actions/cache@v3 with: path: | /github/home/.cache /github/home/.pnpm-store ./node_modules ./packages key: ${{ github.sha }}-base:16.18.1-test-lint - uses: pnpm/action-setup@v2.2.4 - name: Use Node.js 16 uses: actions/setup-node@v3 with: node-version: 16.x cache: pnpm - 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 smoke-test: name: E2E [Electron/Node 16] uses: ./.github/workflows/e2e-reusable.yml if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-e2e') }} with: branch: ${{ github.event.pull_request.base.ref }} user: ${{ github.event.inputs.user || 'PR User' }} spec: ${{ github.event.inputs.spec || 'e2e/0-smoke.cy.ts' }} run-env: base:16.18.1 record: false parallel: false containers: '[1]' secrets: CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} checklist_job: runs-on: ubuntu-latest name: Checklist job steps: - name: Checkout uses: actions/checkout@v1 - name: Checklist uses: wyozi/contextual-qa-checklist-action@master with: gh-token: ${{ secrets.GITHUB_TOKEN }} comment-footer: Make sure to check off this list before asking for review.