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: steps:
- uses: actions/checkout@v7 - uses: actions/checkout@v7
- name: Check metadata - 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: csv_to_ulog:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
+19 -10
View File
@@ -2,9 +2,10 @@
# Script for checking the metadata files # Script for checking the metadata files
import sys import sys, os
import re import re
from pathlib import Path from pathlib import Path
import shutil
import json import json
import zlib import zlib
import requests import requests
@@ -13,10 +14,12 @@ def mavlink_crc323(data: bytes) -> int:
return (zlib.crc32(data, 0xFFFFFFFF) ^ 0xFFFFFFFF) & 0xFFFFFFFF return (zlib.crc32(data, 0xFFFFFFFF) ^ 0xFFFFFFFF) & 0xFFFFFFFF
code = 0 # exit code
parameter_regexp = re.compile(r'^\s+\{"(?P<name>[^"]+)",\s*&(?P<variable>[^,]+)(.*)\},?$', re.MULTILINE) parameter_regexp = re.compile(r'^\s+\{"(?P<name>[^"]+)",\s*&(?P<variable>[^,]+)(.*)\},?$', re.MULTILINE)
parameters_source_file = Path(__file__).parent.parent / 'flix' / 'parameters.ino' 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() parameters_code = parameters_source_file.read_text()
mavlink_code = mavlink_source_file.read_text()
parameters_meta_file = Path(__file__).parent / 'parameters.json' parameters_meta_file = Path(__file__).parent / 'parameters.json'
parameters_meta = json.loads(parameters_meta_file.read_text()) parameters_meta = json.loads(parameters_meta_file.read_text())
assert parameters_meta['version'] == 1 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'General URL: {general_url}')
print(f'Parameters URL: {parameters_url}') print(f'Parameters URL: {parameters_url}')
code = 0
assert general_data['version'] == 1 assert general_data['version'] == 1
for meta in general_data['metadataTypes']: for meta in general_data['metadataTypes']:
if meta['type'] == 1: if meta['type'] == 1:
@@ -65,14 +66,22 @@ else:
print('ERROR: Parameters metadata not found in general.json') print('ERROR: Parameters metadata not found in general.json')
code = 1 code = 1
resp = requests.get(general_url, allow_redirects=True) # check mavlink.ino contains correct link
resp.raise_for_status() if f'{general_crc},' not in mavlink_code:
assert resp.json() == general_data 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) if sys.argv[-1] == 'generate' and not code:
resp.raise_for_status() print('Copy metadata files')
assert resp.json() == parameters_meta 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: if code == 0:
print('Everything is good') print('Everything is good')
sys.exit(code) sys.exit(code)