mirror of
https://github.com/meshtastic/firmware.git
synced 2025-06-08 06:02:05 +00:00
FlatHub: bump metainfo.xml on release (#6578)
* add bump_metainfo.py * bump org.meshtastic.meshtasticd.metainfo.xml on release * update bump-version job to trigger on published * use defusedxml.ElementTree parse * move bump_metainfo, use requirements.txt * add bin/bump_metainfo/requirements.txt to renovate * Switch to short version string * Bump version.properties to 2.6.6 * change version format * remove url * Add url back in * Update url format * manual add 2.6.6 * consolidate into one PR * update run steps * add ability to add date if missing * update pull request title * add comments * remove quote changes --------- Co-authored-by: Austin <vidplace7@gmail.com>
This commit is contained in:
parent
98411d408a
commit
7e8294dfad
32
.github/workflows/release_channels.yml
vendored
32
.github/workflows/release_channels.yml
vendored
@ -46,11 +46,14 @@ jobs:
|
|||||||
|
|
||||||
# Create a PR to bump version when a release is Published
|
# Create a PR to bump version when a release is Published
|
||||||
bump-version:
|
bump-version:
|
||||||
if: ${{ github.event.release.published }}
|
if: github.event.action == 'published'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
pull-requests: write
|
pull-requests: write
|
||||||
contents: write
|
contents: write
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@ -63,29 +66,42 @@ jobs:
|
|||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
run: |
|
run: |
|
||||||
echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
||||||
|
echo "short=$(./bin/buildinfo.py short)" >> $GITHUB_OUTPUT
|
||||||
echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT
|
echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT
|
||||||
id: version
|
id: version
|
||||||
env:
|
env:
|
||||||
BUILD_LOCATION: local
|
BUILD_LOCATION: local
|
||||||
|
|
||||||
- name: Bump version.properties
|
- name: Bump version.properties
|
||||||
run: >-
|
run: |
|
||||||
bin/bump_version.py
|
# Bump version.properties
|
||||||
|
chmod +x ./bin/bump_version.py
|
||||||
|
./bin/bump_version.py
|
||||||
|
|
||||||
- name: Ensure debian deps are installed
|
- name: Ensure debian deps are installed
|
||||||
shell: bash
|
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update -y --fix-missing
|
sudo apt-get update -y --fix-missing
|
||||||
sudo apt-get install -y devscripts
|
sudo apt-get install -y devscripts
|
||||||
|
|
||||||
- name: Update debian changelog
|
- name: Update debian changelog
|
||||||
run: >-
|
run: |
|
||||||
debian/ci_changelog.sh
|
# Update debian changelog
|
||||||
|
chmod +x ./debian/ci_changelog.sh
|
||||||
|
./debian/ci_changelog.sh
|
||||||
|
|
||||||
- name: Create version.properties pull request
|
- name: Bump org.meshtastic.meshtasticd.metainfo.xml
|
||||||
|
run: |
|
||||||
|
# Bump org.meshtastic.meshtasticd.metainfo.xml
|
||||||
|
pip install -r bin/bump_metainfo/requirements.txt -q
|
||||||
|
chmod +x ./bin/bump_metainfo/bump_metainfo.py
|
||||||
|
./bin/bump_metainfo/bump_metainfo.py --file bin/org.meshtastic.meshtasticd.metainfo.xml "${{ steps.version.outputs.short }}"
|
||||||
|
|
||||||
|
- name: Create Bumps pull request
|
||||||
uses: peter-evans/create-pull-request@v7
|
uses: peter-evans/create-pull-request@v7
|
||||||
with:
|
with:
|
||||||
title: Bump version.properties
|
title: Bump release version
|
||||||
|
commit-message: automated bumps
|
||||||
add-paths: |
|
add-paths: |
|
||||||
version.properties
|
version.properties
|
||||||
debian/changelog
|
debian/changelog
|
||||||
|
bin/org.meshtastic.meshtasticd.metainfo.xml
|
||||||
|
72
bin/bump_metainfo/bump_metainfo.py
Executable file
72
bin/bump_metainfo/bump_metainfo.py
Executable file
@ -0,0 +1,72 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import argparse
|
||||||
|
import xml.etree.ElementTree as ET
|
||||||
|
from defusedxml.ElementTree import parse
|
||||||
|
from datetime import datetime, timezone
|
||||||
|
|
||||||
|
|
||||||
|
# Indent by 2 spaces to align with xml formatting.
|
||||||
|
def indent(elem, level=0):
|
||||||
|
i = "\n" + level * " "
|
||||||
|
if len(elem):
|
||||||
|
if not elem.text or not elem.text.strip():
|
||||||
|
elem.text = i + " "
|
||||||
|
for child in elem:
|
||||||
|
indent(child, level + 1)
|
||||||
|
if not child.tail or not child.tail.strip():
|
||||||
|
child.tail = i
|
||||||
|
if level and (not elem.tail or not elem.tail.strip()):
|
||||||
|
elem.tail = i
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Prepend new release entry to metainfo.xml file.")
|
||||||
|
parser.add_argument("--file", help="Path to the metainfo.xml file",
|
||||||
|
default="org.meshtastic.meshtasticd.metainfo.xml")
|
||||||
|
parser.add_argument("version", help="Version string (e.g. 2.6.4)")
|
||||||
|
parser.add_argument("--date", help="Release date (YYYY-MM-DD), defaults to today",
|
||||||
|
default=datetime.now(timezone.utc).date().isoformat())
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
tree = parse(args.file)
|
||||||
|
root = tree.getroot()
|
||||||
|
|
||||||
|
releases = root.find('releases')
|
||||||
|
if releases is None:
|
||||||
|
raise RuntimeError("<releases> element not found in XML.")
|
||||||
|
|
||||||
|
existing_versions = {
|
||||||
|
release.get('version'): release
|
||||||
|
for release in releases.findall('release')
|
||||||
|
}
|
||||||
|
existing_release = existing_versions.get(args.version)
|
||||||
|
|
||||||
|
if existing_release is not None:
|
||||||
|
if not existing_release.get('date'):
|
||||||
|
print(f"Version {args.version} found without date. Adding date...")
|
||||||
|
existing_release.set('date', args.date)
|
||||||
|
else:
|
||||||
|
print(
|
||||||
|
f"Version {args.version} is already present with date, skipping insertion.")
|
||||||
|
else:
|
||||||
|
new_release = ET.Element('release', {
|
||||||
|
'version': args.version,
|
||||||
|
'date': args.date
|
||||||
|
})
|
||||||
|
url = ET.SubElement(new_release, 'url', {'type': 'details'})
|
||||||
|
url.text = f"https://github.com/meshtastic/firmware/releases?q=tag%3Av{args.version}"
|
||||||
|
|
||||||
|
releases.insert(0, new_release)
|
||||||
|
|
||||||
|
indent(releases, level=1)
|
||||||
|
releases.tail = "\n"
|
||||||
|
|
||||||
|
print(f"Inserted new release: {args.version}")
|
||||||
|
|
||||||
|
tree.write(args.file, encoding='UTF-8', xml_declaration=True)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
1
bin/bump_metainfo/requirements.txt
Normal file
1
bin/bump_metainfo/requirements.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
defusedxml==0.7.1
|
@ -87,8 +87,14 @@
|
|||||||
</screenshots>
|
</screenshots>
|
||||||
|
|
||||||
<releases>
|
<releases>
|
||||||
<release version="v2.6.4.b89355f" date="2025-04-10">
|
<release version="2.6.6">
|
||||||
<url type="details">https://github.com/meshtastic/firmware/releases/tag/v2.6.4.b89355f</url>
|
<url type="details">https://github.com/meshtastic/firmware/releases?q=tag%3Av2.6.6</url>
|
||||||
|
</release>
|
||||||
|
<release version="2.6.5" date="2025-04-09">
|
||||||
|
<url type="details">https://github.com/meshtastic/firmware/releases?q=tag%3Av2.6.5</url>
|
||||||
|
</release>
|
||||||
|
<release version="2.6.4" date="2025-03-29">
|
||||||
|
<url type="details">https://github.com/meshtastic/firmware/releases?q=tag%3Av2.6.4</url>
|
||||||
</release>
|
</release>
|
||||||
</releases>
|
</releases>
|
||||||
</component>
|
</component>
|
@ -13,6 +13,9 @@
|
|||||||
"git-submodules": {
|
"git-submodules": {
|
||||||
"enabled": true
|
"enabled": true
|
||||||
},
|
},
|
||||||
|
"pip_requirements": {
|
||||||
|
"fileMatch": ["bin/bump_metainfo/requirements.txt"]
|
||||||
|
},
|
||||||
"commitMessageTopic": "{{depName}}",
|
"commitMessageTopic": "{{depName}}",
|
||||||
"labels": ["dependencies"],
|
"labels": ["dependencies"],
|
||||||
"customDatasources": {
|
"customDatasources": {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
[VERSION]
|
[VERSION]
|
||||||
major = 2
|
major = 2
|
||||||
minor = 6
|
minor = 6
|
||||||
build = 5
|
build = 6
|
||||||
|
Loading…
Reference in New Issue
Block a user