
1) 【一句话结论】:构建分层CI/CD流水线,通过自动化测试(UI、性能)与发布验证(如金丝雀发布),确保跨端(iOS/Android)代码提交→测试→打包→发布全流程质量,核心是工具集成、测试自动化与发布验证机制。
2) 【原理/概念讲解】:CI/CD(持续集成/持续交付)是软件开发的自动化流程,分为持续集成(代码提交后自动构建、测试)、持续交付(构建后自动部署到测试环境)、持续部署(测试后自动部署到生产环境)。跨端测试包括:
3) 【对比与适用场景】:
CI/CD工具对比(Jenkins vs GitLab CI vs GitHub Actions):
| 工具 | 定义 | 特性 | 使用场景 | 注意点 |
|------|------|------|----------|--------|
| Jenkins | 开源CI/CD工具 | 可扩展,支持多种插件,适合复杂流程 | 企业级复杂项目,需要定制化流程 | 配置复杂,维护成本高 |
| GitLab CI | GitLab内置的CI/CD | 与GitLab仓库深度集成,代码仓库内配置 | 需要GitLab作为代码管理,流程简单 | 集成度高,但扩展性不如Jenkins |
| GitHub Actions | GitHub内置的CI/CD | 与GitHub仓库深度集成,云部署 | 适合云原生项目,快速集成 | 部署在GitHub,适合小型到中型项目 |
跨端测试工具对比:
| 测试类型 | 定义 | 工具 | 作用 | 注意点 |
|----------|------|------|------|--------|
| UI自动化测试 | 模拟用户操作,验证界面交互 | Appium(跨端)、Espresso(Android)、XCUITest(iOS) | 验证功能、界面正确性 | 需要模拟器/真机,测试用例维护成本高 |
| 性能测试 | 测量应用性能(响应时间、内存、CPU) | JMeter(HTTP)、自定义脚本(Python+requests)、Android Profiler | 评估应用性能,优化 | 需要性能分析工具,数据收集复杂 |
4) 【示例】:以GitLab CI为例,结合分支策略与测试并行(多节点),以及真机测试(云服务),构建跨端CI/CD流水线(伪代码):
stages:
- test
- build
- deploy
# 开发分支:只运行单元测试
develop:
stage: test
script:
- ./gradlew test
# 测试分支:运行单元+UI(模拟器+真机)
test:
stage: test
script:
- ./gradlew test
- # 模拟器UI测试
- xcodebuild test -scheme "AppName" -destination 'platform=iOS Simulator,name=iPhone 14,OS=17.0' # iOS模拟器
- ./node_modules/appium/bin/appium.js run --config android.config.js # Android模拟器
- # 真机测试(云服务,如BrowserStack)
- curl -X POST "https://api.browserstack.com/automate/v2/machine/add" -H "Authorization: access_key=YOUR_KEY" -d '{"os": "iOS", "os_version": "17.0", "browser": "Safari", "device": "iPhone 14"}'
- curl -X POST "https://api.browserstack.com/automate/v2/machine/add" -H "Authorization: access_key=YOUR_KEY" -d '{"os": "Android", "os_version": "13", "browser": "Chrome", "device": "Samsung Galaxy S22"}'
# 发布分支:运行所有测试+打包+发布验证(金丝雀)
release:
stage: build
script:
- ./gradlew assembleRelease
- xcodebuild -scheme "AppName" -archivePath "build/Archive.xcarchive" archive
artifacts:
paths:
- build/app-release.apk
- build/AppName.ipa
# 金丝雀发布(Kubernetes)
canary_deploy:
stage: deploy
script:
- # 部署到K8s的测试环境,10%用户
- kubectl apply -f k8s/deployment-test.yaml
only:
- release
(注:测试并行通过Kubernetes调度测试任务,真机测试用BrowserStack,发布验证用K8s金丝雀发布。)
5) 【面试口播版答案】:在360跨端项目中,构建CI/CD流水线通常分几个关键步骤:首先,通过Git webhook监听代码提交,触发CI工具(如GitLab CI)。然后,执行自动化测试,包括单元测试(确保代码逻辑正确)和UI自动化测试(模拟用户操作,验证iOS/Android界面交互,用Appium或XCUITest,同时配置真机测试服务如BrowserStack,覆盖不同设备),以及性能测试(用JMeter测响应时间、内存)。测试通过后,执行打包(Android用Gradle assembleRelease,iOS用Xcode archive),最后将APK/IPA发布到测试服务器,并设置金丝雀发布机制(先部署到10%用户,验证后全量发布)。这样能自动验证质量,减少人工错误,比如开发提交代码后,流水线自动运行测试,失败则通知修复;通过后自动打包发布到测试环境,最终通过测试后发布生产环境。同时,发布前会运行所有测试并设置发布门禁,确保质量。
6) 【追问清单】:
7) 【常见坑/雷区】: