name: Test Master on: push: branches: - master concurrency: group: master cancel-in-progress: true jobs: install-and-build: runs-on: ubuntu-latest timeout-minutes: 30 strategy: matrix: node-version: [18.x, 20.5] steps: - uses: actions/checkout@v3.5.3 - uses: pnpm/action-setup@v2.4.0 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3.7.0 with: node-version: ${{ matrix.node-version }} 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:${{ matrix.node-version }}-test-lint unit-test: name: Unit tests uses: ./.github/workflows/units-tests-reusable.yml needs: install-and-build strategy: matrix: node-version: [18.x, 20.5] with: ref: ${{ inputs.branch }} nodeVersion: ${{ matrix.node-version }} cacheKey: ${{ github.sha }}-base:${{ matrix.node-version }}-test-lint collectCoverage: true lint: name: Lint changes runs-on: ubuntu-latest needs: install-and-build strategy: matrix: node-version: [18.x, 20.5] 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 ${{ matrix.node-version }} uses: actions/setup-node@v3.7.0 with: node-version: ${{ matrix.node-version }} 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:${{ matrix.node-version }}-test-lint - name: Lint env: CI_LINT_MASTER: true run: pnpm lint notify-on-failure: name: Notify Slack on failure runs-on: ubuntu-latest needs: [unit-test, lint] steps: - name: Notify Slack on failure uses: act10ns/slack@v2.0.0 if: failure() with: status: ${{ job.status }} channel: '#alerts-build' webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} message: Master branch (build or test or lint) failed (${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})