我爱编程

TeamCity for Linux 过程整理

2018-03-29  本文已影响0人  WilburLi

概述:公司经历了半年的稳定,半年的扩张,业务流程已趋于完善。 为了进一步提升公司的研发效率,给予研发人员更多的不间断思路,计划上自动化构建工具,替代研发人员打包过程,研发最重要的是什么?思路连贯性,不去做无用功,我们打一次包因为数量较多,一次得占用研发15~20分钟左右 ,一但出什么错误重打 几个小时过去,太坑爹。最终选型TeamCity势在必行。

运行环境:Centos 7 + Android studio 所以 将分两部去整理:
第一步、Android SDK for Linux
第二步、TeamCity for Linux

Android SDK for Linux

因为使用的服务器版本Centos 7,并没有图形化,无法运行android studio(安装时会提示...X11...错误),所以只能安装adnroid sdk 然后使用sdkmanager一点点配置吧

从谷歌官方下载:https://developer.android.com/studio/index.html

仅获取命令行工具 SDK.png

使用unzip解压到/home/目录下,sdkmanager会下载很多东西,要保证磁盘空间够用,TeamCity在安装时也要注意这个问题,如果不够用也有解决办法,趟过坑,后面会介绍。

cd /home
unzip sdk-tools-linux-3859397.zip

再接下来 配置环境变量

vim /etc/profile

添加如下配置

//sdkmanager  
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export PATH=$PATH:/home/android-tools/tools/bin
export PATH=$PATH:/home/android-tools/platform-tools

//ANDROID_HOME
export ANDROID_HOME=/home/android-tools
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools 

在任意地方输入 sdkmanager --list

Installed packages:
  Path                              | Version      | Description                       | Location                         
  -------                           | -------      | -------                           | -------                          
  build-tools;27.0.2                | 27.0.2       | Android SDK Build-Tools 27.0.2    | build-tools/27.0.2/              
  build-tools;27.0.3                | 27.0.3       | Android SDK Build-Tools 27.0.3    | build-tools/27.0.3/              
  cmake;3.6.4111459                 | 3.6.4111459  | CMake 3.6.4111459                 | cmake/3.6.4111459/               
  extras;android;m2repository       | 47.0.0       | Android Support Repository        | extras/android/m2repository/     
  extras;google;m2repository        | 58           | Google Repository                 | extras/google/m2repository/      
  ndk-bundle                        | 15.2.4203891 | NDK                               | ndk-bundle/                      
  platform-tools                    | 27.0.1       | Android SDK Platform-Tools        | platform-tools/                      
  platforms;android-23              | 3            | Android SDK Platform 23           | platforms/android-23/            
  platforms;android-24              | 2            | Android SDK Platform 24           | platforms/android-24/            
  platforms;android-25              | 3            | Android SDK Platform 25           | platforms/android-25/            
  platforms;android-26              | 2            | Android SDK Platform 26           | platforms/android-26/            
  platforms;android-27              | 1            | Android SDK Platform 27           | platforms/android-27/            
  tools                             | 26.0.1       | Android SDK Tools 26.0.1          | tools/                           

Available Packages:
  Path                              | Version      | Description                      
  -------                           | -------      | -------                          
  add-ons;addon-g..._apis-google-15 | 3            | Google APIs                      
  add-ons;addon-g..._apis-google-16 | 4            | Google APIs                      
  add-ons;addon-g..._apis-google-17 | 4            | Google APIs                      
............
  add-ons;addon-g..._apis-google-23 | 1            | Google APIs                      
  add-ons;addon-g..._apis-google-24 | 1            | Google APIs                      
  add-ons;addon-g...e_gdk-google-19 | 11           | Glass Development Kit Preview    
  build-tools;19.1.0                | 19.1.0       | Android SDK Build-Tools 19.1     
  build-tools;20.0.0                | 20.0.0       | Android SDK Build-Tools 20       
  build-tools;21.1.2                | 21.1.2       | Android SDK Build-Tools 21.1.2   
  build-tools;22.0.1                | 22.0.1       | Android SDK Build-Tools 22.0.1   
  build-tools;23.0.1                | 23.0.1       | Android SDK Build-Tools 23.0.1   
  build-tools;23.0.2                | 23.0.2       | Android SDK Build-Tools 23.0.2   
  build-tools;23.0.3                | 23.0.3       | Android SDK Build-Tools 23.0.3   
  build-tools;24.0.0                | 24.0.0       | Android SDK Build-Tools 24       
  build-tools;24.0.1                | 24.0.1       | Android SDK Build-Tools 24.0.1   
  build-tools;24.0.2                | 24.0.2       | Android SDK Build-Tools 24.0.2   
  build-tools;24.0.3                | 24.0.3       | Android SDK Build-Tools 24.0.3   
............
system-images;a...ult;armeabi-v7a | 4            | ARM EABI v7a System Image        
  system-images;a...16;default;mips | 1            | MIPS System Image                
  system-images;a...-16;default;x86 | 5            | Intel x86 Atom System Image      
  system-images;a...google_apis;x86 | 5            | Google APIs Intel x86 Atom Sys...
............
platforms;android-17              | 3            | Android SDK Platform 17          
  platforms;android-18              | 3            | Android SDK Platform 18          
  platforms;android-19              | 4            | Android SDK Platform 19          
  platforms;android-20              | 2            | Android SDK Platform 20      
............
 extras;m2reposi...er;1.0.0-alpha5 | 1            | Solver for ConstraintLayout 1....
  extras;m2reposi...er;1.0.0-alpha6 | 1            | Solver for ConstraintLayout 1....
  extras;m2reposi...er;1.0.0-alpha7 | 1            | Solver for ConstraintLayout 1....


Available Updates:
  ID         | Installed    | Available   
  -------    | -------      | -------     
  ndk-bundle | 15.2.4203891 | 16.1.4479499
  tools      | 26.0.1       | 26.1.1  

这里 其实就是我们在android studio里常看到的 sdkmanager工具,总分三大块:Installed packages(已安装)、Available Packages(所有列表)、Available Updates(可升级)

需要根据自己项目的提前下载,命令如下:

//下载安装 build-tools;27.0.3 
[root@localhost /]# sdkmanager "build-tools;27.0.3"

安装全后 teamcity编译时才不会出问题,提前看好你工程所需的环境吧,后期会省事些,项目多 这里下载的东西就会多,所以之前有建议过这工具一定要下载在磁盘空间足够多的地方,后继到是可以再换地方,不过 要记得再次修改etc/profile环境变量。
至于ADB 用的不多,这里可以不用调式。

接下来开始安装Teamcity

TeamCity for Linux

安装

TeamCity 向导

项目配置

注意:也可以不取消Gradle Wrapper,系统会自动寻找 项目根目录下的 gradle/wrapper/gradle-wrapper.properties文件中的distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip,如果本地没有此包 会自动下载到/root/.gradle/wrapper/dists/目录下,如:/root/.gradle/wrapper/dists/gradle-4.2.1-all/domrskppdhf3wtn5mziw0c2zr/gradle-4.2.1。也可以手动下下载后自解压路径如下:/root/.gradle/wrapper/dists/gradle-4.2.1-all/domrskppdhf3wtn5mziw0c2zr/gradle-4.2.1-all.zip to /root/.gradle/wrapper/dists/gradle-4.2.1-all/domrskppdhf3wtn5mziw0c2zr

编译没问题了 那接下来 就是关于Build后的问题,点击最左侧的 [General Settings] 进入页面

General Settings

这里是两处需要更改

%env.BUILD_START_DATE%-%env.BUILD_START_TIME%-%env.BUILD_VCS_LASTINCLUDED_REVISION%

第一次安装的TeamCity是无法这样输入 需要下插件:TeamCity GroovyPlug 后面说明如果安装插件。

+:**/* => target_directory
-:**/folder1 => target_directory

这里完成后设置就差不多了,项目是可以跑通,如果还有些个性化的设置那就要单独设置了,比如 之前设置过了github URL,需要更改分支 需要点如下图链接


Version Control Setting

我涉及到的几处如下


分支
是否checkout submodules
间隔多久自动checkout out 代码

以上选项 顾名思义.还有很多设置可以选择 用到时 可以再研究 ,现在可以Build Run了

Build运行

运行
如上图显示 代表初步配置成功,正在下载git代码 前面的 #20180329-182458-??? 就是刚才我们设置过的 Build number format 代表 年月日- 时分秒.后面的问号,其实是代表着此次打包所提交的index 以方便识别打出的包对应哪次代码。

而后面的显示的状态内容是可以点进去的 如下图


Run Overview

可以在这里看运行时的日志。如果失败 在这里查找原因后解决即可

最终完成后 在总列表中显示 Success ,在后面的Artifacts中可以下载到打好的包,
app/build/outputs/apk/****.apk

Success

!!!关于Build run 有一处要注意的,builde.gradle一定会编译release 的类型,如果找不到 会报错,影响整个编译的最终结果,所以 即便不会用到release也要找其它type代替

TeamCity插件

关于插件我使用的也不多,不过 在官网看到很多不同功能的插件 貌似很强大
https://plugins.jetbrains.com/teamcity

TeamCity插件

Groovy plug 地址:trunk compatible with TeamCity 2017.1+
点进去 乍一看需要登录 其实可以选择右下角的guest用户登录,省去了注册的麻烦,再进去 还是一个teamcity,想想也对 自家的东西 干嘛要用别人的代码管理。

下载
选最近成功的 Success点进去,选择[Artifacts]
下载

安装完 会提示重启服务,之后就可以使用了,挺方便的

优化

过程当中所用到的Linux命令

最后记录布置过程中所用到的Linux命令:

du -sh *   查看当前目录下各个文件及目录占用空间大小
lsof -n -i4TCP:8081    列出被占用的端口列表
mv  <原目录>  <新目录>
cp  <原目录>  <新目录>
ln -s  <新目录>  <原目录>    快捷指向 如果使用-s选项创建符号连接,则“源文件”可以是文件或者目录。创建硬连接时,则“源文件”参数只能是文件;
find   -name  *launcher*
rm -rf <文件目录>
cat <文件>
tail file (显示文件file的最后10行)
上一篇 下一篇

猜你喜欢

热点阅读