使用gitlab和gitlab-runner實現項目多服務器自動同步


使用gitlab和gitlab-runner實現項目多服務器自動同步

原文https://blog.csdn.net/weixin_40660335/article/details/78552094

非root用戶安裝: https://www.cnblogs.com/ws17345067708/p/10492031.html

本人創建了4台ubuntu(16.04.3 LTS)虛擬機,其中一台單獨作為gitlab服務器,其余的作為server服務器

一. 首先部署一台gitlab服務器, 以ubuntu系統為例(其他系統可參考此鏈接

1. 安裝並配置必要的依賴關系
如果你想使用 Postfix 發送郵件,請在安裝過程中根據提示選擇 ‘Internet Site’。 你也可以用 Sendmail 或者 配置一個自定義的 SMTP 服務 並 把它作為一個 SMTP 服務器。
sudo apt-get install -y curl openssh-server ca-certificates 
  • 1
  • 2
sudo apt-get install -y postfix 
  • 1
  • 2
2.添加 GitLab 鏡像源並安裝
curl -sS http://packages.gitlab.com.cn/install/gitlab-ce/script.deb.sh | sudo bash sudo apt-get install gitlab-ce
  • 1
  • 2
如果沒有外網 可以先下載對應的安裝包然后再(.deb是ubuntu的安裝包格式)
dpkg -i gitlab-ce-XXX.deb 
  • 1
  • 2
3.配置並啟動 GitLab
sudo gitlab-ctl reconfigure 
  • 1
  • 2
4.通過瀏覽器訪問上一步配置的域名
第一次訪問 GitLab,系統會重定向 url 到重置密碼的頁面,你需要輸入初始化管理員賬號的密碼。 設置完成后,系統會重定向到登錄界面,你就可以使用剛才輸入的密碼登錄系統了。
系統默認的管理員賬號為 root, 登錄系統后,你可以修改管理員賬號為自己喜歡的賬號。
可以在 /var/opt/gitlab/nginx/conf中的gitlab-http.conf的配置指定的域名給gitlab服務器
在 /etc/gitlab/gitlab.rb文件中修改gitlab的域名(此處的修改為git@www.xxx.com的地址 建議和gitlab-http.conf中的server 一致)
external_url 'http://www.xxx.com' 
  • 1
  • 2
可使用
gitlab-ctl stop|start|restart #管理gitlab服務器 
  • 1
  • 2
至此gitlab服務器已搭建完畢

二. 搭建gitlab-runner(以ubuntu 16.04.3 LTS)為例

因gitlab占用內存過高,外加本人電腦配置只有8G內存,所以就將gitlab-runner安裝在了其中一台服務器中
1.添加GitLab的官方存儲庫:
curl -L
https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash 
  • 1
  • 2
  • 3
2.安裝gitlab-runner(默認最新版),也可安裝指定版本
sudo apt-get install gitlab-runner #默認最新版 sudo apt-get install gitlab-runner=10.0.0 #安裝指定版本 
  • 1
  • 2
  • 3
3.安裝完成后就該注冊gitlab-runner(此處可以理解為拿到營業執照)
1)開啟注冊
sudo gitlab-runner register 
  • 1
  • 2
2)輸入gitlab服務器的URL,獲取gitlab服務器地址和令牌(token),使用root賬號登錄的你gitlab服務器,然后訪問 http://xxx.xxx.com/admin/runners,其中xxx.xxx.com是你的gitlab服務器地址,進入頁面后你將會看到

這里寫圖片描述

第一個紅色的部分就是 url
第二個紅色的部分就是token(令牌)
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com ) https://gitlab.com #此處填寫的第一條紅色的部分 
  • 1
  • 2
  • 3
3)輸入您獲得的注冊Runner的令牌:
Please enter the gitlab-ci token for this runner xxx #此處XXX填入第二條獲取的token
  • 1
  • 2
4)輸入跑步者的描述,你可以稍后在GitLab的UI中進行更改:
Please enter the gitlab-ci description for this runner [hostame] my-runner #隨意 可在gitlab服務器UI中進行修改 
  • 1
  • 2
  • 3
5)輸入與Runner關聯的標簽,稍后可以在GitLab的用戶界面中進行更改:
Please enter the gitlab-ci tags for this runner (comma separated): my-tag,another-tag #隨意 可在gitlab服務器UI中進行修改 
  • 1
  • 2
  • 3
6)選擇Runner是否應該選擇沒有標簽的作業,可以稍后在GitLab的UI中進行更改(默認為false):
Whether to run untagged jobs [true/false]: [false]: true
  • 1
  • 2
7)選擇是否將Runner鎖定到當前項目,稍后可以在GitLab的UI中進行更改。Runner特定時有用(默認為true):
Whether to lock Runner to current project [true/false]: [true]: true
  • 1
  • 2
8)輸入Runner執行者:
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell: shell #本人選擇的是shell
  • 1
  • 2
至此 gitlab-runner配置完成

三.配置服務器之間的ssh登錄

1.本人三台服務器的ip分別是:
192.168.56.101,
192.168.56.102,
192.168.56.104
gitlab服務器的ip是:
192.168.56.103
gitlab-runner安裝的服務器為102(后面用102來代替對應的服務器)
因為gitlab-runner部署的服務器是102所以要建立 gitlab-runner用戶與101,102和104之間的root ssh免密碼登錄
為什么是gitlab-runner用戶呢 因為執行同步代碼的腳本是gitlab-runner用戶
1.先在102服務器切換gitlab-runner用戶
su gitlab-runner
  • 1
2.使用ssh-keygen -t rsa生成ssh的公鑰和私鑰
ssh-keygen -t rsa #回車之后3次回車即可 
  • 1
  • 2
你就會在 /home/gitlab-runner/.ssh目錄下發現2個文件
id_rsa.pub 和id_rsa
3.然后再切換到root用戶,重復上述操作,這樣 root用戶的ssh的公鑰和私鑰也生成了,接下來就是將gitlab-runner用戶的公鑰寫入root用戶的authorized_keys文件中
cat /home/gitlab-runner/.ssh/id_rsa.pub >>/root/.ssh/authorized_keys
  • 1
4.重啟ssh service ssh restart
5.先切換到gitlab-runner用戶 su gitlab-runnner
6.使用ssh登錄root用戶 ssh root@192.168.56.102
你會發現你已經切換到了root用戶了
7.101和104的服務器的root的ssh同理,只需要將102服務器的中/home/gitlab-runner/.ssh/id_rsa.pub的內容分別寫入 101和104/root/.ssh/authorized_keys中即可
重啟101和104服務器的ssh服務service ssh restart
然后就可以使用102的gitlab用戶
ssh root@192.168.56.104 ssh root@192.168.56.101
  • 1
  • 2
注意 第一次連接會提示yes/no, 輸入yes即可

四.創建項目,並且創建一個.gitlab-ci.yml文件

例如
stages:
  - build_product build_product: stage: build_product only: - master script: - /www/auto.sh
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
其中的 auto.sh是shell腳本,用來ssh登錄服務器然后實現項目代碼同步
示例代碼如下
#!/bin/bash ssh root@192.168.56.102 << ssh102 cd /www/haochi git pull origin master ssh102 #101 ssh root@192.168.56.101 << ssh101 cd /www/haochi git pull origin master; ssh101 #104 ssh root@192.168.56.104 << ssh104 cd /www/haochi git pull origin master; ssh104
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
至此 一套完整的gitlab+gitlab-runner自動化項目項目部署就完成啦

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM