mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-13 19:49:51 +01:00
ci: show recent changes in nightly release (#5553)
This commit is contained in:
parent
998920d244
commit
4d0ac15e55
61
.CI/format-recent-changes.py
Normal file
61
.CI/format-recent-changes.py
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
from datetime import datetime, timezone
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
import re
|
||||||
|
|
||||||
|
LINE_REGEX = re.compile(
|
||||||
|
r"""(?x)
|
||||||
|
^(?P<commit>[A-Fa-f0-9]+)\s+
|
||||||
|
\(
|
||||||
|
<(?P<email>[^>]+)>\s+
|
||||||
|
(?P<date>[^\s]+\s[^\s]+\s[^\s]+)\s+
|
||||||
|
(?P<line>\d+)
|
||||||
|
\)\s
|
||||||
|
(?P<content>.*)$
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
VERSION_REGEX = re.compile(r"^#+\s*v?\d")
|
||||||
|
|
||||||
|
# contains lines in the form of
|
||||||
|
# {commit-sha} (<{email}>\s+{date}\s+{line-no}) {line}
|
||||||
|
p = subprocess.run(
|
||||||
|
["git", "blame", "-e", "--date=iso", "../CHANGELOG.md"],
|
||||||
|
cwd=os.path.dirname(os.path.realpath(__file__)),
|
||||||
|
text=True,
|
||||||
|
check=True,
|
||||||
|
capture_output=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
unreleased_lines: list[tuple[datetime, str]] = []
|
||||||
|
for line in p.stdout.splitlines():
|
||||||
|
if not line:
|
||||||
|
continue
|
||||||
|
m = LINE_REGEX.match(line)
|
||||||
|
assert m, f"Failed to match '{line}'"
|
||||||
|
content = m.group("content")
|
||||||
|
|
||||||
|
if not content:
|
||||||
|
continue
|
||||||
|
if content.startswith("#"):
|
||||||
|
if VERSION_REGEX.match(content):
|
||||||
|
break
|
||||||
|
continue # ignore lines with '#'
|
||||||
|
|
||||||
|
d = datetime.fromisoformat(m.group("date"))
|
||||||
|
d = d.astimezone(tz=timezone.utc)
|
||||||
|
content = content.replace("- ", f"- [{d.strftime('%Y-%m-%d')}] ", 1)
|
||||||
|
unreleased_lines.append((d, content))
|
||||||
|
|
||||||
|
unreleased_lines.sort(key=lambda it: it[0], reverse=True)
|
||||||
|
|
||||||
|
if len(unreleased_lines) == 0:
|
||||||
|
print("No changes since last release.")
|
||||||
|
|
||||||
|
for _, line in unreleased_lines[:5]:
|
||||||
|
print(line)
|
||||||
|
|
||||||
|
if len(unreleased_lines) > 5:
|
||||||
|
print("<details><summary>More Changes</summary>\n")
|
||||||
|
for _, line in unreleased_lines[5:]:
|
||||||
|
print(line)
|
||||||
|
print("</details>")
|
13
.github/workflows/build.yml
vendored
13
.github/workflows/build.yml
vendored
|
@ -389,6 +389,17 @@ jobs:
|
||||||
working-directory: release-artifacts
|
working-directory: release-artifacts
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
|
- name: Format changes
|
||||||
|
id: format-changes
|
||||||
|
run: |
|
||||||
|
delimiter=$(openssl rand -hex 32)
|
||||||
|
{
|
||||||
|
echo "changelog<<$delimiter"
|
||||||
|
python3 ./.CI/format-recent-changes.py
|
||||||
|
echo $delimiter
|
||||||
|
} >> "$GITHUB_OUTPUT"
|
||||||
|
shell: bash
|
||||||
|
|
||||||
- name: Create release
|
- name: Create release
|
||||||
uses: ncipollo/release-action@v1.14.0
|
uses: ncipollo/release-action@v1.14.0
|
||||||
with:
|
with:
|
||||||
|
@ -396,7 +407,7 @@ jobs:
|
||||||
allowUpdates: true
|
allowUpdates: true
|
||||||
artifactErrorsFailBuild: true
|
artifactErrorsFailBuild: true
|
||||||
artifacts: "release-artifacts/*"
|
artifacts: "release-artifacts/*"
|
||||||
body: ${{ github.event.head_commit.message }}
|
body: ${{ steps.format-changes.outputs.changelog }}
|
||||||
prerelease: true
|
prerelease: true
|
||||||
name: Nightly Release
|
name: Nightly Release
|
||||||
tag: nightly-build
|
tag: nightly-build
|
||||||
|
|
|
@ -68,6 +68,7 @@
|
||||||
- Dev: Refactored a few `#define`s into `const(expr)` and cleaned includes. (#5527)
|
- Dev: Refactored a few `#define`s into `const(expr)` and cleaned includes. (#5527)
|
||||||
- Dev: Added `FlagsEnum::isEmpty`. (#5550)
|
- Dev: Added `FlagsEnum::isEmpty`. (#5550)
|
||||||
- Dev: Prepared for Qt 6.8 by addressing some deprecations. (#5529)
|
- Dev: Prepared for Qt 6.8 by addressing some deprecations. (#5529)
|
||||||
|
- Dev: Recent changes are now shown in the nightly release description. (#5553)
|
||||||
|
|
||||||
## 2.5.1
|
## 2.5.1
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue