# Master Merge Queue Test Suite # # This workflow orchestrates a collection of workflows that are required for the merge queue check. # # Most of the workflows that are jobs within this one, are able to be run on demand # by issuing a PR comment with the respective command to trigger said workflow. # # The design of this workflow relies on the first real job "changes" to detect file # changes against the base, and each downstream workflow after that will only be # called if the files for that area have changed. # name: Master Merge Queue Test Suite on: # Only want to run this on merge queue, but because GH doesn't allow specifying different required checks # for pull request and merge queue, we need to "run" it in pull request, but in the jobs we will just auto pass. pull_request: merge_group: types: [checks_requested] permissions: contents: read concurrency: # `github.ref` is unique for MQ runs and PRs group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: CONTAINER_TOOL: "docker" DD_ENV: "ci" DD_API_KEY: ${{ secrets.DD_API_KEY }} RUST_BACKTRACE: full VECTOR_LOG: vector=debug VERBOSE: true CI: true PROFILE: debug jobs: # This is the entry job which is required for all the actual tests in this workflow. # If we don't run this job (such as in a pull request), then by consequence all downstream # test jobs are not run. This allows us to not have to check for merge group in each job. changes: if: ${{ github.event_name == 'merge_group' }} uses: ./.github/workflows/changes.yml secrets: inherit test-cli: if: ${{ needs.changes.outputs.source == 'true' || needs.changes.outputs.test-make-command-yml == 'true' }} uses: ./.github/workflows/test-make-command.yml with: command: test-cli job_name: CLI tests cargo_nextest: true upload_test_results: true needs: changes secrets: inherit test-vector-api: if: ${{ needs.changes.outputs.source == 'true' || needs.changes.outputs.test-make-command-yml == 'true' }} uses: ./.github/workflows/test-make-command.yml with: command: test-vector-api job_name: make test-vector-api cargo_nextest: true upload_test_results: true needs: changes secrets: inherit make-test-behavior: if: ${{ needs.changes.outputs.source == 'true' || needs.changes.outputs.test-make-command-yml == 'true' }} uses: ./.github/workflows/test-make-command.yml with: command: test-behavior job_name: make test-behavior needs: changes secrets: inherit make-check-examples: if: ${{ needs.changes.outputs.source == 'true' || needs.changes.outputs.test-make-command-yml == 'true' }} uses: ./.github/workflows/test-make-command.yml with: command: check-examples job_name: make check-examples needs: changes secrets: inherit make-test-docs: if: ${{ needs.changes.outputs.source == 'true' || needs.changes.outputs.test-make-command-yml == 'true' }} uses: ./.github/workflows/test-make-command.yml with: command: test-docs job_name: make test-docs needs: changes secrets: inherit check-msrv: if: ${{ needs.changes.outputs.source == 'true' || needs.changes.outputs.msrv-yml == 'true' }} uses: ./.github/workflows/msrv.yml needs: changes secrets: inherit cross-linux: # We run cross checks when dependencies change to ensure they still build. # This helps us avoid adopting dependencies that aren't compatible with other architectures. if: ${{ needs.changes.outputs.dependencies == 'true' || needs.changes.outputs.cross-yml == 'true' }} uses: ./.github/workflows/cross.yml needs: changes secrets: inherit unit-mac: if: ${{ needs.changes.outputs.source == 'true' || needs.changes.outputs.unit_mac-yml == 'true' }} uses: ./.github/workflows/unit_mac.yml needs: changes secrets: inherit unit-windows: if: ${{ needs.changes.outputs.source == 'true' || needs.changes.outputs.unit_windows-yml == 'true' }} uses: ./.github/workflows/unit_windows.yml needs: changes secrets: inherit install-sh: if: needs.changes.outputs.install == 'true' uses: ./.github/workflows/install-sh.yml needs: changes secrets: inherit master-merge-queue-check: permissions: statuses: write name: Master Merge Queue Suite # Always run this so that pull_request triggers are marked as success. if: always() runs-on: ubuntu-24.04 timeout-minutes: 5 needs: - changes - test-cli - test-vector-api - make-test-behavior - make-check-examples - make-test-docs - check-msrv - cross-linux - unit-mac - unit-windows - install-sh steps: - name: Check all jobs status run: | if [[ "${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}" == "true" ]]; then echo "One or more jobs failed or were cancelled" exit 1 else echo "All jobs completed successfully" fi