内容简介:本文将介绍如何把iOS & Android项目分别上传到CocoaPods和Jitpack,并用Travis CI做持续集成,codecov做代码单元测试覆盖率的报告展示。首先需要在Github上创建代码仓库,编写好自己的代码并提交,打上一个tag标签作为版本。对于iOS代码,首先需要编写好项目的podspec描述文件,可以参照
本文将介绍如何把iOS & Android项目分别上传到CocoaPods和Jitpack,并用Travis CI做持续集成,codecov做代码单元测试覆盖率的报告展示。
上传代码
创建Github代码仓库
首先需要在Github上创建代码仓库,编写好自己的代码并提交,打上一个tag标签作为版本。
iOS上传CocoaPods
对于iOS代码,首先需要编写好项目的podspec描述文件,可以参照 我项目中的描述文件 。下面都将以我的Applepie项目为例,你的项目需要替换为自己的项目名字。
其中有几个地方需要注意:
s.name = "Applepie" s.version = "0.1.2" 复制代码
name是CocoaPod上的项目名称,version是版本,通常和tag是一一对应的。
s.source = { :git => "https://github.com/cdtschange/ios-applepie.git", :tag => s.version.to_s } 复制代码
这是项目所在的Github地址。
s.ios.deployment_target = "9.0" s.swift_version = "4.2" 复制代码
这是对应支持的最低iOS版本和Swift语言版本。
s.source_files = "Applepie/**/*.{h,m,swift,xcdatamodeld}" s.resource = "Applepie/Applepie.bundle" 复制代码
这是项目的代码文件路径和资源文件路径。
如果项目包含一些图片等资源文件需要外部能使用,就需要把资源文件打包成bundle放在根目录,并在代码中通过bundle的方式来访问。
s.dependency "xxx", "~> 1.0.0" 复制代码
这是项目依赖的其他第三方库。
有了podspec文件之后,就需要执行下面的命令来校验代码是否正确:
> pod lib lint --allow-warnings 复制代码
上面步骤通过之后,就可以执行下面命令将代码打包上传到CocoaPods了
> pod trunk push Applepie.podspec --allow-warnings 复制代码
这一步可能会等较长时间,成功之后就可以通过 pod install Applepie
来正常使用了。
以后每次升级版本,只需要按步骤执行:
pod lib lint --allow-warnings pod trunk push Applepie.podspec --allow-warnings
Android上传Jitpack
修改项目根目录 build.gradle
文件
de buildscript->dependencies
中加入依赖:
classpath "com.github.dcendents:android-maven-gradle-plugin:2.1" 复制代码
allprojects->repositories
中加入:
maven { url 'https://jitpack.io' } 复制代码
修改要打包的library目录 build.gradle
文件
顶部加入,其中group替换为 com.github.自己的github账号名
:
apply plugin: 'com.github.dcendents.android-maven' group='com.github.cdtschange' 复制代码
根目录添加 .jitpack.yml
文件
因为我在使用jitpack的时候遇到了Android SDK的Licenses需要同意才能运行的问题,所以在编译项目之前我需要先运行一些命令来同意Licenses。
在项目的根目录添加 .jitpack.yml
文件:
language: android jdk: - oraclejdk8 before_install: - echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --update && echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --licenses 复制代码
Jitpack中拉取项目
将Github上的项目提交并打好tag之后,就可以在Jitpack中用Github账号登录并查看到项目了。找到项目并在Release标签下看到自己的Tag Version,如果一切正常,会在版本号右边看见绿色的 Get it
按钮,我们就可以通过下面的方式正常使用了。
以后每次升级版本,只需要按步骤执行:
- 修改代码并提交
- 打新的tag
- 在Jitpack中查看新tag的项目是否编译成功
使用Jitpack
首先在要使用的项目根目录 build.gradle
文件中加入下面的maven源:
allprojects { repositories { ... maven { url 'https://jitpack.io' } } } 复制代码
然后就可以在需要的module的gradle文件中添加依赖了,下面是以我的Oreo项目为例,你的项目需要替换为自己的项目名字和版本:
dependencies { implementation 'com.github.cdtschange:android-oreo:1.0.0' } 复制代码
集成Travis CI
Travis CI可以为我们提供方便的代码自动编译、运行单元测试的能力,把它和Github结合使用,效果更佳。 很多开源Github项目中的
图标就是用了Travis CI生成的。
iOS集成Travis CI
首先在项目的根目录添加 .travis.yml
文件,还是以我的Applepie项目为例:
language: objective-c osx_image: xcode10 cache: cocoapods # xcode_workspace: ApplepieDemo/ApplepieDemo.xcworkspace # xcode_scheme: ApplepieDemo # xcode_sdk: iphonesimulator12.0 # podfile: ApplepieDemo/Podfile branches: only: - master before_install: - gem install xcpretty -N --no-ri --no-rdoc - pod repo update - pod install --project-directory=ApplepieDemo script: - | set -o pipefail xcodebuild clean test -workspace ApplepieDemo/ApplepieDemo.xcworkspace -scheme ApplepieDemo -destination 'platform=iOS Simulator,name=iPhone XS Max,OS=12.0' -enableCodeCoverage YES | bundle exec xcpretty after_success: - sleep 5 - bash <(curl -s https://codecov.io/bash) 复制代码
branches only: master
表示只有master分支有变化的时候才会触发自动编译,因此每次我们将代码合并到master分支,Travis CI就会为我们自动编译整个项目,并输入结果,带来的变化就是这个图标
会随着每次编译的结果不同而不同。
before_install
描述的是在编译之前我们需要做的一些准备工作,例如我们的项目如果也有一些依赖的第三方库,就要先执行 pod install
命令来安装。
script
就是编译命令了,我们指定用 iOS Simulator,name=iPhone XS Max,OS=12.0
环境来进行编译,并且运行单元测试和输出代码覆盖率报告 enableCodeCoverage
。
after_success
是描述执行成功之后需要做的事,我们在等待5秒之后,把单元测试报告上传到codecov,为后面的代码覆盖率工作做准备。
项目中有了这个文件之后,每次提交了master代码,我们都可以去我们项目所在的Travis CI查看编译的结果。
Android集成Travis CI
首先在项目的根目录添加 .travis.yml
文件,还是以我的Oreo项目为例:
language: android android: components: - tools - build-tools-28.0.3 - android-22 - android-28 - extra-android-m2repository - extra-android-support - sys-img-armeabi-v7a-android-22 branches: only: - master script: #- ./gradlew assembleRelease - ./gradlew build connectedCheck before_script: # 修改你的 gradlew的权限,默认gradlew没有权限执行的 - chmod +x gradlew # Emulator Management: Create, Start and Wait - echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a - emulator -avd test -no-audio -no-window & - android-wait-for-emulator - adb shell input keyevent 82 & after_success: - sleep 5 - bash <(curl -s https://codecov.io/bash) 复制代码
内容基本和iOS的差不多,运行环境我是用的android-22版本跑的单元测试,版本高于22的好像都有些问题。
集成Codecov代码覆盖率报告
单元测试和代码覆盖率能直观地体现出一个项目质量好坏,代码覆盖率高的项目质量一定是不低的。Codecov为我们提供了代码覆盖率友好的展现形式,很多Github开源项目中的
这个图标就是用Codecov生成的。
iOS集成Codecov
首先在项目的根目录添加 .codecov.yml
文件,还是以我的Applepie项目为例:
comment: layout: header, changes, diff coverage: ignore: - ApplepieDemo 复制代码
ignore中可以添加我们不想测试的project。
在Codecov网站上登录自己的Github,找到自己的项目,在Setting中找到一串密钥,复制下来。
在Travis CI网站上,找到自己项目,Setting的 Environment Variables
中加入环境变量:
CODECOV_TOKEN: 刚才复制的密钥 复制代码
这样就可以在Travis CI每次自动编译并运行完单元测试,生成测试报告之后,自动上传到Codecov中了。
图标也会随着每次编译后覆盖率不同而变化。
Android集成Codecov
首先在项目的根目录添加 .codecov.yml
文件,还是以我的Oreo项目为例:
comment: layout: header, changes, diff coverage: ignore: - app 复制代码
ignore中可以添加我们不想测试的module。
其他接下来的部分就和iOS一样了,不再赘述。
总结
以上就是iOS & Android代码打包上传、持续集成、单元测试报告的详细步骤,大家可以在自己项目中动手试试了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 单元测试和集成测试业务
- Spring Boot 集成 JUnit 单元测试
- KDevelop 5.2.1 发布,集成单元测试工具
- 禅道 12.3.stable 版本发布,全面集成八种单元测试框架,打通持续集成闭环
- Flutter 学习之路 - 测试(单元测试,Widget 测试,集成测试)
- 禅道 ZTF 发布 2.2 版本,新增对持续集成、单元和自动化测试框架的支持
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。