标签:github 自动化 raw ssh 开源项目 .sh 开发 上传 www
ps: 这个是公开的,如果需要使用私有的,请使用 .com 域名。
需要提醒的是:每次提交代码后都会重新下载需要的资源文件哦,所以时间很长,耐心等待吧。
travis-ci 就是 自动化 CI 工具,类似于大公司经常使用的 Jenkins,但是 travis-ci 是在云端的,而是支持 github, 还免费,我们可以 用 travis-ci 做很多的事情,不仅仅是 编译看 项目有没有问题。例如在项目构建结束以后,我们可以打包,并发布 apk 到都 蒲公英, fir,也可以用邮件通知给相关的开发人员和业务任务。 做一些简单处理,轻轻松松。这部分内容到后面尽快整理,在写一篇。
.travis.yml 文件 源代码
language: android
jdk: oraclejdk8
sudo: false
android:
components:
- tools
- build-tools-25.0.2
- android-25
- extra-android-m2repository
- extra-android-support
licenses:
- android-sdk-license-.+
- ‘.+‘
before_install:
- chmod +x gradlew
- mkdir "$ANDROID_HOME/licenses" || true
- echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
- echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"
script:
- ./gradlew assembleRelease
因为该文很长很长,所以暂时就不解释具体含义了,可以看看官方文档。
喝一杯咖啡,慢慢等待吧,最难熬的时候已经过去,此刻是享受的时候了。
回到首页刷新后,能看到:
说明我们已经构建成功了。
初次使用 Travis 的试试,总遇到 说 android 的一些协议未接受而构建失败,导致耗费了一两天,曾经一度想放弃,但是最终坚持了下来,通过各种搜索,摸索,猜测,终于搞定。其实最初的项目是这个:https://github.com/gdky005/TestJitpack ,里面有很多辛酸史记录,从提交记录能看得出来,有兴趣的可以研究研究,也许能解决你现在的问题。
Travis CI 协议问题解决方法:http://stackoverflow.com/questions/37615379/travis-ci-build-doesnt-work-with-android-constraint-layout
最重要部分在这里:
machine:
environment:
ANDROID_HOME: /usr/local/android-sdk-linux
dependencies:
pre:
- mkdir -p "$ANDROID_HOME/licenses"
- echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
- echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"
激动的时刻再次到来,让我们找找徽章在哪里呢?
让我们来选择 markdonw 格式:
并复制上。
同样如上修改 readme.md。
加空格后,直接贴上去:
这里需要说明的是,如果换成,图标也会换行哦。这样写就能保证所有的图标在一行了。
回到项目首页以后就能发现:
添加 Travis 徽章成功。
By the way! 上面是最初级的构建过程,如果遇到单元测试就不行了,还得参考 我的开源项目 TestJitpack。 不过有点乱,后面整理下。
Circle CI 相对来说比 Travis CI 好一些,至少界面上来说哈。还提供 ssh 的连接,构建过程相对来说 比较透明直观。例如:
Travis CI 的文档资料相对 Circle CI 来说 比较多, Circle CI 资料少之又少。
Travis CI 的使用率还是很高的, 不过 Circle CI 相对来说比较 年轻化,符合主流的科技感,更智能。
说到是否需要一起使用,其实都行,不过我在观察 github 主流项目的时候 有不少项目都是同时使用的,多一个技能总没有坏处吧。其实会了 Travis CI,在加 Circle CI 真是简单不少呢,只是基本语法不太一样。
1.登录主页面:
在 project 里面自己的账号下搜索刚创建的项目。
2.一般直接选择 Ubuntu 即可:
点击绿色 Build project.
3.能看到:
但是这次肯定会失败,因为我们还没有添加 Circle 需要的文件呢。
circle.yml 源代码:
machine:
java:
version: oraclejdk8
environment:
ANDROID_HOME: /usr/local/android-sdk-linux
dependencies:
pre:
- mkdir -p "$ANDROID_HOME/licenses"
- echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
- echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"
override:
- echo y | android update sdk --no-ui --filter "android-25"
- echo y | android update sdk --no-ui --filter "build-tools-25.0.2"
- echo y | android update sdk --no-ui --filter "extra-android-m2repository"
- echo y | android update sdk --no-ui --filter "extra-android-support"
- echo y | android update sdk --no-ui --filter "extra-google-m2repositor"
- ./gradlew dependencies || true
test:
override:
- ./gradlew build
1.提交代码后,发布到 github,Circle CI 会自动执行。
2.
点击进来后,会看到:
说明已经开始 构建了, 下载需要的东西:
3.构建中的一些步骤:
相对 Travis 来说展示更直观。
4.看到
说明构建成功。
我们再来把 Circle CI 的徽章找到,并添加到我们的 github 上去吧。
我们把 徽章的 markdown 链接拷贝下来放入到我们的 主项目页面的里面。
回项目主页刷新后:
非常 happy, 已经添加成功了。
Github上许多开源项目都使用了Codecov来展示单元测试结果, 就它了。
根据文中的指示:我们能看到一个开源的 github 项目 https://github.com/codecov/example-android, 不过看起来点晕晕的,于是摸索了一段时间。
我们之后都直接使用 Trivas CI 构建了。
添加项目就不说了,进入后,点击 project changes, 找到自己的项目:
等生产报告后,进入该网站就能看见结果。
Codecov不支持自己生成Android的测试覆盖率报告,它能做的是接收Jacoco生成的报告并进行可视化
1) 在 app 的 build.gradle 文件中 添加依赖
//Jacoco 生成报告的依赖
androidTestCompile(‘com.android.support.test:runner:0.5‘, {
exclude group: ‘com.android.support‘, module: ‘support-annotations‘
})
// Set this dependency to use JUnit 4 rules
androidTestCompile(‘com.android.support.test:rules:0.5‘, {
exclude group: ‘com.android.support‘, module: ‘support-annotations‘
})
// Espresso-contrib for DatePicker, RecyclerView, Drawer actions, Accessibility checks, CountingIdlingResource
androidTestCompile(‘com.android.support.test.espresso:espresso-contrib:2.2.2‘, {
exclude group: ‘com.android.support‘, module: ‘support-annotations‘
exclude group: ‘com.android.support‘, module: ‘support-v4‘
exclude group: ‘com.android.support‘, module: ‘appcompat-v7‘
exclude group: ‘com.android.support‘, module: ‘design‘
exclude group: ‘com.android.support‘, module: ‘recyclerview-v7‘
})
androidTestCompile(‘com.android.support.test.espresso:espresso-core:2.2.2‘, {
exclude group: ‘com.android.support‘, module: ‘support-annotations‘
})
2) 在 需要构建测试覆盖率报告的Module (AndroidBadge 项目中的 app) 的gradle文件中设置。
debug{
testCoverageEnabled true
}
3) 可以在尝试在本地生成报告:
./gradlew :app:createDebugAndroidTestCoverageReport 生成测试报告。 app 就是咱们项目中要测试的 module
测试报告地址:app/build/reports/coverage/debug/index.html。
在.travis.yml文件中添加命令将测试覆盖率报告上传给Codecov。
after_success:
- bash <(curl -s https://codecov.io/bash)
因为之前修改过很多次,过程很繁琐,直接给配置文件了,相信大家一眼就能看出来。
完整的配置文件是:
language: android
jdk: oraclejdk8
sudo: false
env:
global:
- ANDROID_API_LEVEL=25
- ANDROID_BUILD_TOOLS_VERSION=25.0.2
- ANDROID_ABI=armeabi-v7a
- ANDROID_TAG=google_apis
- ADB_INSTALL_TIMEOUT=20 # minutes (2 minutes by default)
android:
components:
- platform-tools
- tools # to install Android SDK tools 25.1.x
- build-tools-$ANDROID_BUILD_TOOLS_VERSION
- android-$ANDROID_API_LEVEL
- sys-img-armeabi-v7a-google_apis-$ANDROID_API_LEVEL
licenses:
- android-sdk-license-.+
- ‘.+‘
before_install:
- chmod +x gradlew
- mkdir "$ANDROID_HOME/licenses" || true
- echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
- echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"
before_script:
# Create and start emulator
- echo no | android create avd --force -n test -t "android-"$ANDROID_API_LEVEL --abi $ANDROID_ABI --tag $ANDROID_TAG
- emulator -avd test -no-skin -no-window &
- android-wait-for-emulator
- adb shell input keyevent 82 &
script:
- ./gradlew assembleRelease
- ./gradlew :app:createDebugAndroidTestCoverageReport --info --stacktrace
after_success:
- bash <(curl -s https://codecov.io/bash)
Travis-CI 对 android 的单元测试支持不是很好,因为需要开启虚拟机,开启这个过程就得10分钟(我的测试时间),很耗费时间。有时候也连接不上,一次跑下来估计得个 20分钟左右吧。所以,稳定性确实不是很高。如果不做单元测试,而只是做发布之类的,稳定性还是高的。
单元测试应都会吧, 这里检测的标准就是说 每个类和方法都必须检测到,否则就算没有覆盖。我这里也就简单在项目中写过例子,剩下的你们自己玩吧。
所以 要不要使用单元测试 还是根据项目决定吧。
让 codecov 慢慢构建吧,我们先继续。
官网:https://android-arsenal.com/api
Api_Level 是 arsenal 网站给各位开发者的一个福利,我们的 android 开源项目一般都有一个最低的构建版本。平时我们都是在 md 文件中写上 支持版本是 14+等很多样式,但是 不够醒目,有了 Api_Level 后,打开开源项目主页就知道,最低版本是多少。 不用看文档也能明白,轻松不少。 对应的 api 的一些特性和修改也能在这里展现。
如果你的开源项目最低支持版本是:14,那么就选择这里:
把这个拷贝下来,放入我们的 md 文档中吧。
codacy 编程代码自动审查服务平台,可以帮我们分析存在的问题 或者说是 bug,主要包括代码质量、语法规范、功能可用性方面的检查。
进入官网,添加自己的需要的 project。
完成后,等待一段时间就好了,会给你发邮件通知,已经完成。
完成后的效果是:
咱们的这个项目评级是 B。
拷贝下来,手动放到 咱们的项目的 md 文档中把。比较放心一些,如果点击后面的 add badge ,会自动加到项目中,需要我们 pull request 里面处理下。
彰显个人魅力,体现某种功能。例如咱们做一个跳转到我的博客的 个人徽章。
滚动网页到最下面:
在对应的地方填写相应的东西(也支持中文哦), 完成后点击后面的 Make Badge 按钮试试看。
我想我的个人图标是这种浅蓝色:
那么我就在 color 中直接写:7AD6FD
点击生成 一个地址, 先保存下面。
徽章的格式即是 markdown 的格式:
[![A\](B)\](D)
A 表示的页面中需要显示的内容, B 表示的是图片的地址,D 表示的是点击后需要跳转的链接的地址。
图片地址是上面存下来的。 前面显示内容:作者。按照上面的规范出来的结果就是:
[![作者\](https:\//img.shields.io\/badge\/%E4%BD%9C%E8%80%85-gdky005-7AD6FD.svg)\](http:\//www.gdky005.com)
把这段代码 粘贴到 我们的 md 文档中,个性专属徽章就出来了,而且点击后能到我们想去的地方。
很酷吧,其实还可以做很多这样的事情。
本文的 中的 项目地址是: https://github.com/gdky005/AndroidBadge
需要逐步了解项目的过程或者 根据步骤出现问题的话,可以check 对应的节点,看看代码是否不同,然后自行修改,我特意保存了该进度。如果下图中 git提交的记录:
相信小伙伴们肯定能做出更有意思的东西,到时候记得与我和大家分享,比较有特色的,我会将你们的链接挂载到 Github 项目里面。
标签:github 自动化 raw ssh 开源项目 .sh 开发 上传 www
原文地址:http://www.cnblogs.com/gongxiaojiu/p/7028873.html