CI: Generate GitHub releases 38/72338/1
authorAndrew Grimberg <agrimberg@linuxfoundation.org>
Mon, 6 Nov 2023 22:12:27 +0000 (14:12 -0800)
committerAndrew Grimberg <agrimberg@linuxfoundation.org>
Mon, 6 Nov 2023 22:12:27 +0000 (14:12 -0800)
* Increase the checkout depth from 1 to 30 to handle reno needing to be
  able to find all relevant tags (current and current -1) and also pull
  the tags
* Generate a reno report for the given tag and then modify the report to
  strip out all the extra garbage that is added by the report process to
  get it into a valid markdown file and not RST file
* Use `gh` cli tool to generate the release notes using the
  auto-changelog generation plus the reno release notes

Issue: RELENG-4973
Signed-off-by: Andrew Grimberg <agrimberg@linuxfoundation.org>
Change-Id: Ic54ac4a5b138aabe2adcc3a9612f018ed34b4983

.github/release.yml [new file with mode: 0644]
.github/workflows/release.yaml

diff --git a/.github/release.yml b/.github/release.yml
new file mode 100644 (file)
index 0000000..6072919
--- /dev/null
@@ -0,0 +1,7 @@
+# .github/release.yml
+
+changelog:
+  categories:
+    - title: Changes
+      labels:
+        - "*"
index 63bc4de..e2fd7a8 100644 (file)
@@ -10,7 +10,10 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - name: Checkout repository
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
+        with:
+          fetch-depth: 30
+          fetch-tags: true
       - name: Configure Python
         uses: actions/setup-python@v4
         with:
@@ -53,3 +56,25 @@ jobs:
 
             Cheers,
             LF Release Engineering
+      - name: Generate reno report
+        run: >-
+          pipx run tox -e reno -- report \
+            --version "${{ steps.tag.outputs.tag }}" \
+            2>/dev/null > reno-notes.md || true
+          if grep -q 'reno: FAIL' reno-notes.md
+          then
+            touch modified-reno-notes.md
+          else
+            sed '/^\.pkg.*$/d' reno-notes.md |
+            sed '/^reno:.*$/d' |
+            sed '/^\.\. .*$/d' |
+            sed '$d' |
+            sed '$d' |
+            sed '1d' > modified-reno-notes.md
+          fi
+      - name: Create Release Notes
+        run: >-
+          gh release create ${{ steps.tag.outputs.tag }} --generate-notes \
+            -F modified-reno-notes.md
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}