Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

安卓自动化之旅(二)——打通coding的持续集成 #60

Open
soapgu opened this issue Jul 1, 2021 · 0 comments
Open

安卓自动化之旅(二)——打通coding的持续集成 #60

soapgu opened this issue Jul 1, 2021 · 0 comments
Labels
安卓 安卓

Comments

@soapgu
Copy link
Owner

soapgu commented Jul 1, 2021

  • 引言

在学习了Gradle的基础学习及本地环境后安卓自动化之旅——gradle命令行及环境配置(一),手特别痒,想要把集成这条路走下去,彻底打通。重新回到coding开始折腾了。

  • 新建构建计划

选择“Java-Android 编译并签名 Apk”
代码仓库选择“示例代码”(先Demo跑通再说)
全部用默认直接完成

直接构建 -> 果然失败了

  • Coding的APK 签名(从入门到绕过)

图片
原来是APK签名的参数都没有配。
图片
可是Coding的的证书都是pkcs12的,我们用的和学的都是jks证书。
看了一眼pkcs12证书的生成的教程及步骤
图片
费这个功夫实在不值当。而且有条路可以完美绕过

signingConfigs {
        debug {
            storeFile file("../../../sign/XXXXX.jks")
            storePassword 'XXXX'
            keyAlias 'XXXXXX'
            keyPassword 'XXXXX'
        }
    }

buildTypes {
        release {
            minifyEnabled false
            signingConfig signingConfigs.debug
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
}

这个多简单,直接改build.gradle里面就行了。
然后在Jenkinsfile里面把在APK签名的Task删掉

参考资料

APK 签名搞定了,继续构建,果然又失败了
图片
倒在最后一步,制品库参数没配。
图片
创建一个叫apks的制品库
再次构建,成功了。Demo总算是完成了

  • 正式项目构建APK

Demo完成后信心已经有了一大半。先拿已经发布的老楼人脸开门的App做小白鼠

  1. 配置代码仓库
    把代码仓库配置为“s365”

  2. 变更目录
    和demo不同,我们的安卓程序是放在更深的目录结构中的
    所以在所有的脚本执行外面都要包一层

dir('android/projects/shgbitgate') {
     sh './gradlew test'
}  

Jenkinsfile的语法用的也是groovy,怪不得有点似曾相似的感觉。
配置完开始构建,果然不是这么顺利,失败了
图片
./gradlew: Permission denied是什么鬼,加一句 先看看目录有没有对

[2021-07-01 10:49:45] + pwd

[2021-07-01 10:49:45] /root/workspace/android/projects/shgbitgate

[2021-07-01 10:49:45] + ./gradlew test

[2021-07-01 10:49:45] /root/workspace/android/projects/shgbitgate@tmp/durable-354887ae/script.sh: 1: /root/workspace/android/projects/shgbitgate@tmp/durable-354887ae/script.sh: ./gradlew: Permission denied

script returned exit code 126

看来变更目录没有问题就是权限的问题
再加一句脚本 chmod +x gradlew

StackOverflow参考

再次构建,又错了……

[2021-07-01 11:02:59] Recording test results

[2021-07-01 11:02:59] No test report files were found. Configuration error?

No test report files were found. Configuration error?

这是收集 JUnit 测试报告的任务报错,然后出错信息写得很清晰。

嗯先到本地跑下UT看看报告在哪儿
原来output不止有apk
app/build/test-results是放测试结果的
还分了testDebugUnitTest,testReleaseUnitTest两个目录
测试输出了TEST-{UTFullClassName}.xml作为格式化的测试结果

接下来把文件路径配对。这次总成功了吧
图片

Bingo!!!

  • 完善及补充

  • 输出apk文件名修改
    默认build输出的文件名为apk-debug.apk或者apk-release.apk。有点粗糙没有辨识度,不爽改下

buildTypes {
        applicationVariants.all {
            variant ->
                variant.outputs.all {
                    //在这里修改apk文件名
                    outputFileName = "ShgbitGate-${variant.name}-${variant.versionName}.apk"
                }
        }
}

图片
制品库里面的文件名也表意多了。

  • 触发规则

默认配置是代码提交都是会触发构建的
图片

改下配置
图片

  • 总结

虽然过程有点磕磕绊绊,总体还好,毕竟是成品,肯定比自己搭Jenkins要方便多,也算有个完整的输出了。现在UT还只是空架子,后面还有很多工作需要去填坑,暂时先到这里吧。
最后补一张图
图片
装逼成功

@soapgu soapgu added the 安卓 安卓 label Jul 1, 2021
@soapgu soapgu changed the title 安卓自动化之旅——打通coding的持续集成(二) 安卓自动化之旅(二)——打通coding的持续集成 Aug 11, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
安卓 安卓
Projects
None yet
Development

No branches or pull requests

1 participant