Как создать Gradlew на Дженкинс? - PullRequest
0 голосов
/ 11 февраля 2020

Как создать файл gradlew для проекта Jenkins Android? Мой проект не Android Native. Мой проект Flutter.

Я пытаюсь создать компакт-диск с Дженкинсом, и у меня появляются ошибки.

Это мой конвейерный код (JenkinsFile)

stage('Build Release APK') {
    sh "ls ./android"
    sh "./android/gradlew clean assembleRelease"
}

ls вывод , (Нет gradlew файла)

ls ./android
app
build.gradle
gradle
gradle.properties
key.properties
settings.gradle

Это ошибка, которую я получил

./android/gradlew clean assembleRelease
/Users/donperera/.jenkins/workspace/demo@tmp/durable-b0592b49/script.sh: line 1: ./android/gradlew: No such file or directory

Есть ли способ собрать apk / aap с Jenkins?

Можно ли использовать этот плагин? но я уже добавил это. Но не в этом мой сценарий. https://guides.gradle.org/executing-gradle-builds-on-jenkins/

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

gradlew или gradlew.bat - это исполняемый файл Gradle, который можно использовать для выполнения команд gradle .

gradlew или gradlew.bat использует для исполнения файл gradle/wrapper/gradle-wrapper.jar.

Итак, в игре 3 файла:

  • gradlew для ма c и linux
  • gradlew.bat для windows
  • gradle/wrapper/gradle-wrapper.jar

Дело в том, что эти файлы уже существуют при создании проекта flutter . Но эти файлы игнорируются по .gitignore проекта по умолчанию. поэтому эти файлы не будут доступны на вашем CI / CD сервере.

МЕТОД 1 [РЕКОМЕНДУЕТСЯ]

Они не нужны для создания вашего проекта, когда он это флаттер проект. Вам нужно установить SDK Flutter. Вы можете использовать Flutter SDK для создания вашего проекта. Используйте следующую команду для сборки выпуска [вам может понадобиться установить flutter SDK для вашего Jenkins сервера]:

flutter build apk --release

Он будет запускаться assembleRelease внутри и будет генерировать ваш файл APK.

МЕТОД 2 [НЕ РЕКОМЕНДУЕТСЯ]

Если вы хотите сделать это по-своему, то вы можете добавить эти 3 файла в систему контроля версий, удалив их ссылки из файла .gitignore и pu sh it в ваш репозиторий. Тогда у вас будет этот файл в вашем рабочем пространстве Jenkins . Вам нужно будет предоставить разрешения на выполнение gradlew, если вы находитесь на ма c или linux, что можно сделать с помощью следующей команды.

chmod +x ./gradlew

, затем вы можете использовать следующую команду для создания приложения:

./gradlew clean assembleRelease

ВНИМАНИЕ: Метод 2 не рекомендуется, потому что когда вы запускаете команды флаттера, он устанавливает некоторые свойства выходить из файла pubspec.yaml, например version name, version code. Таким образом, если вы внесли изменения в файл pubspec.yaml и после этого не выполнили команду flutter, то запуск gradlew напрямую не будет включать эти изменения. В этом случае ваш apk может быть собран с более старой версией или может даже не скомпилироваться, так как он читает информацию о версии из файла local.properties, который автоматически модифицируется командами флаттера и по умолчанию исключается из контроля версий. Таким образом, вам также нужно будет добавить файл local.properties, удалив его ссылку из файла .gitignore, который очень очень грязный, поскольку у него есть ссылка на местоположение android SDK, а на вашем сервере может не быть android SDK в этом месте , Опять же, вам нужно заняться этим. так что не используйте этот метод.

0 голосов
/ 11 февраля 2020

Вы не должны делать это "на Дженкинс". Вы должны сделать это в своей кодовой базе. Выполните команду оболочки (gradle wrapper), добавьте файлы оболочки в Git, зафиксируйте и pu sh.

...