如何在Jenkins上生成Gradlew?

问题描述 投票:-1回答:2

如何生成gradlew文件到Jenkins Android项目?我的项目不是Android Native。我的项目是Flutter。

我尝试用Jenkins创建CD,但出现一些错误。

这是我的管道代码(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 gradle flutter continuous-deployment gradlew
2个回答
1
投票

gradlewgradlew.bat是Gradle的可执行文件,可用于执行gradle命令。

[gradlewgradlew.bat使用gradle/wrapper/gradle-wrapper.jar文件执行。

所以正在播放3个文件:

  • [对于Mac和Linux为gradlew
  • Windows的gradlew.bat
  • gradle/wrapper/gradle-wrapper.jar

事实是,当您创建flutter项目时,这些文件已经存在。但是默认情况下,项目的.gitignore将忽略这些文件。因此这些文件在您的CI / CD服务器中将不可用。

方法1 [推荐]

当您是一个不稳定的项目时,您不需要他们来构建您的项目。您需要安装flutter sdk。您可以使用flutter sdk构建项目。使用以下命令发布版本

flutter build apk --release

它将在内部运行assembleRelease,并生成您的apk文件。

方法2 [不推荐]

如果您想按照自己的方式做,则可以将这3个文件添加到版本控制中并将其推送到存储库中。那么您将在jenkins工作区中拥有这些文件。如果您在Mac或Linux上,则必须授予gradlew执行权限,可以通过以下命令完成。

chmod +x ./gradlew

然后您可以使用以下命令来构建您的应用程序:

./gradlew clean assembleRelease

注意:不建议使用方法2,因为当您运行flutter命令时,它会设置一些属性以从pubspec.yaml文件(例如version nameversion code)中获取。因此,如果您对pubspec.yaml文件进行了更改,但之后没有再运行flutter命令,则直接运行gradlew不会包含这些更改。在这种情况下,您的apk可能是使用较旧的版本构建的,甚至可能不是构建的,因为它会从local.properties文件中读取版本信息,该文件是由flutter命令自动修改的,默认情况下不包含在版本控制中。


0
投票

您不应该在“詹金斯”上那样做。您应该在代码库中执行此操作。执行包装器命令(gradle wrapper),将包装器文件添加到Git,然后提交并推送。

© www.soinside.com 2019 - 2024. All rights reserved.