|  | @@ -0,0 +1,51 @@
 | 
	
		
			
				|  |  | +## Сборка
 | 
	
		
			
				|  |  | +Сборка осуществляется командой `make HARDWARE=<hw> VERBOSE=1 DEBUG=0 PRINTF=custom MAC=<mac_adr>`
 | 
	
		
			
				|  |  | +Пример: `make HARDWARE=bt6711_v1 VERBOSE=1 DEBUG=0 PRINTF=custom MAC=EC-4C-4D-00-EE-DC`
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Данный репозиторий является единой кодовой базой для всех устрйоств линейки BT-67xx, сборка под каждое устройство определяется параметрами команды `make`. Коды поддерживаемых устройств перечислены в файле `jenkins-env.groovy` (переменная devices = []). Эти же коды используются в релизных тегах.
 | 
	
		
			
				|  |  | +#### ВНИМАНИЕ! 
 | 
	
		
			
				|  |  | +Параметры для команды make отличаются по написанию от кодов типа устройства. Параметры должны быть написаны ТОЛЬКО с использованием знака "_".
 | 
	
		
			
				|  |  | +Все имеющиеся коды устройств и параметры для команды `make` перечислены в таблице:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +| Код | Параметр сборки | Примечание |
 | 
	
		
			
				|  |  | +| -------- | -------- | -------- |
 | 
	
		
			
				|  |  | +| bt6703 | `HARDWARE=bt6703` | Билайн |
 | 
	
		
			
				|  |  | +| bt6703-rt | `HARDWARE=bt6703_rt` | Ростелеком |
 | 
	
		
			
				|  |  | +| bt6707 | `HARDWARE=bt6707` |  |
 | 
	
		
			
				|  |  | +| bt6709 | `HARDWARE=bt6709` | Билайн |
 | 
	
		
			
				|  |  | +| bt6709-mts | `HARDWARE=bt6709_mts` | МТС |
 | 
	
		
			
				|  |  | +| bt6710 | `HARDWARE=bt6710` |  |
 | 
	
		
			
				|  |  | +| bt6711 | `HARDWARE=bt6711` |  |
 | 
	
		
			
				|  |  | +| bt6711-v1 | `HARDWARE=bt6711_v1` |  |
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Возможна сборка в докер-контейнере с подготовленным окружением и необходимым тулчейном. Актуальный образ для сборки указан в файле `jenkins-env.groovy` (переменная `buildenvImage`). Полная команда для сборки в таком случае выглядит так:
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  | +git clone https://192.168.24.200:3000/ebalbekova/bt-67xx_universal_hw.git 
 | 
	
		
			
				|  |  | +cd bt-67xx_universal_hw
 | 
	
		
			
				|  |  | +docker run \
 | 
	
		
			
				|  |  | +    -ti --rm -v $(pwd):/home/jenkins \
 | 
	
		
			
				|  |  | +    192.168.24.227:8082/docker/stm32-buildenv:v3 \
 | 
	
		
			
				|  |  | +    make HARDWARE=bt6711_v1 VERBOSE=1 DEBUG=0 PRINTF=custom MAC=EC-4C-4D-00-EE-DC
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  | +Сборка при помощи докера является предпочтительным способом отладки ПО разработчиком. В этом случае исключены ошибки при несовпадении окружения на ПК разработчика и на сервере автосборки.
 | 
	
		
			
				|  |  | +## Ветвление
 | 
	
		
			
				|  |  | +Основная ветка для разработки - `master`. <br />
 | 
	
		
			
				|  |  | +Иные ветки несут вспомогательный (временный) характер для разработки новых фич или отладки отдельных функций. Автоматическая сборка этих веток не осуществляется.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +## Тегирование
 | 
	
		
			
				|  |  | +Все релизы ПО осуществляются по тегам. Теги проставляются только по определенному шаблону.
 | 
	
		
			
				|  |  | +Все теги, проставленные не по шаблону, не учитываются системой сборки и несут вспомогательный характер (удобство разработчика)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Для выпуска релиз кандидата нужно проставить тег с префиксом "rc_":<br />
 | 
	
		
			
				|  |  | +`rc_<тип устройства>_<версия>` (Пример: `rc_bt6710_v1.5beta2`)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Для сборки релиза нужно проставить тег с префиксом "release_":<br />
 | 
	
		
			
				|  |  | +`release_<тип устройства>_<версия>` (Пример: `release_bt6710_v1.5`)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Пайплайн позволяет также осуществить релиз загрузчика (префикс "bootloader_") и релиз сервисной флешки (префикс "service_") отдельно от основного ПО.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +## Автоматическая сборка
 | 
	
		
			
				|  |  | +* Сборка осуществляется на сервере Jenkins в пайплайне: http://192.168.24.203:8080/view/BT-67xx/job/bt-67xx_universal_hw/. В нем настроены сборки при каждом коммите в ветку `master` и при обнаружении нового тега (независимо от ветки). В любом случае система собирает все возможные варианты ПО (для всех вариантов контроллеров), но при релизе публикует только ПО для выбранного устройства.
 | 
	
		
			
				|  |  | +* Результаты сборки попадают на сервер Artifactory http://192.168.24.227:8082/ui/native/firmware/BT-67xx/bt67xx_universal_hw/
 | 
	
		
			
				|  |  | +* Переменные окружения (настройки) для автоматической сборки, с их подробным описанием, хранятся в файле `jenkins-env.groovy` в корне данного репозитория.
 | 
	
		
			
				|  |  | +* По окончанию сборки релиза всем указанным в настройках адресатам рассылается информационное письмо со ссылкой на хранилище результатам сборки. Так же информационное письмо отправляется разработчику при неудачных сборках очередного коммита в основную ветку.
 |