Внешняя конфигурация 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.

Другие вопросы по тегам