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

View File

@ -8,6 +8,7 @@ This folder contains resources that is used for building or packaging the projec
### Packaging ### 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. - `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.appdata.xml`: AppStream metadata.
- `linux/com.lite_xl.LiteXL.desktop`: Desktop file for Linux desktops. - `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 ### Utility
- **common.sh**: Common functions used by other scripts. - **common.sh**: Common functions used by other scripts.
- **install-dependencies.sh**: Installs required applications to build, package - **install-dependencies.sh**: Installs required applications to build, package
and run Lite XL, mainly useful for CI and documentation purpose. and run Lite XL, mainly useful for CI and documentation purpose.
Preferably not to be used in user systems. Preferably not to be used in user systems.
- **fontello-config.json**: Used by the icons generator. - **fontello-config.json**: Used by the icons generator.
- **generate_header.sh**: Generates a header file for native plugin API - **generate_header.sh**: Generates a header file for native plugin API
- **keymap-generator**: Generates a JSON file containing the keymap - **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 [1]: https://github.com/dmgbuild/dmgbuild
[2]: https://docs.appimage.org/ [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 "$@"