Автоматическое увеличение номера сборки с помощью PlatformIO - PullRequest
0 голосов
/ 07 июля 2019

У меня есть несколько проектов микроконтроллеров для домашней автоматизации. У каждого из моих узлов есть номер версии, который устанавливается вручную в коде. Этот номер версии сообщается во время запуска узла, чтобы сообщить мне, какой код выполняется. Иногда изменение номера версии забывается после внесения некоторых изменений в код. Таким образом, автоматическое решение должно быть найдено.

У меня есть представление о решении: 1. создать файл (version.h): #define BUILDNO xxx 2. включить его в соответствующие коды c 3. автоматическое увеличение ххх перед каждой сборкой Можно ли это реализовать? Или есть другие решения с подобным результатом?

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Я провел небольшое исследование, основанное на ответах на мой вопрос. PlatformIO может запускать пользовательские сценарии перед компиляцией. Вот процесс создания номера сборки и включения его в код вашего проекта:

  1. Создайте скрипт Python в папку проекта: buildscript_versioning.py
FILENAME_BUILDNO = 'versioning'
FILENAME_VERSION_H = 'include/version.h'
version = 'v0.1.'

import datetime

build_no = 0
try:
    with open(FILENAME_BUILDNO) as f:
        build_no = int(f.readline()) + 1
except:
    print('Starting build number from 1..')
    build_no = 1
with open(FILENAME_BUILDNO, 'w+') as f:
    f.write(str(build_no))
    print('Build number: {}'.format(build_no))

hf = """
#ifndef BUILD_NUMBER
  #define BUILD_NUMBER "{}"
#endif
#ifndef VERSION
  #define VERSION "{} - {}"
#endif
#ifndef VERSION_SHORT
  #define VERSION_SHORT "{}"
#endif
""".format(build_no, version+str(build_no), datetime.datetime.now(), version+str(build_no))
with open(FILENAME_VERSION_H, 'w+') as f:
    f.write(hf)
  1. Добавить строку в platformio.ini :
extra_scripts = buildscript_versioning.py

Сборка вашего проекта запустит скрипт. Будет создано 2 файла:

  • версия : простой текстовый файл для хранения последнего номера сборки

  • include / version.h : заголовочный файл для включения

Теперь вы можете добавить эту строку в код C:

#include <version.h>

Я запустил репозиторий gitlab с некоторой документацией здесь: https://gitlab.com/pvojnisek/buildnumber-for-platformio/tree/master Другие идеи приветствуются!

0 голосов
/ 08 июля 2019

При использовании C или C ++ (Arduino) вам придется зависеть от программ предварительной сборки. Вы должны добавить предварительно созданную программу, которая обновляет файл с помощью простого:

#define VERSION "1.0.0"

Ваша программа автоматического приращения должна где-то хранить текущую версию (желательно внутри version.h, чтобы она не синхронизировалась), а также читать, увеличивать и сохранять ее после компиляции.

Вы можете использовать подобное решение из vurdalakov или это из cplusadd.blogspot.com , которое использует Makefiles.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...