Build metadata artifact

This commit is contained in:
Oleg Kalachev
2026-09-01 17:35:12 +03:00
parent a0d7c05b35
commit 62b1b48cee
2 changed files with 28 additions and 11 deletions
+9 -1
View File
@@ -12,7 +12,15 @@ jobs:
steps:
- uses: actions/checkout@v7
- name: Check metadata
run: tools/metadata.py
run: tools/metadata.py generate
- name: Copy latest versions
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
run: cp tools/general.json meta/ && cp tools/parameters.json meta/
- name: Upload artifacts
uses: actions/upload-artifact@v7
with:
name: metadata
path: meta
csv_to_ulog:
runs-on: ubuntu-latest
steps:
+19 -10
View File
@@ -2,9 +2,10 @@
# Script for checking the metadata files
import sys
import sys, os
import re
from pathlib import Path
import shutil
import json
import zlib
import requests
@@ -13,10 +14,12 @@ def mavlink_crc323(data: bytes) -> int:
return (zlib.crc32(data, 0xFFFFFFFF) ^ 0xFFFFFFFF) & 0xFFFFFFFF
code = 0 # exit code
parameter_regexp = re.compile(r'^\s+\{"(?P<name>[^"]+)",\s*&(?P<variable>[^,]+)(.*)\},?$', re.MULTILINE)
parameters_source_file = Path(__file__).parent.parent / 'flix' / 'parameters.ino'
mavlink_source_file = Path(__file__).parent.parent / 'flix' / 'mavlink.ino'
parameters_code = parameters_source_file.read_text()
mavlink_code = mavlink_source_file.read_text()
parameters_meta_file = Path(__file__).parent / 'parameters.json'
parameters_meta = json.loads(parameters_meta_file.read_text())
assert parameters_meta['version'] == 1
@@ -49,8 +52,6 @@ print(f'Parameters CRC: {mavlink_crc323(parameters_meta_file.read_bytes())}')
print(f'General URL: {general_url}')
print(f'Parameters URL: {parameters_url}')
code = 0
assert general_data['version'] == 1
for meta in general_data['metadataTypes']:
if meta['type'] == 1:
@@ -65,14 +66,22 @@ else:
print('ERROR: Parameters metadata not found in general.json')
code = 1
resp = requests.get(general_url, allow_redirects=True)
resp.raise_for_status()
assert resp.json() == general_data
# check mavlink.ino contains correct link
if f'{general_crc},' not in mavlink_code:
print(f'ERROR: mavlink.ino does not contain correct general.json CRC: {general_crc}')
code = 1
if general_url not in mavlink_code:
print(f'ERROR: mavlink.ino does not contain correct general.json URL: {general_url}')
code = 1
resp = requests.get(parameters_url, allow_redirects=True)
resp.raise_for_status()
assert resp.json() == parameters_meta
if sys.argv[-1] == 'generate' and not code:
print('Copy metadata files')
os.makedirs(Path(__file__).parent.parent / 'meta' / str(general_crc), exist_ok=True)
os.makedirs(Path(__file__).parent.parent / 'meta' / str(parameters_crc), exist_ok=True)
shutil.copy(general_meta_file, Path(__file__).parent.parent / 'meta' / str(general_crc) / 'general.json')
shutil.copy(parameters_meta_file, Path(__file__).parent.parent / 'meta' / str(parameters_crc) / 'parameters.json')
if code == 0:
print('Everything is good')
sys.exit(code)