Объединить два файла конфигурации при удалении дубликатов ключей? - PullRequest
0 голосов
/ 20 апреля 2020

Поэтому я пытаюсь разделить следующий файл sonar-project.properties на два файла. Один файл, который я передам в систему контроля версий, а другой - на своем локальном компьютере.

Локальный разработчик sonar-project.properties файл:

sonar.host.url=localhost
sonar.login=herro
sonar.password=lol

sonar-project.properties файл, который будет в управлении исходным кодом:

sonar.host.url=https://my-project.com/sonarqube
sonar.projectKey=my-project

Я хотел бы, чтобы они оба были объединены, чтобы получить следующее:

sonar.host.url=localhost
sonar.projectKey=my-project
sonar.login=herro
sonar.password=lol

Это в значительной степени конфигурация "по умолчанию", которую я хотел бы, чтобы разработчик возможность переопределить их собственные значения конфигурации. Afaia c это не поддерживается изначально SonarQube, поэтому мне придется делать это вручную.

Я использую Node.js с разработчиками на машинах Linux и Windows, поэтому обе платформы будут иметь быть поддержанным. Есть идеи?

1 Ответ

0 голосов
/ 24 апреля 2020

Я знаю, что это JS проект, поэтому мое предложение может быть неосуществимым, но оно определенно сработает.

Предлагаю использовать gradle. Недостатком является то, что вам нужно иметь java на ваших машинах для разработки. Но начиная с этого, у вас есть несколько вариантов для достижения этой цели. Кроме того, у вас есть сканер gradle sonarqube, который может сделать эту тихую настройку простой на всех машинах.

Настройка gradle довольно проста (это краткое объяснение, вы хотите исследовать упаковщик gradle, чтобы убедиться, что одинаковая версия для всех). на основе https://plugins.gradle.org/plugin/org.sonarqube это все, что вам нужно в вашем build.gradle для начала. Но это только начало.

plugins {
  id "org.sonarqube" version "2.8"
}

, после этого у вас есть несколько вариантов. Разработчики могут указать глобальные учетные данные сонара в <user>/.gradle/gradle.properties, или вы можете просто загрузить два файла внутри плагина, например

    sonarqube {
        properties {
            Properties props = new Properties()
            props.load(new FileInputStream("sonar-project.properties"))
            props.forEach { key, value ->
                property key, value
            }
            Properties propsLocal = new Properties()
            propsLocal.load(new FileInputStream("sonar-project-local.properties"))
            propsLocal.forEach { key, value ->
                property key, value
            }
        }
    }

, с двумя разными файлами, один зарегистрированный и один локально созданный.

Как я уже говорил, это Gradle и использует Java, но, как вы сказали, каждый инструмент возможен. хотя я и предлагаю это, вы также можете настроить sonarqube gradle для сканирования файлов JS, это работает довольно хорошо, так как мы используем это в нашей компании. Кроме того, мы также используем gradle для установки nodejs с одинаковой версией везде, что является хорошим побочным эффектом.

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