『中級篇』docker之CI/CD持續(xù)集成—GitLab CI服務(wù)器(71)

原創(chuàng)文章,歡迎轉(zhuǎn)載钥弯。轉(zhuǎn)載請注明:轉(zhuǎn)載自IT人故事會竟块,謝謝!
原文鏈接地址:『中級篇』docker之CI/CD持續(xù)集成——GitLab CI服務(wù)器(71)

如何搭建一個gitlab ci服務(wù)器耕突,首先解釋下為什么選擇了gitlab ci沒有選擇jeakins
1.個人原因笤成,jeakins 網(wǎng)上到處都是資料,懟gitlab ci更加熟悉有勾。
2.gitlab和gitlab之前集成非常好的疹启,這是不用質(zhì)疑的。

  1. 介紹下gitlab ci蔼卡,不弱于jeakins喊崖,很多方面比jeakins對gitlab集成更強大。
    源碼:https://github.com/limingios/docker/tree/master/No.11

創(chuàng)建虛擬機

  • vagrant文件的配置
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.require_version ">= 1.6.0"

boxes = [
    {
        :name => "gitlab-ci",
        :mem => "4096",
        :cpu => "2"
    }
]

Vagrant.configure(2) do |config|

  config.vm.box = "centos/7"
  boxes.each do |opts|
    config.vm.define opts[:name] do |config|
      config.vm.hostname = opts[:name]
      config.vm.provider "vmware_fusion" do |v|
        v.vmx["memsize"] = opts[:mem]
        v.vmx["numvcpus"] = opts[:cpu]
      end
      config.vm.provider "virtualbox" do |v|
        v.customize ["modifyvm", :id, "--memory", opts[:mem]]
        v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]
      end
      config.vm.network :private_network, type: "dhcp"
    end
  end
  config.vm.provision "shell", privileged: true, path: "./setup.sh"
end

  • setup.sh的配置
#/bin/sh

sudo yum install -y yum upgrade
sudo yum install -y net-tools
sudo yum install -y curl policycoreutils openssh-server openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd
sudo yum install -y postfix
sudo systemctl  enable postfix
sudo systemctl start postfix
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld

sudo curl -sSL https://get.docker.com/ | sh

執(zhí)行命令創(chuàng)建

#源碼No.11的gitlab-ci目錄
vagrant up

更改安裝源

新建 gitlab-ci-multi-runner.repo

sudo touch /etc/yum.repos.d/gitlab-ci-multi-runner.repo
sudo vi /etc/yum.repos.d/gitlab-ci-multi-runner.repo

將以下內(nèi)容寫入文件

[gitlab-ci-multi-runner]
name=gitlab-ci-multi-runner
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ci-multi-runner/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key

執(zhí)行

sudo yum makecache
sudo yum install gitlab-ci-multi-runner

查詢運行狀態(tài)

 sudo gitlab-ci-multi-runner status

設(shè)置docker權(quán)限
為了能讓gitlab-runner能正確的執(zhí)行docker的命令雇逞,需要把gitlab-runner添加到docker group里荤懂,然后重啟docker 和 gitlab-runner

sudo usermod -aG docker gitlab-runner
sudo service docker restart
sudo gitlab-ci-multi-runner restart 

gitlab-ci注冊

  • 輸入Gitlab CI地址
http://172.28.128.3/
  • 輸入項目CI token

登錄gitlab,選擇項目塘砸,Setting节仿,CICD,選擇Runners掉蔬。

i_qDxLL_yQTzMuSR1-6J
  • 輸入 Runner 描述
#自己起個名字方便區(qū)別
test1
  • 輸入 Runner 標(biāo)簽廊宪,可以多個,用逗號隔開
#自己起個標(biāo)簽方便區(qū)別
test1
  • 是否不需要每次tag后才打包(不女轿,每次都要tag才會自動打包)箭启。
#直接回車
  • 是否runner鎖定在一個工程下(不)。
#直接回車
  • 輸入 Runner 執(zhí)行的語言
shell

gitlab-ci如何使用

  • 根目錄添加.gitlab-ci.yml
stages:
  - test
  - build
  - deploy
  
job1:
  stage: test
  tags:
    - test1
  script:
    - echo "個人網(wǎng)站:idig8.com"
    - echo "個人公眾號:編程坑太多"
    - echo "--------job1----------"
job2:
  stage: build
  tags:
    - test1
  script:
    - echo "個人網(wǎng)站:idig8.com"
    - echo "個人公眾號:編程坑太多"
    - echo "--------job2----------"
job3:
  stage: deploy
  tags:
    - test1
  script:
    - echo "個人網(wǎng)站:idig8.com"
    - echo "個人公眾號:編程坑太多"
    - echo "--------job3----------"
  • 查看運行結(jié)果

CICD-Pipelines

查看失敗原因

#原來是域名的問題蛉迹,開始修改傅寡。
Running with gitlab-ci-multi-runner 9.5.1 (96b34cc)  on gitlab-ci (4d12d67f)
Using Shell executor...Running on gitlab-ci...
Cloning repository...Cloning into '/home/gitlab-runner/builds/4d12d67f/0/root/test1'...
fatal: unable to access 'http://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@gitlab.example.com/root/test1.git/': 
Could not resolve host: gitlab.example.com; Unknown errorERROR: Job failed: exit status 1
  • 進入gitlab-ci主機

修改hosts文件里面添加gitlab.example.com對應(yīng)的ip。

sudo vi /etc/hosts 
# 添加 172.28.128.3 gitlab.example.com

重新ci

  • job1北救,job2荐操,job3的結(jié)果

passed 就是已經(jīng)結(jié)束了,運行成功了珍策!必須是順序執(zhí)行托启,如果job1成功才執(zhí)行job2,然后job3攘宙。

PS:整個這個功能是否給你一個很大的想象空間屯耸,任何的軟件的項目,可以通過ci-Pipelines方式模聋,來定義自己的Pipelines肩民,在測試唠亚,部署链方。很大很的發(fā)揮空間。都可以通過自定yml文件來實現(xiàn)灶搜。


往期精彩
  1. docker導(dǎo)學(xué)(一)
  2. 容器的技術(shù)概述(二)
  3. docker的魅力初體驗-5分鐘安裝wordpress不走彎路(三)
  4. docker官網(wǎng)介紹(四)
  5. 如何在mac上安裝docker(五)
  6. 如何在window上安裝docker(六)
  7. 如何在mac上通過vagrant安裝虛擬機(七)
  8. 如何在window上通過vagrant安裝虛擬機(八)
  9. docker-Machine的本地使用(九)
  10. docker-Machine的本地使用(十)
  11. 在linux/mac下通過Docker-Machine在阿里云上的使用(11)
  12. docker架構(gòu)和底層技術(shù)(12)
  13. docker Image概述(13)
  14. 手動建立一個base Image(14)
  15. 什么是Container(15)
  16. 構(gòu)建自己的Docker鏡像(16)
  17. Dockerfile詳解(17)
  18. 鏡像的發(fā)布(18)
  19. Dockerfile實戰(zhàn)(19)
  20. 容器的操作(20)
  21. Dockerfile實戰(zhàn)CMD和ENTRTYPOINT的配合(21)
  22. 容器的資源限制(22)
  23. docker網(wǎng)絡(luò)(23)
  24. docker學(xué)習(xí)必會網(wǎng)絡(luò)基礎(chǔ)(24)
  25. Linux網(wǎng)絡(luò)命名空間(25)
  26. Docker Bridge詳解(26)
  27. 容器之間的Link(27)
  28. 容器的端口映射(28)
  29. 容器網(wǎng)絡(luò)之host和none(29)
  30. 多容器復(fù)雜應(yīng)用的部署(30)
  31. overlay網(wǎng)絡(luò)和etcd實現(xiàn)多機的容器通信(31)
  32. docker的數(shù)據(jù)持久化存儲和數(shù)據(jù)共享(32)
  33. windows下vagrant 通過SecureCRT連接centos7(33)
  34. 數(shù)據(jù)持久化之Data Volume(34)
  35. 數(shù)據(jù)持久化之bind Mounting(35)
  36. docker 使用bind Mounting實戰(zhàn)(36)
  37. docker容器安裝wordpress(37)
  38. docker Compose到底是什么(38)
  39. Docker Compose的安裝和基本使用(39)
  40. Docker 水平擴展和負載均衡(40)
  41. Docker compose 部署一個復(fù)雜的應(yīng)用(41)
  42. 容器編排Docker Swarm介紹(42)
  43. docker-swarm創(chuàng)建一個多節(jié)點集群(43)
  44. play with docker 的使用(44)
  45. docker-swarm中的Service創(chuàng)建維護和水平擴展(45)
  46. 在docker-swarm集群里通過serivce部署wordpress(46)
  47. 集群服務(wù)間通信之RoutingMesh(47)
  48. RoutingMesh之Ingress負載均衡(48)
  49. Docker-Stack部署wordpress(49)
  50. Docker-Stack部署投票應(yīng)用(50)
  51. Docker-Secret管理和使用(51)
  52. Docker service更新(52)
  53. Docker的收費模式(53)
  54. Docker-cloud介紹(54)
  55. Docker Cloud自動構(gòu)建 Docker image(55)
  56. Docker企業(yè)版的在線免費體驗(56)
  57. docker企業(yè)版本地安裝之UCP(57)
  58. docker體驗阿里云的容器服務(wù)(58)
  59. 阿里云安裝Docker企業(yè)版UCP和DTR(59)
  60. Kubenetes簡介(60)
  61. Minikube快速搭建K8S單節(jié)點環(huán)境(61)
  62. K8S最小調(diào)度單位Pod(62)
  63. K8S橫向擴展功能ReplicaSet和ReplicationController(63)
  64. k8s重要的Deployment(64)
  65. Vagrant在本地搭建多節(jié)點K8S集群(65)
  66. k8s基礎(chǔ)網(wǎng)絡(luò)Cluster Network(66)
  67. k8s的Service簡介和演示(67)
  68. k8s的NodePort類型Service以及Label的簡單實用(68)
  69. CI/CD持續(xù)集成/持續(xù)部署(69)
  70. docker之CI/CD持續(xù)集成-gitlab安裝(70)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末祟蚀,一起剝皮案震驚了整個濱河市工窍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌前酿,老刑警劉巖患雏,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異罢维,居然都是意外死亡淹仑,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門肺孵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來匀借,“玉大人,你說我怎么就攤上這事平窘∠爬撸” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵瑰艘,是天一觀的道長是鬼。 經(jīng)常有香客問我,道長紫新,這世上最難降的妖魔是什么均蜜? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮弊琴,結(jié)果婚禮上兆龙,老公的妹妹穿的比我還像新娘。我一直安慰自己敲董,他們只是感情好紫皇,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著腋寨,像睡著了一般聪铺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上萄窜,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天铃剔,我揣著相機與錄音,去河邊找鬼查刻。 笑死键兜,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的穗泵。 我是一名探鬼主播普气,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼佃延!你這毒婦竟也來了现诀?” 一聲冷哼從身側(cè)響起夷磕,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仔沿,沒想到半個月后坐桩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡封锉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年绵跷,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片成福。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡抖坪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出闷叉,到底是詐尸還是另有隱情擦俐,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布握侧,位于F島的核電站蚯瞧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏品擎。R本人自食惡果不足惜埋合,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望萄传。 院中可真熱鬧甚颂,春花似錦、人聲如沸秀菱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衍菱。三九已至赶么,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間脊串,已是汗流浹背辫呻。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留琼锋,地道東北人放闺。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像缕坎,于是被迫代替她去往敵國和親怖侦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容