搭建基于TeamCity的持續(xù)集成服務(wù)

第一步 安裝Linux(Manjaro)用于承載服務(wù)

  1. 安裝操作系統(tǒng)
    Manjaro安裝相對簡單,在官網(wǎng)下載對應(yīng)的鏡像文件(推薦下載 GNOME 版), 然后將鏡像寫入U盤作為啟動盤

    寫入完成后將電腦啟動項選擇為U盤, 然后傻瓜式安裝即可.

  2. 初始化與安裝必要工具
    在終端中依次執(zhí)行以下命令:
    備注: 為了方便, 后續(xù)編輯文件均使用較為簡單的 nano , 在 nano 中編輯完畢后, 可以使用 Ctrl + O 快捷鍵保存, 使用 Ctrl + X 退出 nano .

    # 更新鏡像排名
    sudo pacman-mirrors -i -c China -m rank 
    # 更新數(shù)據(jù)源
    sudo pacman -Syy 
    
    # 打開文件添加配置
    sudo nano /etc/pacman.conf 
    # 在末尾追加以下內(nèi)容
    [archlinuxcn]
    SigLevel = Optional TrustedOnly
    Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
    # 導(dǎo)入GPG Key
    sudo pacman -Syy 
    sudo pacman -S archlinuxcn-keyring
    
    # 安裝ssh并設(shè)置開機啟動
    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
    # 加入如下內(nèi)容
    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官網(wǎng) 下載最新的 JDK 包, 務(wù)必下載 x64 版本的
    • 終端執(zhí)行命令 sudo tar -zxvf 壓縮包路徑 -C /opt/ , 將下載的壓縮包解壓到 /opt/ 目錄,
    • 終端執(zhí)行命令 sudo nano /etc/profile , 在 /etc/profile 末尾追加以下內(nèi)容:
      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
      
    • 執(zhí)行 source /etc/profile 更新
  4. 配置 Android 編譯環(huán)境
    因為需要在當(dāng)前環(huán)境編譯 Android 項目,所以需要把 Android 編譯環(huán)境搭建起來, 同時最關(guān)鍵的是能夠下載/更新 AndroidSDK( & NDK) , 以下有兩種方案提供給大家:

    • 推薦方案(優(yōu)點: 可以直接通過ssh連接編譯機下載/更新, 不用每次都在編譯機旁邊蹲著~)
      使用 Android Command Line Tools 維護SDK( & NDK)

      • AndroidStudio 官網(wǎng), 找到 Command line tools only 標簽, 下載對應(yīng)的 linux 平臺工具
      • 下載完畢后, 創(chuàng)建 SDK 存放目錄(例如: /home/user/Android/Sdk ), 將工具中的內(nèi)容解壓到該目錄的 /cmdline-tools/latest/ 中
      • 執(zhí)行命令 sudo nano /etc/profile , 將以下目錄在 /etc/profile 末尾追加以下內(nèi)容:
        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 命令更新
      • 終端執(zhí)行命令 sdkmanager --sdk_root=$ANDROID_HOME --licenses 命令初始化工具, 對后續(xù)所有許可都輸入 y + Enter 同意
      • SDK命令行工具的使用說明請參考 官方說明
    • 棄用方案(原因: 編譯機搭建完畢后基本不會直接操作它, 圖形界面基本沒用)
      使用 AndroidStudio 維護

      • 下載官方的AndroidStudio AndroidStudio官網(wǎng)
      • 下載后解壓文件, 執(zhí)行 ./android_studio/bin/studio.sh 即可開始安裝, 全程圖形界面操作
      • 安裝完畢后啟動, 通過右下角的 Configure > SDK Manager 進入管理器, 下載常用的SDK即可, 同時留意對應(yīng)的AndroidSDK目錄位置




第二步 在 Linux 中配置 TeamCity 服務(wù)端

選型初期考慮了 TeamCity 與 Jenkins 兩個自動構(gòu)建平臺,綜合對比之下,因為 TeamCity 為 JetBrains 出品,跟 AndroidStudio 是一家,配置相對簡單, 自帶郵件通知功能, 所以選擇了 TeamCity 作為構(gòu)建平臺.

  1. 安裝外部數(shù)據(jù)庫
    按照TeamCity推薦, 我們使用了外部數(shù)據(jù)庫存儲數(shù)據(jù)( postgreSQL )

    • 執(zhí)行命令 sudo pacman -S postgresql 安裝
    • 切換到數(shù)據(jù)庫管理員賬戶 sudo -i -u postgres
    • 以 postgres 用戶的身份執(zhí)行初始化命令 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
    • 執(zhí)行命令 exit 退出 postgres 用戶
    • 執(zhí)行命令 sudo systemctl start postgresql 命令啟動數(shù)據(jù)庫服務(wù)
    • 執(zhí)行命令 psql 進入數(shù)據(jù)庫編輯模式
    • 執(zhí)行命令 CREATE USER user WITH PASSWORD 'password'; 創(chuàng)建一個用戶, 請將命令中的 userpassword 替換為賬號和密碼
    • 執(zhí)行命令 quit 退出編輯模式
    • 執(zhí)行命令 sudo -i -u postgres 再次切換到數(shù)據(jù)庫管理員賬戶
    • 定位到 postgres 用戶的 ~/data/pg_hba.conf 文件, 將文件靠后位置的以下內(nèi)容
      local all all trust
      更改為
      local all all md5
    • 執(zhí)行命令 exit 退出 postgres 用戶
    • 執(zhí)行命令 sudo systemctl restart postgresql 重啟數(shù)據(jù)庫服務(wù)
    • 執(zhí)行命令 sudo systemctl enable postgresql 設(shè)置開機啟動數(shù)據(jù)庫服務(wù)
  2. 安裝TeamCity

    • 官網(wǎng) 下載對應(yīng)服務(wù)端包
    • 將下載的壓縮包解壓至 /usr/local/program/teamcity (需要創(chuàng)建對應(yīng)目錄)
    • 在解壓目錄中執(zhí)行 sudo ./bin/runAll.sh start 啟動服務(wù)
    • 服務(wù)成功啟動后, 在瀏覽器訪問 http://localhost:8111 進入 TeamCity 管理端
    • 初始化時配置數(shù)據(jù)庫為 postgreSQL ,并配置相關(guān)項
    • 首次登陸時可以創(chuàng)建 TeamCity 管理員賬戶, 請務(wù)必 記住管理員密碼 !!
    • 配置 TeamCity 服務(wù)開機啟動
      /etc/systemd/system/ 中添加啟動服務(wù)文件 teamcity.service , 在文件中添加如下內(nèi)容:
      [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_HOME避诽、ANDROID_HOMEANDROID_SDK_ROOT 等環(huán)境變量, 需要自行填寫正確的絕對路徑
    • 執(zhí)行 sudo systemctl daemon-reload 刷新服務(wù)列表, 再調(diào)用 sudo systemctl enable teamcity.service 配置開機啟動.

結(jié)語

至此 TeamCity 服務(wù)已經(jīng)安裝完畢, 可以愉快的使用啦, 如果搭建過程中遇到什么問題, 可以留言, 我會盡可能回復(fù)的~
如果上述步驟有什么欠妥的地方, 也請評論告知, 以免誤導(dǎo)他人~
后續(xù)可能會更新一些 TeamCity 的使用說明, 歡迎持續(xù)關(guān)注~


以上.





最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挡逼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子渐白,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異析珊,居然都是意外死亡,警方通過查閱死者的電腦和手機蔑穴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門忠寻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人澎剥,你說我怎么就攤上這事锡溯「嫌撸” “怎么了哑姚?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長芜茵。 經(jīng)常有香客問我叙量,道長,這世上最難降的妖魔是什么九串? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任绞佩,我火速辦了婚禮寺鸥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘品山。我一直安慰自己胆建,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布肘交。 她就那樣靜靜地躺著笆载,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涯呻。 梳的紋絲不亂的頭發(fā)上凉驻,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音复罐,去河邊找鬼涝登。 笑死,一個胖子當(dāng)著我的面吹牛效诅,可吹牛的內(nèi)容都是我干的胀滚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼乱投,長吁一口氣:“原來是場噩夢啊……” “哼蛛淋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起篡腌,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤褐荷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后嘹悼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叛甫,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年杨伙,在試婚紗的時候發(fā)現(xiàn)自己被綠了其监。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡限匣,死狀恐怖抖苦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情米死,我是刑警寧澤锌历,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站峦筒,受9級特大地震影響究西,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜物喷,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一卤材、第九天 我趴在偏房一處隱蔽的房頂上張望遮斥。 院中可真熱鬧,春花似錦扇丛、人聲如沸术吗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽藐翎。三九已至,卻和暖如春实幕,著一層夾襖步出監(jiān)牢的瞬間吝镣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工昆庇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留末贾,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓整吆,卻偏偏與公主長得像拱撵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子表蝙,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354