如何快速为你的Github项目搭建CICD

背景

作为一个程序员,我们经常会在Github上开源自己的项目,本文将介绍如何通过Travis CI进行持续集成,并通过蒲公英进行项目的部署。介绍如何简单快速的为你的Github项目添加CICD,提高项目的构建、质量及测试的效率。

本文将通过一个Android项目进行示例说明。具体不同的平台的命令配置不一样,但整体的流程一致。

集成

账号

Travis CI

Travis CI 是目前比较流行的持续集成工具之一,用来构建及测试在 Github 托管的代码,使用它可以极大的简化工作流程。

蒲公英

蒲公英提供专业的手机应用内测服务,您只需将需要内测的应用上传至蒲公英,生成二维码,内测用户通过在手机上扫描二维码,即可将内测应用安装至手机等设备中进行测试

配置

  1. 授权及开启权限

通过Github账号授权Travis进行登录。在Travis的Settings中开启repositories的授权开关

  1. 在工程根目录下添加 .travis.yml文件

Travis-CI 本身提供基本的构建和支持语言,同时开发者可以通过.travis.yml文件设置自己的构建操作,同时需要遵从 Travis-CI 自己规定的构建生命周期。具体可参Travis官网介绍

3.获取蒲公英的token用于发布项目

蒲公英的 API_KEY 可以通过这里查看:https://www.pgyer.com/account/api

4.配置基础的模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
language: android        #语言说明
dist: trusty
jdk: oraclejdk8 #jdk版本
sudo: required #权限要求
env: #环境变量
global:
- ANDROID_BUILD_TOOLS=29.0.1
- ADB_INSTALL_TIMEOUT=5 # minutes
android: #Android 环境要求
components:
- tools
- platform-tools
- build-tools-$ANDROID_BUILD_TOOLS
- android-29
- android-21
- extra-google-m2repository
- extra-android-m2repository # 配置design 库
- extra-android-support
- extra-google-google_play_services
- addon-google_apis-google-19 # 配置google play services
- sys-img-armeabi-v7a-android-29
- sys-img-armeabi-v7a-android-21
licenses: #内容许可添加
- android-sdk-preview-license-.+
- android-sdk-license-.+
- google-gdk-license-.+

5.执行对应的代码检查、单元测试、真机测试

1
2
3
4
5
6
7
8
9
10
11
before_script:
##执行代码规范扫描
- ./gradlew apm:lint
##执行Demo测试脚本
- ./gradlew apm:test
#执行测试demo的测试
##执行代码规范扫描
- ./gradlew lint
##执行Demo测试脚本
- ./gradlew test
- ./gradlew connectedAndroidTest

6.构建发布

1
2
3
4
5
6
7
script:
#构建版本
- ./gradlew assembleRelease
after_script:
#发布蒲公英
- set -e
- $TRAVIS_BUILD_DIR/pgyer_upload.sh "${TRAVIS_BUILD_DIR}/app/build/outputs/apk/release/app-release-unsigned.apk" 1ffafb3680dc6131e41428163082c76a

填坑

1.模拟器启动失败(Error:Target id is not vaild.Use ‘android list targets’ to get the target ids)

规定的模拟器 android 版本需要在 .travis.yml android 部分声明到相关的版本,并且需要添加对应的配置。

1
2
3
4
before_install:
- yes | sdkmanager "platforms;android-29"
- yes | sdkmanager "platforms;android-21"
- echo yes | android update sdk --all --filter sys-img-armeabi-v7a-android-21 --no-ui --force > /dev/null

2.NDK支持

如果项目中使用cmake,需要添加对应的参数配置。

1
2
3
4
5
6
7
before_install:
- echo y | sdkmanager "ndk-bundle"
- echo y | sdkmanager "ndk;20.1.5948944"
- echo y | sdkmanager "cmake;3.10.2.4988404"
before_script:
- export ANDROID_NDK_ROOT=$ANDROID_HOME/ndk-bundle
- export ANDROID_NDK_HOME=$ANDROID_NDK_ROOT

关于

欢迎关注我的个人公众号

微信搜索:一码一浮生,或者搜索公众号ID:life2code