Compare commits

...

3 Commits

Author SHA1 Message Date
Siwat Sirichai ed85d07148 Update gen_release.py 2023-12-07 14:59:39 +07:00
Siwat Sirichai c8ff21f522 finalize builder 2023-12-07 14:59:24 +07:00
Siwat Sirichai fc04b190a4 Update gen_release.py 2023-12-05 19:46:48 +07:00
2 changed files with 65 additions and 27 deletions

View File

@ -2,13 +2,15 @@ import os
import shutil import shutil
import subprocess import subprocess
import sys import sys
import platform
import subprocess import subprocess
import os import os
import shutil import shutil
import subprocess import subprocess
import sys import sys
import platform import platform
import re
import configparser
from time import sleep as delay
# Get the current directory # Get the current directory
@ -30,13 +32,58 @@ os.makedirs(release_folder)
# Get the current Git branch name # Get the current Git branch name
git_branch = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']).decode().strip() git_branch = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']).decode().strip()
commit_hash = subprocess.check_output(['git', 'rev-parse', 'HEAD']).decode().strip()[:10]
# Build the PlatformIO project
if len(sys.argv) > 1:
# If arguments are supplied, build the environments that match the arguments # If arguments are supplied, build the environments that match the arguments
if len(sys.argv) > 1:
environments = sys.argv[1:] environments = sys.argv[1:]
# If no argument are supplied, build all environments listed in platformio.ini
else:
environments = []
with open(os.path.join(current_dir, 'platformio.ini')) as f:
# Iterate over the lines in platformio.ini
for line in f.readlines():
# Check if the line contains the string "env:"
if '[env:' in line:
# Extract the environment using regular expressions
environment = re.search(r'\[env:(.*?)\]', line).group(1)
# Add the environment to the list of environments
environments.append(environment)
# Remove old platformio.ini file from firmware folder if it exists
if os.path.isfile(os.path.join(firmware_folder, 'platformio.ini')):
os.remove(os.path.join(firmware_folder, 'platformio.ini'))
# Copy the platformio.ini file to the firmware folder
shutil.copyfile(os.path.join(current_dir, 'platformio.ini'), os.path.join(firmware_folder, 'platformio.ini'))
# Check that the file is copied correctly
if not os.path.isfile(os.path.join(firmware_folder, 'platformio.ini')):
raise Exception('platformio.ini file not copied correctly')
# Read the platformio.ini file
config = configparser.ConfigParser()
config.read(os.path.join(firmware_folder, 'platformio.ini'))
# Add firmware version to build_flags in platformio.ini
for environment in environments: for environment in environments:
subprocess.run([f'{platformio_path}/platformio.exe', 'run', '-e', environment], cwd=current_dir) if 'build_flags' not in config[f'env:{environment}']:
config[f'env:{environment}']['build_flags'] = f'-DFW_VERSION=\\"{git_branch}_{environment}_{commit_hash}\\"'
else:
config[f'env:{environment}']['build_flags'] = config[f'env:{environment}']['build_flags'] + f' -DFW_VERSION=\\"{git_branch}_{environment}_{commit_hash}\\"'
# if argument is not supplied, build all environments listed in platformio.ini
if len(sys.argv) == 1:
subprocess.run([f'{platformio_path}/platformio.exe', 'run','-c',f'{firmware_folder}/platformio.ini'], cwd=current_dir)
for environment in environments:
if(len(sys.argv) > 1):
subprocess.run([f'{platformio_path}/platformio.exe', 'run', '-e', environment,'-c',f'{firmware_folder}/platformio.ini'], cwd=current_dir)
# Iterate over the subfolders in the firmware folder # Iterate over the subfolders in the firmware folder
for subfolder in os.listdir(firmware_folder): for subfolder in os.listdir(firmware_folder):
@ -47,20 +94,6 @@ if len(sys.argv) > 1:
# Check if the subfolder contains a firmware.bin file # Check if the subfolder contains a firmware.bin file
firmware_file = os.path.join(subfolder_path, 'firmware.bin') firmware_file = os.path.join(subfolder_path, 'firmware.bin')
if os.path.isfile(firmware_file): if os.path.isfile(firmware_file):
# Move the firmware.bin file to the release folder with the Git branch name appended # Move the firmware.bin file to the release folder with the Git branch name and commit hash appended
new_file_name = os.path.join(release_folder, f"{subfolder}_{git_branch}.bin") new_file_name = os.path.join(release_folder, f"{git_branch}_{subfolder}_{commit_hash}.bin")
shutil.move(firmware_file, new_file_name)
else:
# If no argument is supplied, build all environments
subprocess.run([f'{platformio_path}/platformio.exe', 'run'], cwd=current_dir)
# Iterate over the subfolders in the firmware folder
for subfolder in os.listdir(firmware_folder):
subfolder_path = os.path.join(firmware_folder, subfolder)
# Check if the subfolder contains a firmware.bin file
firmware_file = os.path.join(subfolder_path, 'firmware.bin')
if os.path.isfile(firmware_file):
# Move the firmware.bin file to the release folder with the Git branch name appended
new_file_name = os.path.join(release_folder, f"{subfolder}_{git_branch}.bin")
shutil.move(firmware_file, new_file_name) shutil.move(firmware_file, new_file_name)

View File

@ -395,6 +395,11 @@ void ota_begin()
otabuffer+=ota_part2_1+"IP Address"+ota_part2_2+IP.toString()+ota_part2_3; otabuffer+=ota_part2_1+"IP Address"+ota_part2_2+IP.toString()+ota_part2_3;
otabuffer+=ota_part2_1+"MAC Address"+ota_part2_2+ETH.macAddress()+ota_part2_3; otabuffer+=ota_part2_1+"MAC Address"+ota_part2_2+ETH.macAddress()+ota_part2_3;
otabuffer+=ota_part2_1+"Device"+ota_part2_2+ESPMEGA_REV+ota_part2_3; otabuffer+=ota_part2_1+"Device"+ota_part2_2+ESPMEGA_REV+ota_part2_3;
#ifdef FW_VERSION
otabuffer+=ota_part2_1+"Firmware"+ota_part2_2+FW_VERSION+ota_part2_3;
#else
otabuffer+=ota_part2_1+"Firmware"+ota_part2_2+"Out of Tree"+ota_part2_3;
#endif
otabuffer+=ota_part2_1+"BMS Server"+ota_part2_2+MQTT_SERVER.toString()+ota_part2_3; otabuffer+=ota_part2_1+"BMS Server"+ota_part2_2+MQTT_SERVER.toString()+ota_part2_3;
otabuffer+=ota_part2_1+"BMS Endpoint"+ota_part2_2+String(MQTT_BASE_TOPIC)+ota_part2_3; otabuffer+=ota_part2_1+"BMS Endpoint"+ota_part2_2+String(MQTT_BASE_TOPIC)+ota_part2_3;
otabuffer+=ota_part2_1+"Centrally Managed"+ota_part2_2; otabuffer+=ota_part2_1+"Centrally Managed"+ota_part2_2;