-
Notifications
You must be signed in to change notification settings - Fork 51
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
GitHub Actions实现RN App自动化构建并推送到蒲公英 #53
Comments
最近也在折腾这块儿,你这种方案应该是最好的,奈何公司的 gitlab 是部署在内网的,GitHub Actions 访问不了,最终还是弄了台 mac 电脑专门来做 CI/CD |
有Mac服务器资源也挺好。类似的GItlab也一样的,只不过要自己配置Mac服务器资源跑runner。Github Action 官方默认提供了资源,搞起来速度是比较快。 |
我看你的构建记录,构建一次大概需要 25 分钟,感觉时间有点儿长呢。是 app 比较大构建慢还是本身这种方式会比较慢呢? P.S 之前尝试在 docker 里面构建 Android,也差不多需要 20 分钟,感觉时间有点儿长,把这个方案也给否了 |
付费的肯定快很多,毕竟免费的给全球用。如果性能特别好,那成本很高了,目前解决的问题是,QA不再问我们要包而已,节省开发时间和干扰次数。需要优化到更好就要付费,不管是Github付费版的还是自己购买服务器。 Github Action Supported runners and hardware resources Hardware specification for Windows and Linux virtual machines:
Hardware specification for macOS virtual machines:
https://github.com/actions/virtual-environments/blob/main/images/macos/macos-11-Readme.md |
背景
XX项目有App终端,技术栈 React Native,本地打包,QA去打扰开发人员占用时间,打包费时,也受开发电脑配置影响,慢得可能要30分钟。电脑配置高也至少10+分钟,一天多次,断断续续打断开发的开发节奏,影响效率。
为什么不用Jenkins?
为什么用 GitHub Actions?
CICD实现思路
由于代码是在公司的 Gitlab,也不会(更不允许)推送到 GitHub,所以采用的策略就是借用一个Github 空项目,在 Runner 执行 job step 流程时,拉取远程公司项目代码,然后再走构建流程。
借用
secrets
来获取配置的环境变量GITLAB_TOKEN
(访问私库Gitlab秘钥) 和GITLAB_REPO_URL
(私库代码Git url), 就可以把私库代码 clone 下来,并做到安全保密。
手动构建触发
选择支持手动构建触发的原因是,让QA或开发自己决定何时触发,构建什么分支,也避开了无用的自动化构建。
借用 workflow_dispatch 来实现变量控制,如下:
可以通过
${{ github.event.inputs.buildBranch}}
获取到构建分支,其他输入框类似shell 脚本拉取代码
checkout.sh
脚本只负责拉取分支代码即可Android 构建
主要流程描述:
cd android && chmod +x ./gradlew && ./gradlew assembleRelease
IOS 构建
IOS 构建流程其实和Android流程一致,只是构建平台的区别,以及IOS需要配置证书对ipa签名,所以借用了Action插件:ios-build-action
本人非IOS开发人员,也是第一次弄这个,折腾了不少时间,对几个参数进行说明
runs-on: 指定操作系统,IOS这边如果是系统
>=15.0
,需要Big Sur才支持,系统类型指定详细见:jobsjob_idruns-onproject-path 项目 .xcodeproj 文件路径
workspace-path 项目 .xcworkspace文件路径
p12-path 证书和秘钥(cert,key两者)p12 文件,通过Mac电脑 KeyChain Access 软件导出
mobileprovision-path *.mobileprovision 描述文件,苹果开发者中心签名时下载
code-signing-identity 对应Xcode签名时你选择,Build Settings下,并且要对应p12中的cert
team-id 登陆开发者账号就可以看到的id,project.pbxproj 文件内的
DEVELOPMENT_TEAM
如果在搞IOS自动化构建之前,Xcode 构建打包到真机测试是成功的,自动化需要配置的东西,就基本是对的。
这里对非专业IOS开发人员有点困难的是 p12 和 mobileprovision 内容的获取。我个人是用文件配置,这个文件需要放到项目代码里,其实这里用
base64
的方式配置到 Action 的 secrets 可能更方便(上边注释部分),不过要将文件内容转为base64
。
参考资料
对于此块配置推荐阅读插件使用说明和以下苹果签名相关文章
源码
https://github.com/RootLinkFE/devops-crm-app
总结
方便好用!
The text was updated successfully, but these errors were encountered: