如何快速为你的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.配置基础的模板

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.执行对应的代码检查、单元测试、真机测试

before_script:
  ##执行代码规范扫描
  - ./gradlew apm:lint
    ##执行Demo测试脚本
  - ./gradlew apm:test
  #执行测试demo的测试
  ##执行代码规范扫描
  - ./gradlew lint
  ##执行Demo测试脚本
  - ./gradlew test
  - ./gradlew connectedAndroidTest

6.构建发布

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 部分声明到相关的版本,并且需要添加对应的配置。

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,需要添加对应的参数配置。

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

示例

1.项目

项目地址: https://github.com/junbin1011/SmartAPM

Travis构建:

发布地址: https://www.pgyer.com/3Dkk

2.配置文件.travis.yaml

请参考 SmartAPM/.travis.yml

关于

欢迎关注我的个人公众号

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