2016-05-21 2 views
1

Как вы расскажете Дженкинсу о том, чтобы установить свойство внутри gradle.properties в проекте Android? Я выяснил, как получить свойства от Gradle в Jenkins (используя EnvInject плагин и просто вводя gradle.properties в поле файла свойств), но я также хочу, чтобы номер сборки, который управляется Дженкинсом, вводится в сборку артефакт.Настройка свойств сборки в Android Gradle via Jenkins

Я также хочу установить имя файла полученного артефакта, который, я думаю, должен быть введен с помощью archivesBaseName. Но это свойство не является частью gradle.properties, поэтому мне интересно, как мне получить к нему доступ?

До сих пор я нашел решения, которые изменяют файл build.gradle (или другие скрипты градиента) в самом проекте Android. Но это не то, что я хочу сделать, потому что это сделает базу кода Android основанной на Jenkins.

Вместо этого я хочу, чтобы Дженкинс предоставил номер сборки и имя файла артефакта проекту Android, прежде чем он скомпилирует код.

Сервер работает на Mac. У кого-нибудь есть решение для этого? Любой скрипт shell/Groovy, который выполняет эту работу, будет приветствоваться.

ответ

0

Мы просто отжимаем файл version.properties, который генерируется сценарием jenkins "echo" VERSION_CODE = $ {BUILD_NUBMER} "> version.properies".

Затем Gradle скрипт импортирует его следующим образом:

// Version code is loaded from a properties file 
     def versionPropsFile = file('version.properties') 
     if (versionPropsFile.canRead()) { 
      def Properties versionProps = new Properties() 
      versionProps.load(new FileInputStream(versionPropsFile)) 

      def code = versionProps['VERSION_CODE'].toInteger() 

      versionCode code 
     } 
     else { 
      throw new GradleException("Could not read version.properties!") 
     } 

     buildConfigField "String", " some _VERSION", "\"${getVersionString()}\"" 
    } 
Смежные вопросы