
注冊(cè)后 , 我們直接start
CONFIG_FOLDER=/tmp/gitlab-runner-configdocker run -d \ --name gitlab-runner \ --restart always \ -v $CONFIG_FOLDER:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest
一旦start成功 , 我們就會(huì)在gitlab上看到項(xiàng)目的信息:

當(dāng)研發(fā)把代碼提交到gitlab上 , runners會(huì)一次執(zhí)行:測(cè)試、構(gòu)建、部署等在.gitlab-ci.yml里面定義好的操作 。
· 測(cè)試階段運(yùn)行一些預(yù)檢查以確保events. json文件格式正確并且images完整。
· 構(gòu)建階段構(gòu)建image并將其推送到GitLab registry。
· deploy階段通過(guò)發(fā)送到Portainer的webhook觸發(fā)服務(wù)的更新 。WWW_WEBHOOK變量在GitLab.com項(xiàng)目頁(yè)面的CI/CD設(shè)置中定義 。

注:
這個(gè)runners在swarm的容器中運(yùn)行 。我們可以使用一個(gè)共享的runner——他們可以在托管的主機(jī)上共享資源——但是,runner需要訪問(wèn)Portainer endpoint (發(fā)送webhook),因?yàn)槲也幌M鸓ortainer被玩不訪問(wèn) 。
此外 , 因?yàn)檫\(yùn)行器在容器中運(yùn)行 , 所以它將webhook發(fā)送到Docker0橋接網(wǎng)絡(luò)的IP地址 , 以便通過(guò)它在主機(jī)上公開(kāi)的端口9000與Portainer聯(lián)系 。因此 , webhook的格式如下:http://172.17.0.1:9000/api[…]a7-4af2-a95b-b748d92f1b3b
部署過(guò)程回顧網(wǎng)站新版本的更新工作流程如下:

1. 開(kāi)發(fā)人員將一些更改推給GitLab 。這些更改基本上涉及事件中的一個(gè)或多個(gè)新事件 。json文件加上一些額外的贊助商的標(biāo)志 。
2. GitLab運(yùn)行器執(zhí)行. GitLab -ci.yml中定義的操作 。
3. GitLab運(yùn)行器調(diào)用Portainer中定義的webhook 。
4. 在webhook接收端 , Portainer部署了www服務(wù)的新版本 。它這樣做 , 調(diào)用Docker Swarm API 。Portainer可以作為套接字/var/run/ dockerr訪問(wèn)API 。襪子啟動(dòng)時(shí)是綁定安裝的
5. 然后用戶就可以在web上看到最新的信息了 。
小案例
修改一些配置 , 然后push到gitlab 。
$ git commit -m 'Fix image'$ git push origin master
下面的截圖顯示了GitLab.com項(xiàng)目頁(yè)面中的提交觸發(fā)的信息

在Portainer端 , 接收webhook并執(zhí)行服務(wù)更新 。我們無(wú)法在這里清楚地看到它 , 但是已經(jīng)更新了一個(gè)副本 , 使web站點(diǎn)可以通過(guò)第二個(gè)副本訪問(wèn) 。然后 , 幾秒鐘后 , 第二個(gè)副本被更新 。

總結(jié)
即使對(duì)于這個(gè)小項(xiàng)目 , 設(shè)置一個(gè)CI/CD管道也是一個(gè)很好的練習(xí) , 尤其是要更加熟悉GitLab 。這是一個(gè)優(yōu)秀的產(chǎn)品 。這也是使用期待已久的Portainer(1.19.2)最新版本的webhook特性的好機(jī)會(huì) 。另外 , 對(duì)于像這樣的一個(gè)小項(xiàng)目 , 使用Docker Swarm是很簡(jiǎn)單的——它很酷 , 而且很容易使用!
[1]:https://gitlab.com/lucj/sophia.events
[2]:https://gitlab.com/lucj/sophia.events/blob/master/index.mustache
推薦閱讀
- qq郵箱格式怎么填寫(xiě)
- 大閘蟹需要怎么保鮮
- qq被盜怎么申訴回來(lái)
- 餐廳墻面這樣設(shè)計(jì)
- 國(guó)字臉男生適合什么發(fā)型設(shè)計(jì)
- 短褲壓褶設(shè)計(jì)的好處
- 初審?fù)ㄟ^(guò)是什么意思
- 手機(jī)相冊(cè)照片誤刪怎么恢復(fù)
- 怎么通過(guò)qq號(hào)查微信號(hào)
- 墻體裝修怎么選擇材料
