name: 'CI: Master (Build, Test, Lint)' on: push: branches: - master - 1.x paths-ignore: - packages/@n8n/task-runner-python/** jobs: build-github: name: Build for Github Cache runs-on: ubuntu-latest env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} QA_METRICS_WEBHOOK_URL: ${{ secrets.QA_METRICS_WEBHOOK_URL }} QA_METRICS_WEBHOOK_USER: ${{ secrets.QA_METRICS_WEBHOOK_USER }} QA_METRICS_WEBHOOK_PASSWORD: ${{ secrets.QA_METRICS_WEBHOOK_PASSWORD }} steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Setup and Build uses: ./.github/actions/setup-nodejs unit-test: name: Unit tests uses: ./.github/workflows/test-unit-reusable.yml strategy: fail-fast: false matrix: node-version: [22.x, 24.14.1, 25.x] with: ref: ${{ github.sha }} nodeVersion: ${{ matrix.node-version }} collectCoverage: ${{ matrix.node-version == '24.14.1' }} secrets: inherit lint: name: Lint uses: ./.github/workflows/test-linting-reusable.yml with: ref: ${{ github.sha }} performance: name: Performance uses: ./.github/workflows/test-bench-reusable.yml with: ref: ${{ github.sha }} notify-on-failure: name: Notify Slack on failure runs-on: ubuntu-latest needs: [unit-test, lint, performance, build-github] steps: - name: Notify Slack on failure uses: act10ns/slack@44541246747a30eb3102d87f7a4cc5471b0ffb7d # v2.1.0 if: failure() with: status: ${{ job.status }} channel: '#alerts-build' webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} message: ${{ github.ref_name }} branch (build or test or lint) failed (${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})