日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gitlab 目录tag_【环境搭建】gitlab-ci(持续集成)

發(fā)布時(shí)間:2024/6/1 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gitlab 目录tag_【环境搭建】gitlab-ci(持续集成) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景

服務(wù)和服務(wù)器開始多起來了,一個(gè)個(gè)搞效率太低,所以準(zhǔn)備用持續(xù)集成來提高效率

原理

gitlab-ci與ci-runner的關(guān)系

push到gitlab之后,觸發(fā)GitLab-CI,GitLab-CI根據(jù)注冊(cè)信息依次讓GitLab-Runner執(zhí)行對(duì)應(yīng)的任務(wù)

步驟

  • Step 0:GitLab-CI是gitlab自帶的,無需額外安裝
  • Step 1:安裝GitLab-Runner
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash # 添加源 sudo apt-get install gitlab-runner # ubuntu
  • Step 2: 注冊(cè)runner,在此之前需要準(zhǔn)備token,根據(jù)如下的官網(wǎng)提示操作(我這里選擇了shared runner,需要管理員權(quán)限)

  • 注冊(cè)成功后長這樣

  • 關(guān)于注冊(cè)runner的tips:
    • 注意 tag可以有多個(gè),各 tag之間用逗號(hào)隔開。如果你使用了多個(gè) tag,那么當(dāng)你想用這個(gè) Runner時(shí),在.gitlab-ci.yml的 tag字段里也必須明確指明這些 tags
    • 如果你選擇Docker作為Runner的executor,你還要選擇默認(rèn)的docker image來運(yùn)行job(當(dāng)然,你也可以在.gitlab-ci.yml里指明你需要用的image)
    • 注冊(cè)完成后你可以在/etc/gitlab-runner里發(fā)現(xiàn)config.toml文件,該文件是Runner的配置文件
  • Step 3:啟動(dòng)runner
    • 直接啟動(dòng):
sudo gitlab-runner run
    • 啟動(dòng)為服務(wù):
sudo gitlab-runner install -n "<service-name>" -u <user-name> sudo gitlab-runner start -n "<service-name>"

user-name就是運(yùn)行該命令的用戶,必須指定,否者會(huì)報(bào)如下的錯(cuò)誤,建議用一個(gè)單獨(dú)的用戶(比如:gitlab-runner)進(jìn)行隔離

啟動(dòng)之后,用service命令check服務(wù)運(yùn)行狀態(tài)

  • Step 4:配置ci任務(wù)
    • 任務(wù):將一個(gè)thrift服務(wù)每次push之后進(jìn)行自動(dòng)部署
    • 編寫:部署腳本
#!/bin/bash if [ $# -ne 2 ]; thenecho "arguments error!<repo-name> and <deploy-path> were required"echo "example $0 gitlab-username/repo-name /deploy/path/"exit 1 elsedeploy_path=$2if [ ! -d "$deploy_path" ]; thenproject_path="git@git.shengtang.ai:"$1".git"git clone $project_path $deploy_pathelsecd $deploy_path && git pullfisupervisorctl restart service-name fi
    • 關(guān)于如何使用supervisor部署服務(wù),可以參看:
CZMan95:【環(huán)境搭建】Supervisor for Linux實(shí)操?zhuanlan.zhihu.com
    • 編寫.gitlab-ci.yml: 在項(xiàng)目的根目錄下添加.gitlab-ci.yml內(nèi)容如下:
stages:- deploy deploy:stage: deployscript:- ~/scripts/gitlab-runner/script.sh gitlab-user/repo-name /deploy/path/only:- master # 只有在mash push的時(shí)候才會(huì)觸發(fā)部署tags:- global # gitlab-runner的tag,可以用來區(qū)分不同機(jī)器上的runner
    • push上去之后就會(huì)自動(dòng)執(zhí)行第一次任務(wù),可以在gitlab的對(duì)應(yīng)項(xiàng)目下的piplines中看到(注意:如果名字寫的不對(duì)的話:如寫成了.gitlab-ci.yaml的話是看不到任務(wù)的,我因?yàn)檫@個(gè)問題找了好久的bug(有的地方說可以用yaml,但是我這里是不可以的))

  • Step 5:多臺(tái)機(jī)器部署
    • 方案一:利用上面提到的tag,進(jìn)行多臺(tái)機(jī)器的部署,但是這里有個(gè)問題是:一旦有bug,所有的機(jī)器都會(huì)同時(shí)掛掉,即便沒有bug,所有機(jī)器同時(shí)restart也是個(gè)問題
    • 方案二(推薦):runner只在一臺(tái)機(jī)器上,其它機(jī)器通過ssh命令進(jìn)行觸發(fā)(需要配置免密登錄),該方法還能自己控制替換的步驟(這對(duì)于需要灰度的系統(tǒng)非常重要)

參考資料

gitlab-runner官網(wǎng):https://docs.gitlab.com/runner/

關(guān)于runner的跟多細(xì)節(jié):https://www.jianshu.com/p/19fe0ce7ecec

總結(jié)

以上是生活随笔為你收集整理的gitlab 目录tag_【环境搭建】gitlab-ci(持续集成)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。