From 0d15023f693cd301ef2e0cff755f99b7a3a2d2a2 Mon Sep 17 00:00:00 2001 From: Cole Ramos Date: Tue, 24 Sep 2024 14:17:43 -0700 Subject: [PATCH] Tarball on rocm tags and MAINTAINERS guide (#402) * Package release tarball on rocm tags and add a MAINTAINERS guide to outline release procedure Signed-off-by: coleramos425 * Apply linting feedback Signed-off-by: coleramos425 * Update links in MAINTAINERS for new branches Signed-off-by: coleramos425 * Update MAINTAINERS.md for changelog formatting Signed-off-by: coleramos425 * Update Omniperf ver checker to allow tags with rocm- prefix Signed-off-by: coleramos425 * Add step to packaging workflow to upload release tarball to release Signed-off-by: coleramos425 * Synax change for release name in packaging action Signed-off-by: coleramos425 * Update MAINTAINERS for instuctions on ROCm releases Signed-off-by: coleramos425 * Update softprops pluvin to v2 and remove release name Removing the release name enables us to modify an existing release with the matching tag Signed-off-by: coleramos425 * Remove draft option on softprops plugin Signed-off-by: coleramos425 --------- Signed-off-by: coleramos425 --- .github/workflows/packaging.yml | 17 +++++++++++++++++ MAINTAINERS.md | 29 +++++++++++++++++++++++++++++ utils/ver_check.py | 3 +++ 3 files changed, 49 insertions(+) create mode 100644 MAINTAINERS.md diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index f1244bcd8..2b64bbd5d 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -4,6 +4,7 @@ on: push: tags: - "v[1-9].[0-9]+.[0-9]+*" + - "rocm-[0-9]+.[0-9]+.[0-9]+*" concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -42,3 +43,19 @@ jobs: with: name: omniperf-${{github.ref_name}}.tar.gz path: build/omniperf-${{github.ref_name}}.tar.gz + - name: Set version + run: echo "VERSION=$(cat VERSION)" >> $GITHUB_ENV + - name: Determine release name + run: | + if [[ ${{github.ref_name}} == rocm-* ]]; then + echo "RELEASE_NAME=Omniperf ${{ env.VERSION }} for ${{github.ref_name}}" + else + echo "RELEASE_NAME=Omniperf ${{ env.VERSION }}" + fi >> $GITHUB_ENV + - name: Upload tarball Release Asset + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') && github.repository == 'ROCm/omniperf' + with: + fail_on_unmatched: True + files: | + build/omniperf-${{github.ref_name}}.tar.gz diff --git a/MAINTAINERS.md b/MAINTAINERS.md new file mode 100644 index 000000000..0ee7f23da --- /dev/null +++ b/MAINTAINERS.md @@ -0,0 +1,29 @@ +# Maintainers Guide to Omniperf + +## Publishing a release + +Before publishing a new Omniperf release, please review this checklist to ensure all prerequisites are met: + +1) **Ensure [VERSION](VERSION) file is updated** to reflect your desired release version. +2) **Sync `amd-mainline` with `amd-staging`**. A rebase may be required to pull all the desired patches from the development branch to our stable mainline. Click [here](https://github.com/ROCm/omniperf/compare/amd-mainline...amd-staging) to begin that process. +3) **Update [CHANGES](CHANGES)** to reflect all major modifications to the codebase since the last release. When modifying [CHANGES](CHANGES) please ensure formatting is consistent with the rest of the ROCm software stack. See [this template](https://github.com/ROCm/hipTensor/blob/develop/CHANGELOG.md) for reference. +4) **Confirm all CI tests are passing**. You can easily confirm this by peeking the passing status of all GitHub continuous integration tests. +5) **Create a tag from `amd-mainline`**. More information on tagging can be found at [Git Docs - Tagging](https://git-scm.com/book/en/v2/Git-Basics-Tagging). + +> [!NOTE] +Note: A successful tag should trigger the [packaging action](.github/workflows/packaging.yml) which will produce a tarball artifact. **This artifact needs to be included as an asset in your release**. Please find that the [packaging action](.github/workflows/packaging.yml) will automatically create a draft release with your tarball attached. + +Once you've completed the above checklist, you are ready to publish your release. Please ensure you follow formatting from [past Omniperf releases](https://github.com/ROCm/omniperf/releases) for consistency. Some important aspects of our release formatting include: + +- Date of release is included in "Release Title". +- Updates are called out in "Release Description". Updates should mirror those listed in [CHANGES](CHANGES). +- Links to documentation and associated release tarball are called out in "Release Description". +- The tarball artifact from the corresponding tag is added to "Release Assets". + +### Publishing a release for ROCm + +If you are preparing for a new ROCm release, note that the [rocm-ci](https://github.com/rocm-ci) bot managed by DevOps will be triggering a tag automatically. This tag will follow the format `rocm-X.X.X`. + +Traditionally, we will bump the Omniperf [VERSION](VERSION) with a new ROCm release. When we bump the version and reach the prerequisite step (5) above, try tagging with `vX.X.X` to validate the release tarball generated by the [packaging action](.github/workflows/packaging.yml). + +In addition to the prerequisites mentioned above, please make sure that all changes have been merged from `amd-staging` -> `release/rocm-rel-X.X.X` to ensure that the "rocm-ci" bot will capture all your changes. It is easiest to file a single pull request ahead of the ROCm release. diff --git a/utils/ver_check.py b/utils/ver_check.py index 13bf9dbab..c50fcdf26 100755 --- a/utils/ver_check.py +++ b/utils/ver_check.py @@ -28,6 +28,9 @@ elif tag.startswith(repoCheck + "-"): print("OK: allowed match with extra delimiter") exit(0) +elif tag.startswith("rocm-"): + print("OK: allowed match with 'rocm-' prefix") + exit(0) else: print("FAIL: no match - double check top-level VERSION file") exit(1)