diff --git a/.github/workflows/therock-ci.yml b/.github/workflows/therock-ci.yml new file mode 100644 index 00000000000..fd1c38422da --- /dev/null +++ b/.github/workflows/therock-ci.yml @@ -0,0 +1,109 @@ +name: TheRock CI + +on: + pull_request: + types: + - opened + - synchronize + - reopened + - ready_for_review + paths-ignore: + - "docs/**" + - "*.md" + +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: + name: "Setup" + runs-on: ubuntu-24.04 + outputs: + jobs: ${{ steps.jobs.outputs.jobs }} + steps: + # Checkout the mono-repo which includes the PR. + - name: Checkout rocm-libraries Repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + path: rocm-libraries + + - name: Checkout TheRock Repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + repository: "ROCm/TheRock" + path: "TheRock" + ref: a742718b33993332131863885a621fceef6f9b48 + + - name: Generate a token + id: generate-token + uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6 + with: + app-id: ${{ secrets.APP_ID }} + private-key: ${{ secrets.APP_PRIVATE_KEY }} + owner: ${{ github.repository_owner }} + + - name: Set up Python + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 + with: + python-version: "3.12" + + - name: Install python dependencies + run: | + python -m pip install --upgrade pip + pip install pydantic requests + + # # For our "rocPRIM" MVP, there are no patches to apply. This will be un-commented and used later! + # - name: Patch monorepo + # run: | + # python TheRock/build_tools/github_actions/patch_monorepo.py \ + # --repo rocm-libraries + + - name: Detect changed subtrees + id: detect + if: github.event_name == 'pull_request' + env: + GH_TOKEN: ${{ steps.generate-token.outputs.token }} + run: | + python rocm-libraries/.github/scripts/pr_detect_changed_subtrees.py \ + --repo "${{ github.repository }}" \ + --pr "${{ github.event.pull_request.number }}" \ + --config "rocm-libraries/.github/repos-config.json" + + - name: Determine jobs to run + id: jobs + if: steps.detect.outputs.subtrees + env: + SUBTREES: ${{ steps.detect.outputs.subtrees }} + run: | + python ./TheRock/build_tools/github_actions/monorepo_configure_ci.py + + therock-build-linux: + name: Build Linux Packages + needs: setup + if: ${{ needs.setup.outputs.jobs }} + permissions: + contents: read + id-token: write + uses: ROCm/TheRock/.github/workflows/build_linux_packages.yml@a742718b33993332131863885a621fceef6f9b48 + with: + amdgpu_families: "gfx94X-dcgpu" + expect_failure: false + extra_cmake_options: "-DTHEROCK_USE_EXTERNAL_ROCM_LIBRARIES=ON -DTHEROCK_ROCM_LIBRARIES_SOURCE_DIR=rocm-libraries -DTHEROCK_ENABLE_PRIM=ON -DTHEROCK_ENABLE_ALL=OFF" + + therock-test-linux: + name: "rocPRIM math-lib test" + needs: therock-build-linux + uses: ROCm/TheRock/.github/workflows/test_rocprim.yml@a742718b33993332131863885a621fceef6f9b48 + with: + artifact_run_id: "${{ github.run_id }}" + amdgpu_families: "gfx94X-dcgpu" + test_runs_on: "linux-mi300-1gpu-ossci-rocm" + platform: "linux"