Внешняя конфигурация Project_Version в файле gpr
С gnatpro 19.1 я пытаюсь добавить gnathub в свой проект, и мне интересно, как установить динамически Project_Version
как в:
package Dashboard is
for Project_Version use @git --describe --tags@; -- this needs to be updated.
end Dashboard;
Я не могу придумать простого способа сделать это.
Решением было бы использовать Makefile, который настраивал бы .gpr.in
файл, но мне кажется, что я решил изменить всю цепочку сборки, просто чтобы добавить версию в конфигурацию сонара.
Простое, не автоматизированное решение - вызвать проект с другим переключателем:
gnathub -P Foo.gpr --plugins sonar-config,sonar-scanner\
--targs:sonar-scanner -Dsonar.projectVersion=$(git describe --tags)
Но на самом деле это не годится.
Аналогичный вопрос - добавить опцию -Dsonar.branch.name=$(git branch)
. AFAICT,package Dashboard
, согласно документации не имеетSwitch
переключатель.
Есть ли какое-либо решение, кроме передачи дополнительных аргументов или разветвления gnatdashboard?
1 ответ
Лучшее решение, по-видимому, заключается в автоматизации этой конфигурации с помощью такого инструмента, как Make.
Например, можно определить следующий Makefile:
# This target runs all the plugins listed
# in the section Dashboard.plugins of your project’s gpr
# sonar-config and sonar-scanner shall not be listed therein.
analyzes:
gnathub -P project
# This uses gnathub API to get the object dir where sonar-config file will be generated
OBJECT_DIR = $(shell gnathub -P project --exec object_dir.py 2>/dev/null | tail -n 1)
SONAR_PROPERTIES = $(OBJECT_DIR)/gnathub/sonar/sonar-project.properties
PROJECT_VERSION = $(shell git describe --tags)
BRANCH_NAME = $(shell git rev-parse --abbrev-ref HEAD)
# Uses gnathub to generate sonar properties file.
# Replaces the projectVersion and add branch name
# (notice that, on sonar, the branch name shall not be specified on your "master" branch)
$(SONAR_PROPERTIES): analyzes
gnathub -P project --plugins sonar-config --incremental
@sed -i "s/\(sonar.projectVersion = \).*/\1$(PROJECT_VERSION)/" $@
ifneq ($(BRANCH_NAME), master)
@echo "sonar.branch.name = $(BRANCH_NAME)" >> $@
endif
sonar: $(SONAR_PROPERTIES)
gnathub -P project --plugins sonar-scanner --incremental
.PHONY: sonar analyzes
куда object_dir.py
является:
#!/usr/bin/env python
import GNAThub;
print (GNAThub.Project.object_dir());
Затем:
$make sonar
Запустил бы анализ и обновил его, указав правильную версию и имя ветки (при необходимости) на сервере SonarQube.