From 30c74c10c4fdcf1d3338339820e65a456ffb0385 Mon Sep 17 00:00:00 2001 From: amd-jmacaran Date: Wed, 16 Jul 2025 11:55:53 -0400 Subject: [PATCH] Replace instances of rocm-libraries with rocm-systems in workflows --- .github/scripts/pr_category_label.py | 4 +- .github/scripts/pr_detect_changed_subtrees.py | 2 +- .github/scripts/pr_merge_sync_patches.py | 4 +- .github/scripts/therock_configure_ci.py | 30 +++--- .github/workflows/azure-ci-dispatcher.yml | 34 +++--- .github/workflows/initial-setup.yml | 2 +- .github/workflows/therock-ci-linux.yml | 8 +- .github/workflows/therock-ci-windows.yml | 6 +- .github/workflows/therock-ci.yml | 2 +- .../update-release-staging-subtree.yml | 2 +- .github/workflows/update-subtrees.yml | 2 +- README.md | 2 +- docs/continuous-integration.md | 2 +- ...ick-monorepo-changes-to-release-staging.md | 30 +++--- docs/migration-process.md | 102 +++++++++--------- 15 files changed, 116 insertions(+), 116 deletions(-) diff --git a/.github/scripts/pr_category_label.py b/.github/scripts/pr_category_label.py index 827ab6056f..228bef8cc7 100644 --- a/.github/scripts/pr_category_label.py +++ b/.github/scripts/pr_category_label.py @@ -22,9 +22,9 @@ Outputs: Example Usage: To run in debug mode and perform a dry-run (no changes made): - python pr_auto_label.py --repo ROCm/rocm-libraries --pr --dry-run --debug + python pr_auto_label.py --repo ROCm/rocm-systems --pr --dry-run --debug To run in debug mode and apply label changes: - python pr_auto_label.py --repo ROCm/rocm-libraries --pr --debug + python pr_auto_label.py --repo ROCm/rocm-systems --pr --debug """ import argparse diff --git a/.github/scripts/pr_detect_changed_subtrees.py b/.github/scripts/pr_detect_changed_subtrees.py index 8570843dc9..aaafe8d6cc 100644 --- a/.github/scripts/pr_detect_changed_subtrees.py +++ b/.github/scripts/pr_detect_changed_subtrees.py @@ -28,7 +28,7 @@ Outputs: Example Usage: To run in auto-push situations in debug mode and perform a dry-run (no changes made): - python pr_detect_changed_subtrees.py --repo ROCm/rocm-libraries --pr 123 --require-auto-push --debug --dry-run + python pr_detect_changed_subtrees.py --repo ROCm/rocm-systems --pr 123 --require-auto-push --debug --dry-run """ import argparse diff --git a/.github/scripts/pr_merge_sync_patches.py b/.github/scripts/pr_merge_sync_patches.py index a124a6aae2..e3845f1d2c 100644 --- a/.github/scripts/pr_merge_sync_patches.py +++ b/.github/scripts/pr_merge_sync_patches.py @@ -23,7 +23,7 @@ Arguments: --debug : If set, enables detailed debug logging. Example Usage: - python pr_merge_sync_patches.py --repo ROCm/rocm-libraries --pr 123 --subtrees "$(printf 'projects/rocBLAS\nprojects/hipBLASLt\nshared/rocSPARSE')" --dry-run --debug + python pr_merge_sync_patches.py --repo ROCm/rocm-systems --pr 123 --subtrees "$(printf 'projects/rocBLAS\nprojects/hipBLASLt\nshared/rocSPARSE')" --dry-run --debug """ import argparse @@ -256,7 +256,7 @@ def apply_patches_and_squash(entry: RepoEntry, monorepo_url: str, monorepo_pr: i _apply_patch(subrepo_path, patch_path, Path(rel_path), Path.cwd(), prefix) # Final squash - commit_msg = f"[rocm-libraries] {monorepo_url}#{monorepo_pr} (commit {merge_sha[:7]})\n\n" + \ + commit_msg = f"[rocm-systems] {monorepo_url}#{monorepo_pr} (commit {merge_sha[:7]})\n\n" + \ _run_git(["log", "-1", "--pretty=%B", merge_sha]) _run_git(["reset", "--soft", base_commit], cwd=subrepo_path) _run_git(["commit", "-m", commit_msg, "--author", f"{author_name} <{author_email}>"], cwd=subrepo_path) diff --git a/.github/scripts/therock_configure_ci.py b/.github/scripts/therock_configure_ci.py index b6a77ec69d..2ad261ab27 100644 --- a/.github/scripts/therock_configure_ci.py +++ b/.github/scripts/therock_configure_ci.py @@ -24,40 +24,40 @@ def set_github_output(d: Mapping[str, str]): return with open(step_output_file, "a") as f: f.writelines(f"{k}={v}" + "\n" for k, v in d.items()) - - + + def retrieve_projects(args): # TODO(geomin12): #590 Enable TheRock CI for forked PRs if args.get("is_forked_pr"): - logging.info("Warning: not enabling any projects due to is_forked_pr. Builds/tests for forked PRs are disabled pending: https://github.com/ROCm/rocm-libraries/issues/590") + logging.info("Warning: not enabling any projects due to is_forked_pr. Builds/tests for forked PRs are disabled pending: https://github.com/ROCm/rocm-systems/issues/590") return [] - + if args.get("is_pull_request"): subtrees = args.get("input_subtrees").split("\n") - + if args.get("is_workflow_dispatch"): if args.get("input_projects") == "all": subtrees = list(subtree_to_project_map.keys()) else: subtrees = args.get("input_projects").split() - + # If a push event to develop happens, we run tests on all subtrees if args.get("is_push"): subtrees = list(subtree_to_project_map.keys()) - + projects = set() # collect the associated subtree to project for subtree in subtrees: if subtree in subtree_to_project_map: projects.add(subtree_to_project_map.get(subtree)) - - - # retrieve the subtrees to checkout, cmake options to build, and projects to test + + + # retrieve the subtrees to checkout, cmake options to build, and projects to test project_to_run = [] for project in projects: if project in project_map: project_to_run.append(project_map.get(project)) - + return project_to_run @@ -72,16 +72,16 @@ if __name__ == "__main__": args["is_pull_request"] = github_event_name == "pull_request" args["is_push"] = github_event_name == "push" args["is_workflow_dispatch"] = github_event_name == "workflow_dispatch" - + is_forked_pr = os.getenv("IS_FORKED_PR") args["is_forked_pr"] = is_forked_pr == "true" - + input_subtrees = os.getenv("SUBTREES", "") args["input_subtrees"] = input_subtrees - + input_projects = os.getenv("PROJECTS", "") args["input_projects"] = input_projects - + logging.info(f"Retrieved arguments {args}") run(args) diff --git a/.github/workflows/azure-ci-dispatcher.yml b/.github/workflows/azure-ci-dispatcher.yml index a6014f21dd..b4d68246dd 100644 --- a/.github/workflows/azure-ci-dispatcher.yml +++ b/.github/workflows/azure-ci-dispatcher.yml @@ -34,7 +34,7 @@ concurrency: jobs: dispatch-azure-ci: name: Trigger Azure CI - if: github.repository == 'ROCm/rocm-libraries' + if: github.repository == 'ROCm/rocm-systems' runs-on: ubuntu-latest steps: - name: Generate a token @@ -45,13 +45,13 @@ jobs: private-key: ${{ secrets.APP_PRIVATE_KEY }} owner: ${{ github.repository_owner }} repositories: | - rocm-libraries + rocm-systems - name: Wait until refs/pull/${{ github.event.pull_request.number }}/merge exists run: | merge_ref="refs/pull/${{ github.event.pull_request.number }}/merge" check_merge_ref() { - git ls-remote "https://github.com/ROCm/rocm-libraries" "$merge_ref" | grep -q "$merge_ref" + git ls-remote "https://github.com/ROCm/rocm-systems" "$merge_ref" | grep -q "$merge_ref" } max_attempts=10 @@ -103,7 +103,7 @@ jobs: if: steps.detect.outputs.subtrees run: | pr_number=${{ github.event.pull_request.number }} - pr_filter_query="branchName=refs/pull/$pr_number/merge&repositoryType=GitHub&repositoryId=ROCm/rocm-libraries&api-version=7.1" + pr_filter_query="branchName=refs/pull/$pr_number/merge&repositoryType=GitHub&repositoryId=ROCm/rocm-systems&api-version=7.1" res=$(curl -sSX GET "https://dev.azure.com/ROCm-CI/ROCm-CI/_apis/build/builds?$pr_filter_query" \ -H "Content-Type: application/json") @@ -111,12 +111,12 @@ jobs: runs=$(echo "$res" | jq -r ".value[] | select(.status == \"inProgress\" or .status == \"notStarted\") | .id") if [ -z "$runs" ]; then - echo "No in-progress/not-started runs found for ROCm/rocm-libraries PR #$pr_number" + echo "No in-progress/not-started runs found for ROCm/rocm-systems PR #$pr_number" echo "status=false" >> $GITHUB_OUTPUT exit 0 fi - echo "Found in-progress/not-started runs for ROCm/rocm-libraries PR #$pr_number: $runs" + echo "Found in-progress/not-started runs for ROCm/rocm-systems PR #$pr_number: $runs" echo "status=true" >> $GITHUB_OUTPUT for run_id in $runs; do @@ -139,8 +139,8 @@ jobs: if: steps.detect.outputs.subtrees && steps.cancel-in-progress.outputs.status == 'false' run: | pr_number=${{ github.event.pull_request.number }} - pr_merge_sha=$(curl -sSX GET "https://api.github.com/repos/ROCm/rocm-libraries/git/ref/pull/${pr_number}/merge" | jq -r '.object.sha') - pr_filter_query="branchName=refs/pull/$pr_number/merge&repositoryType=GitHub&repositoryId=ROCm/rocm-libraries&api-version=7.1" + pr_merge_sha=$(curl -sSX GET "https://api.github.com/repos/ROCm/rocm-systems/git/ref/pull/${pr_number}/merge" | jq -r '.object.sha') + pr_filter_query="branchName=refs/pull/$pr_number/merge&repositoryType=GitHub&repositoryId=ROCm/rocm-systems&api-version=7.1" res=$(curl -sSX GET "https://dev.azure.com/ROCm-CI/ROCm-CI/_apis/build/builds?$pr_filter_query" \ -H "Content-Type: application/json") @@ -160,13 +160,13 @@ jobs: success_project_names=$(echo "$success_runs_info" | jq -r '.name') if [ -z "$failed_run_ids" ]; then - echo "No failed/cancelled runs found for ROCm/rocm-libraries PR #$pr_number at merge commit $pr_merge_sha" + echo "No failed/cancelled runs found for ROCm/rocm-systems PR #$pr_number at merge commit $pr_merge_sha" echo "status=false" >> $GITHUB_OUTPUT exit 0 fi - echo "Found failed/cancelled runs for ROCm/rocm-libraries PR #$pr_number at merge commit $pr_merge_sha: ${failed_run_ids[*]}" - echo "Found successful runs for ROCm/rocm-libraries PR #$pr_number at merge commit $pr_merge_sha: ${success_run_ids[*]}" + echo "Found failed/cancelled runs for ROCm/rocm-systems PR #$pr_number at merge commit $pr_merge_sha: ${failed_run_ids[*]}" + echo "Found successful runs for ROCm/rocm-systems PR #$pr_number at merge commit $pr_merge_sha: ${success_run_ids[*]}" echo "status=true" >> $GITHUB_OUTPUT new_run_ids=() @@ -278,13 +278,13 @@ jobs: pr_number=${{ github.event.pull_request.number }} pr_head_sha=${{ github.event.pull_request.head.sha }} - pr_merge_sha=$(curl -sSX GET "https://api.github.com/repos/ROCm/rocm-libraries/git/ref/pull/${pr_number}/merge" | jq -r '.object.sha') + pr_merge_sha=$(curl -sSX GET "https://api.github.com/repos/ROCm/rocm-systems/git/ref/pull/${pr_number}/merge" | jq -r '.object.sha') newline=$'\n' summary="PR: [${{ github.event.pull_request.title }} #$pr_number](${{ github.event.pull_request.html_url }})${newline}${newline}" - summary+="HEAD: [$pr_head_sha](https://github.com/ROCm/rocm-libraries/commit/$pr_head_sha)${newline}${newline}" - summary+="MERGE: [$pr_merge_sha](https://github.com/ROCm/rocm-libraries/commit/$pr_merge_sha)${newline}${newline}" + summary+="HEAD: [$pr_head_sha](https://github.com/ROCm/rocm-systems/commit/$pr_head_sha)${newline}${newline}" + summary+="MERGE: [$pr_merge_sha](https://github.com/ROCm/rocm-systems/commit/$pr_merge_sha)${newline}${newline}" summary+="### Pipelines triggered for this PR${newline}${newline}" summary+="| Project | Run ID | Status |${newline}" summary+="|--------------|--------|--------|${newline}" @@ -301,7 +301,7 @@ jobs: summary+="${newline}${newline}" summary+="### Rerun instructions${newline}${newline}" - summary+="To request Azure to rerun jobs, click the \`Re-run all jobs\` button on the [corresponding \`Trigger Azure CI\` run](https://github.com/ROCm/rocm-libraries/actions/runs/${{ github.run_id }}).${newline}${newline}" + summary+="To request Azure to rerun jobs, click the \`Re-run all jobs\` button on the [corresponding \`Trigger Azure CI\` run](https://github.com/ROCm/rocm-systems/actions/runs/${{ github.run_id }}).${newline}${newline}" summary+="If there are any pending runs for this PR, they will be cancelled, and new runs will be started.${newline}${newline}" summary+="If there are no pending runs, but there are existing failed or cancelled runs for this PR and merge SHA, the existing runs will be rerun.${newline}${newline}" summary+="Otherwise, new runs will be started.${newline}${newline}" @@ -318,7 +318,7 @@ jobs: text+="${run_ids[i]}=pending;" done - gh_output=$(gh api repos/ROCm/rocm-libraries/check-runs \ + gh_output=$(gh api repos/ROCm/rocm-systems/check-runs \ -f "name=Azure CI Summary" \ -f "head_sha=$pr_head_sha" \ -f "status=in_progress" \ @@ -327,4 +327,4 @@ jobs: -f "output[text]=$text") echo "Created summary check with ID: $(echo "$gh_output" | jq -r '.id')" - echo "Summary check URL: https://github.com/ROCm/rocm-libraries/pull/561/checks?check_run_id=$(echo "$gh_output" | jq -r '.id')" + echo "Summary check URL: https://github.com/ROCm/rocm-systems/pull/561/checks?check_run_id=$(echo "$gh_output" | jq -r '.id')" diff --git a/.github/workflows/initial-setup.yml b/.github/workflows/initial-setup.yml index fa3d3b64b3..39731d7281 100644 --- a/.github/workflows/initial-setup.yml +++ b/.github/workflows/initial-setup.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: env: - MONOREPO_URL: github.com/ROCm/rocm-libraries.git + MONOREPO_URL: github.com/ROCm/rocm-systems.git MONOREPO_BRANCH: develop jobs: diff --git a/.github/workflows/therock-ci-linux.yml b/.github/workflows/therock-ci-linux.yml index f7d305384d..945f6c1acd 100644 --- a/.github/workflows/therock-ci-linux.yml +++ b/.github/workflows/therock-ci-linux.yml @@ -31,7 +31,7 @@ jobs: AMDGPU_FAMILIES: "gfx94X-dcgpu" TEATIME_FORCE_INTERACTIVE: 0 steps: - - name: Generate a token for rocm-libraries + - name: Generate a token for rocm-systems id: generate-token uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6 with: @@ -39,14 +39,14 @@ jobs: private-key: ${{ secrets.APP_PRIVATE_KEY }} owner: ${{ github.repository_owner }} - - name: "Checking out repository for rocm-libraries" + - name: "Checking out repository for rocm-systems" uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: sparse-checkout: | .github ${{ inputs.subtree_checkout }} token: ${{ steps.generate-token.outputs.token }} - + - name: Checkout TheRock repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: @@ -66,7 +66,7 @@ jobs: echo "Git version: $(git --version)" git config --global --add safe.directory $PWD git config fetch.parallel 10 - + - name: Fetch sources run: | ./TheRock/build_tools/fetch_sources.py --jobs 12 --no-include-math-libs diff --git a/.github/workflows/therock-ci-windows.yml b/.github/workflows/therock-ci-windows.yml index 7ddc5a5199..786cf55b63 100644 --- a/.github/workflows/therock-ci-windows.yml +++ b/.github/workflows/therock-ci-windows.yml @@ -33,7 +33,7 @@ jobs: # To get a fast signal of windows building for TheRock, adding gfx110X AMDGPU_FAMILIES: "gfx110X-dgpu" steps: - - name: Generate a token for rocm-libraries + - name: Generate a token for rocm-systems id: generate-token uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6 with: @@ -41,14 +41,14 @@ jobs: private-key: ${{ secrets.APP_PRIVATE_KEY }} owner: ${{ github.repository_owner }} - - name: "Checking out repository for rocm-libraries" + - name: "Checking out repository for rocm-systems" uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: sparse-checkout: | .github ${{ inputs.subtree_checkout }} token: ${{ steps.generate-token.outputs.token }} - + - name: Checkout TheRock repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: diff --git a/.github/workflows/therock-ci.yml b/.github/workflows/therock-ci.yml index 99071308dd..c72e326269 100644 --- a/.github/workflows/therock-ci.yml +++ b/.github/workflows/therock-ci.yml @@ -62,7 +62,7 @@ jobs: # - name: Patch monorepo # run: | # python TheRock/build_tools/github_actions/patch_monorepo.py \ - # --repo rocm-libraries + # --repo rocm-systems - name: Detect changed subtrees id: detect diff --git a/.github/workflows/update-release-staging-subtree.yml b/.github/workflows/update-release-staging-subtree.yml index 00f7f6d725..180375b926 100644 --- a/.github/workflows/update-release-staging-subtree.yml +++ b/.github/workflows/update-release-staging-subtree.yml @@ -6,7 +6,7 @@ on: - cron: '0 * * * *' env: - MONOREPO_URL: github.com/ROCm/rocm-libraries.git + MONOREPO_URL: github.com/ROCm/rocm-systems.git MONOREPO_BRANCH: release-staging/rocm-rel-7.0 concurrency: diff --git a/.github/workflows/update-subtrees.yml b/.github/workflows/update-subtrees.yml index e10b593306..e508892cfa 100644 --- a/.github/workflows/update-subtrees.yml +++ b/.github/workflows/update-subtrees.yml @@ -6,7 +6,7 @@ on: - cron: '0 * * * *' env: - MONOREPO_URL: github.com/ROCm/rocm-libraries.git + MONOREPO_URL: github.com/ROCm/rocm-systems.git MONOREPO_BRANCH: develop concurrency: diff --git a/README.md b/README.md index d0c34092ba..79c1d33339 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ This table provides the current status of the migration of specific ROCm systems Note TheRock CI performs multi-component testing on top of builds leveraging [TheRock](https://github.com/ROCm/TheRock) build system. -[![The Rock CI](https://github.com/ROCm/rocm-libraries/actions/workflows/therock-ci.yml/badge.svg?branch%3Adevelop+event%3Apush)](https://github.com/ROCm/rocm-libraries/actions/workflows/therock-ci.yml?query=branch%3Adevelop+event%3Apush) +[![The Rock CI](https://github.com/ROCm/rocm-systems/actions/workflows/therock-ci.yml/badge.svg?branch%3Adevelop+event%3Apush)](https://github.com/ROCm/rocm-systems/actions/workflows/therock-ci.yml?query=branch%3Adevelop+event%3Apush) --- diff --git a/docs/continuous-integration.md b/docs/continuous-integration.md index a78997aa6d..a51dd4fdd7 100644 --- a/docs/continuous-integration.md +++ b/docs/continuous-integration.md @@ -3,7 +3,7 @@ > [!IMPORTANT] > This document is currently in **draft** and may be subject to change. -This document is to detail the various continuous integration (CI) systems that are run on the rocm-libraries monorepo. +This document is to detail the various continuous integration (CI) systems that are run on the rocm-systems monorepo. ## Table of Contents 1. [Azure Pipelines](#azure-pipelines) diff --git a/docs/how-to-cherry-pick-monorepo-changes-to-release-staging.md b/docs/how-to-cherry-pick-monorepo-changes-to-release-staging.md index 7b8ad85d77..6d18a4f1a6 100644 --- a/docs/how-to-cherry-pick-monorepo-changes-to-release-staging.md +++ b/docs/how-to-cherry-pick-monorepo-changes-to-release-staging.md @@ -3,17 +3,17 @@ > [!IMPORTANT] > This document is currently in **draft** and may be subject to change. -When a project has been migrated into the ROCm monorepo, day-to-day work happens on the monorepo’s `develop` branch. +When a project has been migrated into the ROCm monorepo, day-to-day work happens on the monorepo’s `develop` branch. Down-stream teams, however, still consume the original (pre-monorepo) repositories, particularly their `release-staging/rocm-rel-x.y` branches, through a variety of mechanisms. -This document explains how to move a change from the monorepo into those release-staging branches while guaranteeing that every commit on a release-staging branch also exists in the monorepo. +This document explains how to move a change from the monorepo into those release-staging branches while guaranteeing that every commit on a release-staging branch also exists in the monorepo. ## 1. Land the change in the monorepo's develop branch -1. Create a pull request in `ROCm/rocm-libraries` that targets `develop`. -2. When merging, choose **Squash & Merge** (if the change can be represented as a single logical commit). +1. Create a pull request in `ROCm/rocm-systems` that targets `develop`. +2. When merging, choose **Squash & Merge** (if the change can be represented as a single logical commit). Why? A single commit is easier to cherry-pick later. -Result: The commit is now on `ROCm/rocm-libraries:develop`. +Result: The commit is now on `ROCm/rocm-systems:develop`. ## 2. Cherry-pick into the monorepo's release-staging branch @@ -26,11 +26,11 @@ $ git checkout -b cherry-pick-foo-rel-x.y origin/release-staging/rocm-rel-x.y 2. Cherry-pick the commit: ``` -$ git cherry-pick abcd1234 +$ git cherry-pick abcd1234 ``` 3. Resolve any merge conflicts (rare if the branch is close to develop). -4. Push the branch and open a PR that targets `ROCm/rocm-libraries:release-staging/rocm-rel-x.y`. +4. Push the branch and open a PR that targets `ROCm/rocm-systems:release-staging/rocm-rel-x.y`. 5. Request reviews, obtain approvals, and merge. ## 3. Wait for the automatic “fan-out” sync @@ -39,29 +39,29 @@ Every ~15 minutes, a CI job copies new commits from the monorepo back into the c After merging your PR: -1. Monitor the CI job or simply wait ~15 minutes. +1. Monitor the CI job or simply wait ~15 minutes. 2. Go to the original (pre-monorepo) repository and verify the commits have been reflected onto the `develop` and `release-staging/rocm-rel-x.y` branches. ## FAQ -Q : Can I cherry-pick multiple commits at once? +Q : Can I cherry-pick multiple commits at once? A : Yes, but prefer a squash merge in the monorepo so you only need to pick one. -Q : What if the auto-sync hasn’t copied the commit? -A : Verify the CI status in `rocm-libraries`. If failed, ask the infra team; the commit will re-sync after a successful run. +Q : What if the auto-sync hasn’t copied the commit? +A : Verify the CI status in `rocm-systems`. If failed, ask the infra team; the commit will re-sync after a successful run. -Q : Can I push directly to the release-staging branch? +Q : Can I push directly to the release-staging branch? A : No. Always go through a PR so CI and reviewers can validate the cherry-pick. -Q : What if commits have been pushed to develop that make a cherry-pick incompatible with release-staging? +Q : What if commits have been pushed to develop that make a cherry-pick incompatible with release-staging? A : It's likely that this fix/change will also be landed in develop at some point, else we risk divergent features/support. So, it's recommended to still land the change in develop first, and cherry-pick to release-staging, resolving any merge conflicts that arise. If for some reason the develop branch has diverged so far from the release-staging for your component that a cherry-pick is irreconcilable, land the changes in develop and release-staging using fully separate PRs, and add references to the other for traceability. ## Summary In short: -1. Merge change to monorepo `develop`. -2. Cherry-pick to monorepo `release-staging/rocm-rel-x.y`. +1. Merge change to monorepo `develop`. +2. Cherry-pick to monorepo `release-staging/rocm-rel-x.y`. 3. Wait for the fan-out sync and verify the changes are reflected in the original repository. Following this process keeps release branches in sync with the monorepo while allowing critical fixes to flow to down-stream consumers. diff --git a/docs/migration-process.md b/docs/migration-process.md index aee0ba08ba..951ae802eb 100644 --- a/docs/migration-process.md +++ b/docs/migration-process.md @@ -1,16 +1,16 @@ -# Migration from Single Repo to Monorepo - -## Introduction -This document outlines the process for migrating from a single library repository to this monorepo. It covers the necessary steps to ensure a smooth transition, including pre-conditions, conflict resolution, and changes to repository management. - -## Pre-conditions -To ensure consistency and maintainability during the migration, the following pre-conditions must be satisfied: +# Migration from Single Repo to Monorepo + +## Introduction +This document outlines the process for migrating from a single library repository to this monorepo. It covers the necessary steps to ensure a smooth transition, including pre-conditions, conflict resolution, and changes to repository management. + +## Pre-conditions +To ensure consistency and maintainability during the migration, the following pre-conditions must be satisfied: 1. **Identify Next Repo to Migrate:** - Please refer to the main [README.md](/README.md) on the order of repositories being migrated. - This is usually discussed in advance in meetings with the technical leads of that project. -2. **Identify Branches and Pull Requests:** +2. **Identify Branches and Pull Requests:** - Determine branches and active pull requests that will be affected by the migration. - Typically, this is limited to the pull requests targeting `develop` and `release-staging` branches. - Any point-fixes for previous releases will not be migrated over. @@ -18,51 +18,51 @@ To ensure consistency and maintainability during the migration, the following pr 3. **Pause Merges:** - There are GitHub Actions that automatically synchronize changes from the individual repos to the monorepo. - These automated actions need to be paused by disabling the workflow on the GitHub UI. - - develop branch workflow: https://github.com/ROCm/rocm-libraries/actions/workflows/update-subtrees.yml - - release-staging branch workflow: https://github.com/ROCm/rocm-libraries/actions/workflows/update-release-staging-subtree.yml + - develop branch workflow: https://github.com/ROCm/rocm-systems/actions/workflows/update-subtrees.yml + - release-staging branch workflow: https://github.com/ROCm/rocm-systems/actions/workflows/update-release-staging-subtree.yml - Announce the pause to key stakeholders and ask them to propagate the news. - -## Migration Process - -### Step 1: Pull Request Management - -1. **Automated Import of Pull Requests:** + +## Migration Process + +### Step 1: Pull Request Management + +1. **Automated Import of Pull Requests:** - Pull requests without merge conflicts will be automatically imported with a GitHub Action, only executable by maintainers and admins. - This GitHub action will create a feature branch on the monorepo, pulling in the changes from the PR on the original repo using `git subtree`. - These imported pull requests will have the `imported pr` label applied. - After running the action successfully, close the PR on the original repo. - - GitHub Action: https://github.com/ROCm/rocm-libraries/actions/workflows/pr-import.yml - - Example Imported Pull Request on Monorepo: https://github.com/ROCm/rocm-libraries/pull/206 + - GitHub Action: https://github.com/ROCm/rocm-systems/actions/workflows/pr-import.yml + - Example Imported Pull Request on Monorepo: https://github.com/ROCm/rocm-systems/pull/206 - Corresponding Pull Request on Original Repo: https://github.com/ROCm/Tensile/pull/2135 -2. **Conflict Resolution:** - - For pull requests with merge conflicts, add a comment explaining the merge conflict and blocking issue preventing import. +2. **Conflict Resolution:** + - For pull requests with merge conflicts, add a comment explaining the merge conflict and blocking issue preventing import. - Collaborate with contributors to import these PRs after the migration period, or the contributor can reopen the pull request themselves on the monorepo. - + 3. **NPI Development:** - Repeat this import process for the monorepo on GitHub EMU for npi work. -### Step 2: Issue and Comment Import - -1. **Issue Import:** +### Step 2: Issue and Comment Import + +1. **Issue Import:** - Import all open issues from both public and EMU repositories with a GitHub Action, only executable by maintainers and admins. - Comments are copied over in the imported issues. - - GitHub Action: https://github.com/ROCm/rocm-libraries/actions/workflows/issue-import.yml + - GitHub Action: https://github.com/ROCm/rocm-systems/actions/workflows/issue-import.yml - Ensure issue status and labels are preserved during migration. - Look for any weird unicode characters that get mangled during the automated import. - After running the action successfully, close the issue with a comment on the original repo. - - Example Imported Issue on Monorepo: https://github.com/ROCm/rocm-libraries/issues/100 + - Example Imported Issue on Monorepo: https://github.com/ROCm/rocm-systems/issues/100 - Corresponding Issue on Original Repo: https://github.com/ROCm/rocThrust/issues/501 - -### Step 3: Path-Based Commit History - -1. **Use of Git Filter-Repo:** + +### Step 3: Path-Based Commit History + +1. **Use of Git Filter-Repo:** - Utilize `git filter-repo` at the migration point to add path-based commit history. - As changing the contents of a commit will change the output the hash function, commit SHA will change. - The filter-repo tool is used to add a snippet at the end of the old commit to refer to the old commit SHA. - It is not possible to preserve the same commit SHA if the metadata is changed to point to new paths, as the hash function output changes. - - Example directory view: https://github.com/ROCm/rocm-libraries/commits/develop/projects/rocrand/library - - Example commit view: https://github.com/ROCm/rocm-libraries/commit/ea8b6884a0f2a0ec80ff7811bc5ec042600790e9 + - Example directory view: https://github.com/ROCm/rocm-systems/commits/develop/projects/rocrand/library + - Example commit view: https://github.com/ROCm/rocm-systems/commit/ea8b6884a0f2a0ec80ff7811bc5ec042600790e9 2. **command sequence example** @@ -74,11 +74,11 @@ pushd hipBLAS-common git checkout develop git pull origin git checkout -b filtered/hipblas-common -git filter-repo --path-rename '':'projects/hipblas-common/' --commit-callback "original_hash = commit.original_id.decode(); original_message = commit.message.decode(); new_message = f'{original_message}\\n\\n[ROCm/hipBLAS-common commit: {original_hash}]' if original_message.strip() else f'[ROCm/hipBLAS-common commit: {original_hash}]'; commit.message = new_message.encode()" --force -git remote add monorepo git@github.com:ROCm/rocm-libraries.git +git filter-repo --path-rename '':'projects/hipblas-common/' --commit-callback "original_hash = commit.original_id.decode(); original_message = commit.message.decode(); new_message = f'{original_message}\\n\\n[ROCm/hipBLAS-common commit: {original_hash}]' if original_message.strip() else f'[ROCm/hipBLAS-common commit: {original_hash}]'; commit.message = new_message.encode()" --force +git remote add monorepo git@github.com:ROCm/rocm-systems.git git push monorepo filtered/hipblas-common popd -git clone git@github.com:ROCm/rocm-libraries.git +git clone git@github.com:ROCm/rocm-systems.git git checkout develop git pull origin git branch backup/develop-hipblas-common @@ -95,17 +95,17 @@ git push origin develop ``` ### Step 4: CI/CD Triggers - + 1. **CI/CD Trigger Points:** - Modify the existing CI/CD systems to be triggered off changes to this project in the monorepo. ### Step 5: Repository Adjustments -1. **Default Branch Deprecation:** +1. **Default Branch Deprecation:** - Change the default branch of the original repository with a clear deprecation notice. - Example: https://github.com/ROCm/rocPRIM/tree/develop_deprecated - -2. **Disable Dependabot Updates:** + +2. **Disable Dependabot Updates:** - Cease automatic dependency updates in the old repository to streamline the focus on the monorepo. - Clear the contents in this file on the original repo: https://github.com/ROCm/rocPRIM/blob/develop_deprecated/.github/dependabot.yml - In the original repo settings, go to Security -> Advanced Security and disable all the Dependabot settings. @@ -120,26 +120,26 @@ git push origin develop - Update the true/false values in the [`repos-config.json`](/.github/repos-config.json) file that automated workflows use to determine which way the source gets synchronized.. - `auto_subtree_pull` should now be false, `auto_subtree_push` should now be true for this migrated project. - Make this change on both the `develop` and `release-staging` branches. - - https://github.com/ROCm/rocm-libraries/blob/develop/.github/repos-config.json - - https://github.com/ROCm/rocm-libraries/blob/release-staging/rocm-rel-7.0/.github/repos-config.json + - https://github.com/ROCm/rocm-systems/blob/develop/.github/repos-config.json + - https://github.com/ROCm/rocm-systems/blob/release-staging/rocm-rel-7.0/.github/repos-config.json 2. **Update the monorepo README.md:** - Update the migration status on the monorepo's main readme to indicate the migration has been completed. - - https://github.com/ROCm/rocm-libraries/blob/develop/README.md + - https://github.com/ROCm/rocm-systems/blob/develop/README.md -## Post-Migration Activities +## Post-Migration Activities 1. **Re-enable synchronization jobs:** - Re-enable any automated workflows that were paused. 2. **Communication:** - Communicate to key stakeholders the successful completion of the migration. - - Continue daily meetings and active written communications to offer support for any issues that arise. - + - Continue daily meetings and active written communications to offer support for any issues that arise. + 3. **Automated Patching of Original Repos:** - During the migration period, when a pull request is merged on the monorepo, the contents of the pull request will be split into patches to be pushed onto the original repos. - This supports potential pull requests that touch multiple projects. - - Example pull request on the monorepo: https://github.com/ROCm/rocm-libraries/pull/230 + - Example pull request on the monorepo: https://github.com/ROCm/rocm-systems/pull/230 - Corresponding patches on the original repos: - https://github.com/ROCm/hipCUB/commit/50438ec4971def627729ea3d9dc1485e52b09e48 - https://github.com/ROCm/hipRAND/commit/74afe303def580290a8e5b149ea13ae739bc4c61 @@ -149,8 +149,8 @@ git push origin develop 4. **Monitoring:** - Monitor the monorepo for any issues or discrepancies. - - If the automated patching for a PR failed to make it to the original repo, use this GitHub Action: https://github.com/ROCm/rocm-libraries/actions/workflows/pr-merge-sync-patches-manual.yml - -## Conclusion - -This migration process aims to assist the ROCm development teams transition from many repos to a monorepo by addressing the topics above. By following these outlined steps, we aim to maintain and improve the quality of our development workflow post-migration. + - If the automated patching for a PR failed to make it to the original repo, use this GitHub Action: https://github.com/ROCm/rocm-systems/actions/workflows/pr-merge-sync-patches-manual.yml + +## Conclusion + +This migration process aims to assist the ROCm development teams transition from many repos to a monorepo by addressing the topics above. By following these outlined steps, we aim to maintain and improve the quality of our development workflow post-migration.