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&Docker持续集成安卓项目 #77

Open
soapgu opened this issue Sep 13, 2021 · 0 comments
Labels
IDE Good for newcomers problem problem or trouble 安卓 安卓

Comments

@soapgu
Copy link
Owner

soapgu commented Sep 13, 2021

这次的自动化之旅终于迎来了一个小高潮。
这次起因还是这篇coding持续集成吐血升级Gradle之旅。Gradle版本无法再升上去了。开始考虑隔离coding主机上已有的环境来解决这个问题。
经过前面三篇的准备

由于mac的电脑开始使用了,所以开始尝试使用mac的Docker来构建。
针对Mac的(64-bit, ARM)有专门的Docker的app。结果在Docker里面安装SDK的时候
相关Dockerfile
图片
这张截图是同事电脑上的截图,验证是系统性问题,非偶然。头铁然后在x86上的编译好的Docker推云端,让Mac来使用,结果当然是
图片
不用再尝试了,还是老老实实x86架构到底吧~~~

  • 正餐Coding开始

首先我们参考下这个文档

  1. 构建Docker并推送制品库
    构建Docker略
    推送步骤
docker login -u [email protected] -p <PASSWORD> abc-docker.pkg.coding.net

docker tag <LOCAL_IMAGE_TAG> abc-docker.pkg.coding.net/play/dockers/<PACKAGE>:<VERSION>

docker push abc-docker.pkg.coding.net/play/dockers/<PACKAGE>:<VERSION>
  1. 选择Docker环境

图片

如图 选择自定义构建环境->制品库内镜像->...
  1. Docker 参数选择
    注意事项
    看下运行的完整日志
    [2021-09-07 15:33:54] $ docker run -t -d -u 0:0 -w /root/workspace -v /root/workspace:/root/workspace:rw,z -v /root/workspace@tmp:/root/workspace@tmp:rw,z -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** aaa-docker.pkg.coding.net/abc/dockers/jre-11:1.0 cat
  • coding会默认映射当前的workspace,确实可以帮我们解决一大堆问题。但是你最好说一下呀。。。
  • coding会默认映射一大堆环境变量
    看不到是吧没关系可以从构建记录-> 构建快照->环境变量 里找

图片

这样只能入乡随俗
docker主机上的android-sdk目录映射给docker使用
args '-v "/root/programs/android-sdk:/root/programs/android-sdk" '

  1. 缓存优化

图片

按照以往经验,加入gradle缓存,这样下载的依赖就可以缓存下了,构建会加速很多

在docker的启动参数里面增加-v /root/.gradle/:/root/.gradle/
结果

2021-09-07 16:15:45] * What went wrong:
[2021-09-07 16:15:45] A problem occurred configuring root project 'TestG7'.
[2021-09-07 16:15:45] > Could not resolve all dependencies for configuration ':classpath'.
[2021-09-07 16:15:45]    > Using insecure protocols with repositories, without explicit opt-in, is unsupported. Switch Maven repository 'maven(http://mirrors.tencentyun.com/nexus/repository/maven-public/)' to redirect to a secure protocol (like HTTPS) or allow insecure protocols. See https://docs.gradle.org/7.0.2/dsl/org.gradle.api.artifacts.repositories.UrlArtifactRepository.html#org.gradle.api.artifacts.repositories.UrlArtifactRepository:allowInsecureProtocol for more details. 
[2021-09-07 16:15:45] 
[2021-09-07 16:15:45] * Try:
[2021-09-07 16:15:45] Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
[2021-09-07 16:15:45] 
[2021-09-07 16:15:45] * Get more help at https://help.gradle.org 

图片
啊啊啊啊啊,熟悉的场景又回来了,我忙活老半天又兜回来的嘛。
图片
冷静下来以后,原来是/root/.gradle/搞的鬼啊,那我们不用coding给的,自己建一个gradle缓存目录就是。
图片
args '-v "/root/programs/android-sdk:/root/programs/android-sdk" -v /root/.gradlecache/:/root/.gradle/'

完美

  1. docker优化
    Android的SDK目录是可以映射过来不用安装,那么我们的Dockerfile就可以精简了
    jre11-Dockerfile
    只要装jre11就行了。当然并不是说前面学习Android的SDK安装就没有意义,正是一些坑爹的问题让我学习到很多。

  2. docker环境优化
    docker不用每次下载也可以缓存。但是我的docker镜像并不大,那就算了吧~~~
    图片

  • 总结

coding下的Docker环境构建功能还是蛮强的。
对于开发来说节省了很多的基础工作。但是coding的文档还是非常的不足的,就像一个女孩子不把话说清楚,偏要我去猜。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
IDE Good for newcomers problem problem or trouble 安卓 安卓
Projects
None yet
Development

No branches or pull requests

1 participant