Travis CI研究后感悟

539 阅读4分钟

本篇文章记录我学习Travis CI的无脑采坑之旅,由于一开始不理解它的工作原理,而导致由于一个很低级的原因导致我一直编译失败,但一直找不到原因。但也由于一直失败,我查看了很多使用Travis CI的项目,也查看了很多文章,在此我记录一下自己的集成过程。

一开始我是不知道有Travis CI这种持续集成工具的,但我知道可以实现github一次提交一次打包上线,全自动实现。因为在上家公司我们组长集成过,我们只是坐享其成,所以当时完全不知道是如何操作的。后来有稍微摸索过fastlane,大体知道怎么用了之后,心里一直有一个疙瘩,不知道如何实现跟github绑定,正巧最近在看flutter的学习文章,里面有一篇讲到了如何持续集成,Travis CI这个词就进入了我的脑海,最近正好也有时间,就决定自己搞个demo尝试一下。

我先简单描述一下我的错误集成示范,最初我用之前项目中的脚本,改一下项目名,改一下key等参数,以为可以直接跑起来,但因为我们之前项目脚本对于初学者过于繁杂,导致一直不成功,还因为钥匙串的问题,把我本地的钥匙串给冲突了,这里也是引以为戒。后来找到Travis CI官方文档,对于iOS的集成还是过于简单,没有详细说明如何集成证书,如何打包上线。后来无意间翻到了蒲公英的持续集成文档,很全面 www.pgyer.com/doc/view/tr…,我后来也是基于这个文档来实现的自动打包上传。现在发现蒲公英确实比Fir做的更加全面。

按照蒲公英的文档配置下来,正常情况应该是可以上线了,但是不知为啥,我的报错,捣鼓半天不得法,查遍资料没有解决办法,但是在查阅资料过程中,我理解了一些事情。

1、Travis CI是远程帮你打包上线,你写的一系列脚本是给远程跑的,而不是在你本地电脑跑。

2、Travis CI是与Github绑定,可以实现你的代码每次提交,它就跑你给它的脚本,如果脚本是单元测试,他就跑单元测试,如果脚本是打包上架,他就跑打包上架。

3、Travis CI跑的代码就是你github上面的代码,所以理解到这里,就能找到我上面的error信息,我找到我仓库里面的代码,真的没有info.plist文件,无语,我也不知道为啥没有,添加之后,成功build、archive、上传蒲公英。

我这边后来整合了fastlane,把里面的build.sh脚本换成了执行fastlane脚本,因为我想有时候自己本地跑一下,而且我觉得fastlane更好用一些,后期扩展更方便

default_platform(:ios)
platform :ios do
  desc "pgy archive"
  lane :pgy do
    xcode_select("/Applications/Xcode.app")
    gym(xcargs: "-UseNewBuildSystem=YES",
        scheme: "TravisTest",
	project: "TravisTest.xcodeproj",
	export_method: "ad-hoc",
      	export_options: {
          compileBitcode: false,
        }  
     )
    # pgyer(api_key: "***", user_key: "***",password: "123456", install_type: "2")

    firim(firim_api_token:"***")
  end
end

执行fir后,我发现应用没有设备列表,这就导致其他手机不能下载,蒲公英可以正确识别设备列表,有知道的同学可以告诉我一下,.travis.yml文件我基本就是照着蒲公英文档来的,只是后来把build.sh改成了执行fastlane脚本

language: swift
osx_image: xcode11.1
env:
  global:
  - APPNAME=TravisTest
  - 'DEVELOPER_NAME="iPhone Distribution: songyu zhu (5B974QYD5M)"'
  - PROFILE_NAME=tra-adhoc
  - secure: ktR7n3iEHcUduHfDCu65xs4o0823zcDo6w2JM1pbC1FDfLG6TkrFjWTkO9ONOtKF2azkWH1QDbfx3H5+imQz6uDCETxf6jV8NbfSIC6LUoaSsWx8Y/3Ld7grSLfJQ5PA6MIYfkV11mqj66smjLa5NFrirIrF8/5Ii9f/YVZhRWM6eIjHKhaLQ19rsBCSFDGS0U0eLRCjujypfwtKjBR9ZPYfU9rbOYFZrR6a2Lvqey88tPc7K8cLSCSMSzkrOy5Y6zmB1QCeme/Ql3/Pvz+4RW5Ev2FGbT1ffgfrzFXuO0jacKvp+IFOQy9sK2Oqg4apUU10o4Yq7FEYDnTP6X3+LCJ8j0Ide1DPnAGV12140YIYVyCS3DxnqkXhEecZPKePSS98kr2svsP4Jw4KfgmsP8WZBjFvSJQiKH3sISQo3cgbdm2Jsq2xVilqd8TYJiUXLA1xQlHfZ5Swbrj/GAR/vgH7o2EknnNg6fYwiSInyRaMIW2aZLBDJd/P5o0mqMaAzdIIwLpxc1EXHXYvIc2vYrZzp+PeGaKBg5PDcIYWxEX9bwYUxAM8laDHOSB3VhUaSUChSYd5mikzMRlEWZaAfc4T/JqXe0p7270WOeVZh7G8aYD+GRyhPRmu2m/xr3/rsHEx//BfnLTPf/kzRXC+c+d3WHt0wirVPik81XhwIpc=
before_install:
- openssl aes-256-cbc -K $encrypted_038e56de2037_key -iv $encrypted_038e56de2037_iv
  -in certificates.tar.enc -out certificates.tar -d
- wget -c https://raw.githubusercontent.com/Pgyer/TravisFile/master/pgyer_upload.sh
  -O pgyer_upload.s
- tar xvf certificates.tar -C ./travis/certificates
- chmod +x travis/scripts/add-key.sh
- chmod +x travis/scripts/build.sh
- chmod +x travis/scripts/upload.sh
- chmod +x travis/scripts/remove-key.sh
before_script:
- "./travis/scripts/add-key.sh"
script:
- "./travis/scripts/build.sh"
#after_success:
#- "./travis/scripts/upload.sh"
after_script:
- "./travis/scripts/remove-key.sh"
#!/usr/bin/env bash

if [[ $TRAVIS_BRANCH == 'master' ]];then
    fastlane pgy
elif [[ $TRAVIS_BRANCH == 'testflight' ]];then
    fastlane test
elif [[ $TRAVIS_BRANCH == 'firtest' ]];then
    fastlane firtest
else
    fastlane fir
fi

最后说一个实现build图标的小技巧,这个也是跟Travis CI的build过程绑定的,它build成功了,你的项目里面就显示build pass小图标,很酷炫,但其实很简单

build小图标就像这样子的

实现方法第一步点击Travis CI的build图标

弹框如下,点击FORMAT,选择markdown模式

复制RESULT链接,粘贴到项目中的README.md中,即可实现build炫酷小图标

github地址:github.com/zhusongyu/T…