name: TheRock CI for rccl on: schedule: - cron: '17 6 * * 0' # Weekly, Sunday 06:17 UTC workflow_dispatch: inputs: artifact_run_id: description: 'Reuse artifacts from a previous run ID (skips build)' type: string default: '' test_scope: description: 'smoke (22 curated tests, ~3min) or all' type: string default: 'smoke' notify_email: description: 'Email address to send test summary report' type: string default: 'collectives-ci@amd.com' notify_webhook: description: 'Teams webhook URL for test summary notifications' type: string default: '' permissions: contents: read concurrency: # A PR number if a pull request and otherwise the commit hash. This cancels # queued and in-progress runs for the same PR (presubmit) or commit # (postsubmit). The workflow name is prepended to avoid conflicts between # different workflows. group: ${{ github.workflow }}-${{ github.event.number || github.sha }} cancel-in-progress: true jobs: setup: runs-on: ubuntu-24.04 outputs: run_linux_ci: ${{ steps.rccl_check.outputs.run_linux_ci }} steps: - name: "Checking out repository" uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: # We need the parent commit to do a diff fetch-depth: 2 - name: "Detect RCCL file changes" id: rccl_check shell: bash run: | echo "Changed files:" git diff --name-only HEAD^ # Scheduled and manual runs always execute the full CI pipeline. # PR/push runs only trigger CI when files under projects/rccl/ # have changed, to avoid burning GPU runner time on unrelated commits. if [ "${{ github.event_name }}" = "schedule" ] || [ "${{ github.event_name }}" = "workflow_dispatch" ]; then echo "run_linux_ci=true" >> "$GITHUB_OUTPUT" echo "Scheduled/manual run — always run CI" elif git diff --name-only HEAD^ | grep -q '^projects/rccl/'; then echo "run_linux_ci=true" >> "$GITHUB_OUTPUT" echo "RCCL changes detected" else echo "run_linux_ci=false" >> "$GITHUB_OUTPUT" echo "No RCCL changes detected" fi therock-ci-linux: name: TheRock CI Linux needs: setup if: ${{ needs.setup.outputs.run_linux_ci == 'true' }} permissions: contents: read id-token: write strategy: fail-fast: false matrix: amdgpu_family: [gfx94X-dcgpu, gfx950-dcgpu] uses: ./.github/workflows/therock-rccl-ci-linux.yml secrets: inherit with: amdgpu_families: ${{ matrix.amdgpu_family }} artifact_group: ${{ matrix.amdgpu_family }} event_name: ${{ github.event_name }} package_version: ADHOCBUILD artifact_run_id: ${{ inputs.artifact_run_id }} test_scope: ${{ inputs.test_scope || 'smoke' }} notify_email: ${{ inputs.notify_email || 'collectives-ci@amd.com' }} notify_webhook: ${{ inputs.notify_webhook }} cmake_options: > -DTHEROCK_ENABLE_ALL=OFF -DTHEROCK_BUILD_TESTING=ON -DTHEROCK_BUNDLE_SYSDEPS=ON -DTHEROCK_ENABLE_COMM_LIBS=ON -DTHEROCK_ENABLE_ROCPROFV3=ON -DTHEROCK_ENABLE_MPI=ON therock_ci_summary: name: TheRock CI Summary if: always() needs: - setup - therock-ci-linux runs-on: ubuntu-24.04 steps: - name: Output failed jobs run: | echo '${{ toJson(needs) }}' FAILED_JOBS="$(echo '${{ toJson(needs) }}' \ | jq --raw-output \ 'map_values(select(.result!="success" and .result!="skipped")) | keys | join(",")' \ )" if [[ "${FAILED_JOBS}" != "" ]]; then echo "The following jobs failed: ${FAILED_JOBS}" exit 1 fi