如何生成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?
gradlew
或gradlew.bat
是Gradle的可执行文件,可用于执行gradle命令。
[
gradlew
或gradlew.bat
使用gradle/wrapper/gradle-wrapper.jar
文件执行。
所以正在播放3个文件:
gradlew
gradlew.bat
gradle/wrapper/gradle-wrapper.jar
事实是,当您创建flutter项目时,这些文件已经存在。但是默认情况下,项目的.gitignore
将忽略这些文件。因此这些文件在您的CI / CD服务器中将不可用。
当您是一个不稳定的项目时,您不需要他们来构建您的项目。您需要安装flutter sdk。您可以使用flutter sdk构建项目。使用以下命令发布版本
flutter build apk --release
它将在内部运行assembleRelease
,并生成您的apk文件。
如果您想按照自己的方式做,则可以将这3个文件添加到版本控制中并将其推送到存储库中。那么您将在jenkins工作区中拥有这些文件。如果您在Mac或Linux上,则必须授予gradlew
执行权限,可以通过以下命令完成。
chmod +x ./gradlew
然后您可以使用以下命令来构建您的应用程序:
./gradlew clean assembleRelease
注意:不建议使用方法2,因为当您运行flutter命令时,它会设置一些属性以从
pubspec.yaml
文件(例如version name
,version code
)中获取。因此,如果您对pubspec.yaml
文件进行了更改,但之后没有再运行flutter命令,则直接运行gradlew
不会包含这些更改。在这种情况下,您的apk可能是使用较旧的版本构建的,甚至可能不是构建的,因为它会从local.properties
文件中读取版本信息,该文件是由flutter命令自动修改的,默认情况下不包含在版本控制中。
您不应该在“詹金斯”上那样做。您应该在代码库中执行此操作。执行包装器命令(gradle wrapper
),将包装器文件添加到Git,然后提交并推送。