Внешняя конфигурация Project_Version в файле gpr - PullRequest
1 голос
/ 09 июля 2020

С помощью 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, но, похоже, это было надумано изменить всю мою цепочку сборки, просто чтобы добавить версию в конфигурацию сонара.

A простое, не автоматическое решение - вызвать проект с другим переключателем:

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 Ответ

0 голосов
/ 24 июля 2020

Лучшее решение, по-видимому, заключается в автоматизации этой конфигурации с помощью такого инструмента, как 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.

...