]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
ci: release
authorHenrik Gombos <henrik99999@gmail.com>
Wed, 28 Jun 2023 12:04:08 +0000 (12:04 +0000)
committerLaszlo Gombos <laszlo.gombos@gmail.com>
Thu, 13 Jul 2023 16:51:48 +0000 (12:51 -0400)
.github/workflows/release.yml [new file with mode: 0644]
tools/release.sh [new file with mode: 0755]

diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644 (file)
index 0000000..d006be2
--- /dev/null
@@ -0,0 +1,30 @@
+name: Release
+
+on:
+  workflow_dispatch:
+    inputs:
+      tag:
+        description: "release version number (3 digits)"
+        required: true
+
+permissions:
+  contents: write
+
+jobs:
+  release:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v3
+        with:
+          fetch-depth: 0
+
+      - name: Build
+        run: bash ${GITHUB_WORKSPACE}/tools/release.sh ${{ inputs.tag }}
+
+      - name: Release
+        uses: softprops/action-gh-release@v0.1.15
+        with:
+          tag_name: ${{ inputs.tag }}
+          name: dracut-${{ inputs.tag }}
+          body_path: ${{ github.workspace }}/release.md
diff --git a/tools/release.sh b/tools/release.sh
new file mode 100755 (executable)
index 0000000..f8f78f2
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+LAST_VERSION=$(git describe --abbrev=0 --tags --always 2> /dev/null)
+
+# CONTRIBUTORS
+printf "#### Contributors\n\n" > CONTRIBUTORS.md
+git log | git shortlog "$LAST_VERSION.." --numbered --summary -e | while read -r a rest || [ -n "$rest" ]; do echo "- $rest"; done >> CONTRIBUTORS.md
+
+# Update AUTHORS
+# shellcheck disable=SC2034
+git log | git shortlog --numbered --summary -e | while read -r a rest || [ -n "$rest" ]; do echo "$rest"; done > AUTHORS
+
+# Update NEWS.md
+cargo install clog-cli
+head -2 NEWS.md > NEWS_header.md
+tail +2 NEWS.md > NEWS_body.md
+printf "dracut-%s\n==========\n" "$1" > NEWS_header_new.md
+cat CONTRIBUTORS.md NEWS_body.md > NEWS_body_with_conttributors.md
+
+# clog will always output both the new release and old release information together
+clog -F --infile NEWS_body_with_conttributors.md -r https://github.com/dracutdevs/dracut | sed '1,2d' > NEWS_body_full.md
+
+# Use diff to separate new release information and remove repeated empty lines
+diff NEWS_body_with_conttributors.md NEWS_body_full.md | grep -e ^\>\  | sed s/^\>\ // | cat -s > NEWS_body_new.md
+cat NEWS_header.md NEWS_header_new.md NEWS_body_new.md NEWS_body_with_conttributors.md > NEWS.md
+
+# message for https://github.com/dracutdevs/dracut/releases/tag
+cat -s NEWS_body_new.md CONTRIBUTORS.md > release.md
+
+# Check in AUTHORS and NEWS.md
+git config user.name "Dracut Release Bot"
+git config user.email "<>"
+git commit -m "docs: update NEWS.md and AUTHORS" NEWS.md AUTHORS
+git push origin master
+git tag "$1" -m "$1"
+git push --tags