Generate release notes (#1774)

* ci: generate better release notes

* scripts: rename generate-release-note.sh

* ci/release: check out all the history

* ci/release: accept version from input
This commit is contained in:
Takase 2024-05-18 07:12:04 +08:00 committed by GitHub
parent 7d876f81ad
commit 5549c0bd29
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 122 additions and 9 deletions

View File

@ -24,6 +24,8 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Fetch Version
id: tag
run: |
@ -38,6 +40,8 @@ jobs:
tag_name: ${{ steps.tag.outputs.version }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Generate Release Notes
run: bash scripts/generate-release-notes.sh --version ${{ steps.tag.outputs.version }}
- name: Create Release
id: create_release
uses: softprops/action-gh-release@v1
@ -45,8 +49,7 @@ jobs:
tag_name: ${{ steps.tag.outputs.version }}
name: Lite XL ${{ steps.tag.outputs.version }}
draft: true
body_path: changelog.md
generate_release_notes: true
body_path: release-notes.md
build_linux:
name: Linux

View File

@ -8,6 +8,7 @@ This folder contains resources that is used for building or packaging the projec
### Packaging
- `release-notes.md`: lite-xl release note template, used with `envsubst`.
- `icons/icon.{icns,ico,inl,rc,svg}`: lite-xl icon in various formats.
- `linux/com.lite_xl.LiteXL.appdata.xml`: AppStream metadata.
- `linux/com.lite_xl.LiteXL.desktop`: Desktop file for Linux desktops.

View File

@ -0,0 +1,39 @@
<!-- INSERT A BRIEF DESCRIPTION OF WHAT THE RELEASE ADDRESSES, IN NO MORE THAN 2 SENTENCES. -->
## Downloads
- Windows (Setup): [32-bit][win32-setup], [64-bit][win64-setup]
- Linux (64-bit): [AppImage][linux64-appimage], [tarball][linux64-tarball]
- macOS: [Universal][mac-dmg], [Intel][macintel-dmg], [Apple Silicon][macarm-dmg]
Other downloads such as ZIP files for Windows and lightweight releases are available below.
For OS requirements, please refer to the relevant section in the [README].
## New Features
<!-- IF APPLICABLE, ADD IMPORTANT NEW FEATURES HERE. -->
### Fixes
<!-- KEEP FIRST 10 FIXES HERE -->
### Other Changes
<!-- KEEP 5 CHANGES HERE -->
Please go to [changelog.md] for detailed description of all the changes.
<!-- UPDATE THIS! -->
**Commits since last version**: https://github.com/lite-xl/lite-xl/compare/v2.1.3...${RELEASE_TAG}
[win32-setup]: https://github.com/lite-xl/lite-xl/releases/download/${RELEASE_TAG}/LiteXL-${RELEASE_TAG}-addons-i686-setup.exe
[win64-setup]: https://github.com/lite-xl/lite-xl/releases/download/${RELEASE_TAG}/LiteXL-${RELEASE_TAG}-addons-x86_64-setup.exe
[linux64-appimage]: https://github.com/lite-xl/lite-xl/releases/download/${RELEASE_TAG}/LiteXL-${RELEASE_TAG}-addons-x86_64.AppImage
[linux64-tarball]: https://github.com/lite-xl/lite-xl/releases/download/${RELEASE_TAG}/lite-xl-${RELEASE_TAG}-addons-linux-x86_64-portable.tar.gz
[mac-dmg]: https://github.com/lite-xl/lite-xl/releases/download/${RELEASE_TAG}/lite-xl-${RELEASE_TAG}-macos-universal.dmg
[macintel-dmg]: https://github.com/lite-xl/lite-xl/releases/download/${RELEASE_TAG}/lite-xl-${RELEASE_TAG}-macos-x86_64.dmg
[macarm-dmg]: https://github.com/lite-xl/lite-xl/releases/download/${RELEASE_TAG}/lite-xl-${RELEASE_TAG}-macos-arm64.dmg
[README]: https://github.com/lite-xl/lite-xl?tab=readme-ov-file#installing-prebuilt
[changelog]: https://github.com/lite-xl/lite-xl/blob/${RELEASE_TAG}/changelog.md

View File

@ -17,13 +17,14 @@ Various scripts and configurations used to configure, build, and package Lite XL
### Utility
- **common.sh**: Common functions used by other scripts.
- **install-dependencies.sh**: Installs required applications to build, package
and run Lite XL, mainly useful for CI and documentation purpose.
Preferably not to be used in user systems.
- **fontello-config.json**: Used by the icons generator.
- **generate_header.sh**: Generates a header file for native plugin API
- **keymap-generator**: Generates a JSON file containing the keymap
- **common.sh**: Common functions used by other scripts.
- **install-dependencies.sh**: Installs required applications to build, package
and run Lite XL, mainly useful for CI and documentation purpose.
Preferably not to be used in user systems.
- **fontello-config.json**: Used by the icons generator.
- **generate_header.sh**: Generates a header file for native plugin API
- **keymap-generator**: Generates a JSON file containing the keymap
- **generate-release-notes.sh**: Generates a release note for Lite XL releases.
[1]: https://github.com/dmgbuild/dmgbuild
[2]: https://docs.appimage.org/

View File

@ -0,0 +1,69 @@
#!/usr/bin/env bash
if [ ! -e "src/api/api.h" ]; then
echo "Please run this script from the root directory of Lite XL."; exit 1
fi
show_help() {
echo
echo "Release notes generator for lite-xl releases."
echo "USE IT AT YOUR OWN RISK!"
echo
echo "Usage: $0 <OPTIONS>"
echo
echo "Available options:"
echo
echo "--version Use this version instead of git tags or GitHub outputs."
echo "--debug Debug this script."
echo "--help Show this message."
echo
}
main() {
local version
for i in "$@"; do
case $i in
--debug)
set -x
shift
;;
--help)
show_help
exit 0
;;
--version)
version="$2"
shift
shift
;;
*)
# unknown option
;;
esac
done
if [[ -n $1 ]]; then
show_help
exit 0
fi
if [[ -z "$version" ]]; then
if [[ "$GITHUB_REF" == "refs/tags/"* ]]; then
version="${GITHUB_REF##*/}"
else
version="$(git describe --tags $(git rev-list --tags --max-count=1))"
if [[ $? -ne 0 ]]; then version=""; fi
fi
fi
if [[ -z "$version" ]]; then
echo "error: cannot get latest git tag"
exit 1
fi
export RELEASE_TAG="$version"
envsubst '$RELEASE_TAG' > release-notes.md < resources/release-notes.md
}
main "$@"