搭建基于TeamCity的持续集成服务

第一步 安装Linux(Manjaro)用于承载服务

  1. 安装操作系统
    Manjaro安装相对简单,在官网下载对应的镜像文件(推荐下载 GNOME 版), 然后将镜像写入U盘作为启动盘

    • Windows可以使用 UltraISO 、rufus 等工具
    • Linux/MacOS可以使用dd命令,可参考: 桃月十三筱 -

    写入完成后将电脑启动项选择为U盘, 然后傻瓜式安装即可.

  2. 初始化与安装必要工具
    在终端中依次执行以下命令:
    备注: 为了方便, 后续编辑文件均使用较为简单的 nano , 在 nano 中编辑完毕后, 可以使用 Ctrl + O 快捷键保存, 使用 Ctrl + X 退出 nano .

    # 更新镜像排名
    sudo pacman-mirrors -i -c China -m rank 
    # 更新数据源
    sudo pacman -Syy 
    
    # 打开文件添加配置
    sudo nano /etc/pacman.conf 
    # 在末尾追加以下内容
    [archlinuxcn]
    SigLevel = Optional TrustedOnly
    Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
    # 导入GPG Key
    sudo pacman -Syy 
    sudo pacman -S archlinuxcn-keyring
    
    # 安装ssh并设置开机启动
    sudo pacman -Syy openssh
    sudo systemctl start sshd.service
    sudo systemctl enable sshd.service
    
    # 然后可以选择性安装部分软件
    # 安装Chrome
    sudo pacman -S google-chrome 
    
    # 安装Google拼音输入法
    sudo pacman -S fcitx-im #默认全部安装
    sudo pacman -S fcitx-configtool
    sudo pacman -S fcitx-googlepinyin
    
    # 添加输入法配置
    sudo nano ~/.xprofile
    # 加入如下内容
    export GTK_IM_MODULE=fcitx
    export QT_IM_MODULE=fcitx
    export XMODIFIERS="@im=fcitx"
    

    以上操作参考自: Ferhat_ - / 八稚女 - CSDN 感谢!

  3. 移除 OpenJDK, 安装 OracleJDK

    • 移除 OpenJDK
      sudo pacman -R jdk8-openjdk
      sudo pacman -R jre8-openjdk
      sudo pacman -R jre8-openjdk-headless
      
    • 从 Oracle官网 下载最新的 JDK 包, 务必下载 x64 版本的
    • 终端执行命令 sudo tar -zxvf 压缩包路径 -C /opt/ , 将下载的压缩包解压到 /opt/ 目录,
    • 终端执行命令 sudo nano /etc/profile , 在 /etc/profile 末尾追加以下内容:
      export JAVA_HOME=JDK解压路径(例如:/opt/jdk1.8.0_251)
      
      export PATH=$JAVA_HOME/bin:$PATH
      export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
      
    • 执行 source /etc/profile 更新
  4. 配置 Android 编译环境
    因为需要在当前环境编译 Android 项目,所以需要把 Android 编译环境搭建起来, 同时最关键的是能够下载/更新 AndroidSDK( & NDK) , 以下有两种方案提供给大家:

    • 推荐方案(优点: 可以直接通过ssh连接编译机下载/更新, 不用每次都在编译机旁边蹲着~)
      使用 Android Command Line Tools 维护SDK( & NDK)

      • 在 AndroidStudio 官网, 找到 Command line tools only 标签, 下载对应的 linux 平台工具
      • 下载完毕后, 创建 SDK 存放目录(例如: /home/user/Android/Sdk ), 将工具中的内容解压到该目录的 /cmdline-tools/latest/ 中
      • 执行命令 sudo nano /etc/profile , 将以下目录在 /etc/profile 末尾追加以下内容:
        export ANDROID_HOME=/home/user/Android/Sdk
        export ANDROID_SDK_ROOT=$ANDROID_HOME
        export ANDROID_PLATFORM_TOOLS=$ANDROID_HOME/platform-tools
        export ANDROID_SDK_TOOLS=$ANDROID_HOME/cmdline-tools/latest
        
        export PATH=$PATH:$ANDROID_SDK_TOOLS/bin
        
      • 声明完毕使用 source /etc/profile 命令更新
      • 终端执行命令 sdkmanager --sdk_root=$ANDROID_HOME --licenses 命令初始化工具, 对后续所有许可都输入 y + Enter 同意
      • SDK命令行工具的使用说明请参考 官方说明
    • 弃用方案(原因: 编译机搭建完毕后基本不会直接操作它, 图形界面基本没用)
      使用 AndroidStudio 维护

      • 下载官方的AndroidStudio AndroidStudio官网
      • 下载后解压文件, 执行 ./android_studio/bin/studio.sh 即可开始安装, 全程图形界面操作
      • 安装完毕后启动, 通过右下角的 Configure > SDK Manager 进入管理器, 下载常用的SDK即可, 同时留意对应的AndroidSDK目录位置




第二步 在 Linux 中配置 TeamCity 服务端

选型初期考虑了 TeamCity 与 Jenkins 两个自动构建平台,综合对比之下,因为 TeamCity 为 JetBrains 出品,跟 AndroidStudio 是一家,配置相对简单, 自带邮件通知功能, 所以选择了 TeamCity 作为构建平台.

  1. 安装外部数据库
    按照TeamCity推荐, 我们使用了外部数据库存储数据( postgreSQL )

    • 执行命令 sudo pacman -S postgresql 安装
    • 切换到数据库管理员账户 sudo -i -u postgres
    • 以 postgres 用户的身份执行初始化命令 initdb --locale en_US.UTF-8 -D '/var/lib/postgres/data'~
    • 定位到该用户的 ~/data/postgresql.conf 文件, 参考官方手册的推荐配置进行修改:
      • 修改 shared_buffers = 512MB
      • 修改 max_wal_size = 1500MB
      • 修改 checkpoint_completion_target=0.9
      • 修改 synchronous_commit=off
    • 执行命令 exit 退出 postgres 用户
    • 执行命令 sudo systemctl start postgresql 命令启动数据库服务
    • 执行命令 psql 进入数据库编辑模式
    • 执行命令 CREATE USER user WITH PASSWORD 'password'; 创建一个用户, 请将命令中的 userpassword 替换为账号和密码
    • 执行命令 quit 退出编辑模式
    • 执行命令 sudo -i -u postgres 再次切换到数据库管理员账户
    • 定位到 postgres 用户的 ~/data/pg_hba.conf 文件, 将文件靠后位置的以下内容
      local all all trust
      更改为
      local all all md5
    • 执行命令 exit 退出 postgres 用户
    • 执行命令 sudo systemctl restart postgresql 重启数据库服务
    • 执行命令 sudo systemctl enable postgresql 设置开机启动数据库服务
  2. 安装TeamCity

    • 在 官网 下载对应服务端包
    • 将下载的压缩包解压至 /usr/local/program/teamcity (需要创建对应目录)
    • 在解压目录中执行 sudo ./bin/runAll.sh start 启动服务
    • 服务成功启动后, 在浏览器访问 http://localhost:8111 进入 TeamCity 管理端
    • 初始化时配置数据库为 postgreSQL ,并配置相关项
    • 首次登陆时可以创建 TeamCity 管理员账户, 请务必 记住管理员密码 !!
    • 配置 TeamCity 服务开机启动
      /etc/systemd/system/ 中添加启动服务文件 teamcity.service , 在文件中添加如下内容:
      [Unit]
      Description=start teamcity service
      After=network.target
      
      [Service]
      Type=forking
      Environment=JAVA_HOME=/opt/jdk1.8.0_251
      Environment=ANDROID_HOME=/home/user/Android/Sdk
      Environment=ANDROID_SDK_ROOT=/home/user/Android/Sdk
      ExecStart=/usr/local/program/teamcity/bin/runAll.sh start
      ExecReload=/usr/local/program/teamcity/bin/runAll.sh restart
      ExecStop=/usr/local/program/teamcity/bin/runAll.sh stop
      
      [Install]
      WantedBy=multi-user.target
      
      注意: 其中的 JAVA_HOMEANDROID_HOMEANDROID_SDK_ROOT 等环境变量, 需要自行填写正确的绝对路径
    • 执行 sudo systemctl daemon-reload 刷新服务列表, 再调用 sudo systemctl enable teamcity.service 配置开机启动.

结语

至此 TeamCity 服务已经安装完毕, 可以愉快的使用啦, 如果搭建过程中遇到什么问题, 可以留言, 我会尽可能回复的~
如果上述步骤有什么欠妥的地方, 也请评论告知, 以免误导他人~
后续可能会更新一些 TeamCity 的使用说明, 欢迎持续关注~


以上.





你可能感兴趣的:(搭建基于TeamCity的持续集成服务)