[后端] gitlab-ci 實(shí)現(xiàn)自動(dòng)部署項(xiàng)目到服務(wù)器上

? ?gitlab有webhook和gitlab-ci實(shí)現(xiàn)自動(dòng)部署忘闻,我這邊選擇了gitlab-ci搭建自動(dòng)部署(能過(guò)通過(guò)shell的運(yùn)行實(shí)現(xiàn)更多的運(yùn)維等操作), 因?yàn)槭莿傞_(kāi)始接觸這個(gè)自動(dòng)部署的實(shí)現(xiàn)? 所以暫時(shí)通過(guò) 寶塔中的gitlab來(lái)實(shí)現(xiàn),后期會(huì)再發(fā)布一篇關(guān)于 oneinstack環(huán)境下實(shí)現(xiàn)的高版本gitlab實(shí)現(xiàn)自動(dòng)部署的文章处窥,盡情期待!

步驟:

? ? 1雹仿、因?yàn)槲沂鞘褂脤毸惭b的gitlab8.8.5版本 所以安裝gitlab這一部分 大家在簡(jiǎn)書(shū)中搜索增热,有很多.(注意!, gitlab-runner 有對(duì)應(yīng)的版本的,請(qǐng)選擇對(duì)應(yīng)版本胧辽,否則安裝會(huì)失斁稹),我這里安裝的是 gitlab-runner 1.11.2? centos7.3下部署

? ? 2、下載gitlab-ci-multi-runner 1.11.2

? ? ? ? ? $ sudo wget? https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/v1.11.2/binaries/gitlab-ci-multi-runner-linux-amd64

? ? ? ? ? 給這個(gè)文件權(quán)限

? ? ? ? ? $ sudo chmod +x? ? ./gitlab-ci-multi-runner-linux-amd64

? ? 3邑商、創(chuàng)建一個(gè)centos用戶

? ? ? ? ? ? sudo useradd --comment 'GitLab Runner' --create-home? gitlab-runner --shell? /bin/bash

? ? 4摄咆、注冊(cè)一個(gè)ci (在 gitlab-ci-multi-runner-linux-amd64 文件所在目錄下執(zhí)行如下命令)

? ? ? ? ? ? sudo? ./gitlab-ci-multi-runner-linux-amd64? register

? ? ? ? ? ? 按照如下配置:

配置過(guò)程中的選項(xiàng)參數(shù)選擇


url和token是在要部署的項(xiàng)目中獲取,不同項(xiàng)目獲取不同的token但url則相同

? ? 5奠骄、安裝并作為服務(wù)啟動(dòng)

? ? ? ? ? ? sudo gitlab-ci-multi-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner? (加黑部分為指定build文件夾目錄存放位置)

? ? ? ? ? ? sudo gitlab-ci-multi-runner start

? ? 6豆同、開(kāi)放對(duì)應(yīng)項(xiàng)目目錄權(quán)限給 gitlab-runner用戶(我這里是php項(xiàng)目組 所以統(tǒng)一將所有php相關(guān)項(xiàng)目放到了php目錄,這里修改為你們自己的項(xiàng)目總目錄或者單獨(dú)目錄都可以)

? ? ? ? sudo chown -hR gitlab-runner:gitlab-runner? /www/wwwroot/php

? ? 7含鳞、接下來(lái)就是重點(diǎn)了!

? ? ? ? 在centos中 進(jìn)入到gitlab-runner用戶? 生成ssh 實(shí)現(xiàn)免登陸 克隆或者拉取項(xiàng)目代碼,命令如下:

? ? ? ? $ su gitlab-runner

? ? ? ? $ mkdir ~/.ssh

? ? ? ? $cd~/.ssh

? ? ? ? $ ssh-keygen

? ? ? ? # 提示輸入一直按回車(chē)默認(rèn)就可以了

? ? ? ? $ cat id_rsa.pub? 然后將 ssh內(nèi)容復(fù)制下來(lái), 粘貼到 gitlab編輯中的部署密鑰,如下圖


部署密鑰圖

8影锈、在gitlab 注冊(cè)一個(gè)gitlab-runner用戶 然后將該用戶 加入到需要自動(dòng)部署的項(xiàng)目中(加入項(xiàng)目成員中)

9、接下來(lái)就是自動(dòng)部署時(shí) 執(zhí)行的shell腳本的編寫(xiě)了蝉绷,命令如下

? ? su gitlab-runner

? ? cd ~

? ? mkdir bin

? ? cd bin/

? ? vim deployscript

? ? 內(nèi)容如下圖:


簡(jiǎn)易自動(dòng)部署shell腳本

? ? ? ? ? ? 上圖是 代碼自動(dòng)拉取的 shell代碼鸭廷,$1 $2 $3 $4 分別代表:?

? ? ? ? ? ? ? ? $1 : php(項(xiàng)目所屬群組, 比如說(shuō)公司有php和java 那么php放在php群組 java則放在java群組 這樣的話項(xiàng)目管理就很方便了)

? ? ? ? ? ? ? ? $2: 項(xiàng)目名稱,

? ? ? ? ? ? ? ? $3: git分支名稱 推薦 develop分支

? ? ? ? ? ? ? ? $4: 當(dāng)前job名稱 這里為 job1

10、給予 deployscript文件執(zhí)行權(quán)限 (4 2 1 中的1 也就是 x)

? ? ? ? ? ? chmod +x deployscript

11熔吗、接下來(lái)就是 配置(/home/gitlab-runner/bin)環(huán)境變量了,用于不用每次執(zhí)行 bin下的腳本時(shí) 都指定 /home/gitlab-runner/bin 這個(gè)目錄 也考慮到安全吧(這一塊不是很懂哈辆床,萌新在此!)? 如下圖:

? ? ? ? ? ? 命令如下:

? ? ? ? ? gitlab-runner用戶下

? ? ? ? ? ? ? ? su gitlab-runner

? ? ? ? ? ? ? ? cd ~

? ? ? ? ? ? ? ? vim .bash_profile

? ? ? ? ? ? ? ? PATH修改為如下:

? ? ? ? ? ? ? ? ? ? PATH=$PATH:$HOME/.local/bin:$HOME/bin:/home/gitlab-runner/bin? ? (加黑加粗部分為修改內(nèi)容)

? ? ? ? ? ? ? ? 保存退出? 執(zhí)行 source? .bash_profile (環(huán)境變量即為生效)

? ? ? ? ? ? root用戶下:

? ? ? ? ? ? vim /etc/profile

? ? ? ? ? ? ? ? 在底部修改 PATH為:

? ? ? ? ? ? ? ? ? ? export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/git/bin:/home/gitlab-runner/bin

? ? ? ? ? ? ? ? 保存退出? 執(zhí)行 source /etc/profile

環(huán)境變量添加

## 注意! ##

所有的項(xiàng)目 都是在 php群組 中創(chuàng)建? 如果沒(méi)有php群組? 創(chuàng)建一個(gè)即可
之后的項(xiàng)目都在php群組下 創(chuàng)建!!!

12、針對(duì)于tp或者laravel 拉取代碼后 composer install 之后 vendor目錄 此時(shí)的擁有者為 root 需要修改為 gitlab-runner否者后期想實(shí)現(xiàn)自動(dòng)composer install /update時(shí)? 會(huì)因?yàn)闆](méi)有權(quán)限執(zhí)行不了

? ? ? ? chown -R gitlab-runner:gitlab-runner? vendor/? (root用戶下執(zhí)行)

13桅狠、接下來(lái)就是 gitlab-ci.yml文件的編寫(xiě)了,如下:

# Author:xuweitao 2019-05-07 01:22:00

# php項(xiàng)目:GitLab-CI自動(dòng)執(zhí)行腳本

#

# http://www.reibang.com/p/c566265d39de

# /home/gitlab-runner/bin

variables:

? G_LARAVEL_INIT: 'true'

stages:

? - deploy

? - laravel-init

? - composer-install

job1:

? # 代碼自動(dòng)更新部署 運(yùn)行shell腳本

? stage: deploy

? only:

? ? - develop

? script:

? ? - deployscript php $CI_PROJECT_NAME $CI_COMMIT_REF_NAME $CI_JOB_NAME1

job2:

? # 隊(duì)列開(kāi)啟 & 項(xiàng)目初始化(vender目錄跟 storage以及軟連接等的執(zhí)行和授權(quán),注意: 項(xiàng)目初始化之前 請(qǐng)確保先執(zhí)行了 composer install操作!!!)? 運(yùn)行shell腳本

? stage: laravel-init

? only:

? ? - develop

? variables:

? ? B_LARAVEL_init: 'false'

? ? B_LARAVEL_QUEUE: 'false'

? script:

? ? - laravel-init php $CI_PROJECT_NAME $B_LARAVEL_init $B_LARAVEL_QUEUE $CI_JOB_NAME2

job3:

? # composer install? 運(yùn)行shell腳本

? stage: composer-install

? only:

? ? - develop

? variables:

? ? B_COMPOSER_INSTALL: 'false'

? script:

? ? - composer-install php $CI_PROJECT_NAME $B_COMPOSER_INSTALL $CI_JOB_NAME3

? ? step13 參數(shù)介紹:?

????????php? 表示 gitlab 群組名稱,也就是所有的php項(xiàng)目 都放在php群組方便管理 我代碼也是基于這個(gè)群組實(shí)現(xiàn)!

? ???????$CI_PROJECT_NAME 表示當(dāng)前項(xiàng)目名稱 (需要在對(duì)應(yīng)的項(xiàng)目 變量里面添加)

? ??????$CI_COMMIT_REF_NAME 表示當(dāng)前代碼默認(rèn)推送到git那個(gè)分支? ?默認(rèn)為develop分支?(需要在對(duì)應(yīng)的項(xiàng)目 變量里面添加)

? ??????$CI_JOB_NAME1 讼载、$CI_JOB_NAME2 、$CI_JOB_NAME3? 手動(dòng)添加job1中跌、job2咨堤、job3名稱? ?(需要在對(duì)應(yīng)的項(xiàng)目 變量里面添加)

(由于是gitlab 8.8.5 版本太低? 不會(huì)自動(dòng)給我們添加 job1~3? 等變量 所以需要自己在對(duì)應(yīng)的項(xiàng)目添加一邊!)


yml變量

參考鏈接: http://www.reibang.com/p/b1e098cdb46b

參考鏈接: http://www.reibang.com/p/df433633816b

參考鏈接: https://www.cnblogs.com/whoamme/p/4039998.html

最后再說(shuō)一句: 新建一個(gè)項(xiàng)目的時(shí)候, 只需要在 對(duì)應(yīng)的群組(我這里是 php群組) 中創(chuàng)建新的項(xiàng)目操作步驟:
? ? (1)、點(diǎn)擊新項(xiàng)目設(shè)置 -> runner ->然后按照上面的 第4點(diǎn) 執(zhí)行? ?
? ? (2)漩符、將gitlab-ci.yml原封不動(dòng)復(fù)制一封放到新項(xiàng)目根目錄即可

總結(jié): 過(guò)程總會(huì)遇到坑的一喘,這時(shí)候就得看你解決問(wèn)題的能力了。先通過(guò)報(bào)錯(cuò)去嘗試修改 實(shí)在不行再進(jìn)行百度/谷歌嗜暴。 關(guān)于shell腳本 我就不全部貼出來(lái)了? 畢竟該走的坑還是要走一邊凸克。 通過(guò)這個(gè)實(shí)例? 也了解了shell的一些基礎(chǔ)語(yǔ)法和使用? 收獲還是滿大的议蟆。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市萎战,隨后出現(xiàn)的幾起案子咐容,更是在濱河造成了極大的恐慌,老刑警劉巖撞鹉,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疟丙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡鸟雏,警方通過(guò)查閱死者的電腦和手機(jī)享郊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)孝鹊,“玉大人炊琉,你說(shuō)我怎么就攤上這事∮只睿” “怎么了苔咪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)柳骄。 經(jīng)常有香客問(wèn)我团赏,道長(zhǎng),這世上最難降的妖魔是什么耐薯? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任舔清,我火速辦了婚禮,結(jié)果婚禮上曲初,老公的妹妹穿的比我還像新娘体谒。我一直安慰自己,他們只是感情好臼婆,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布抒痒。 她就那樣靜靜地躺著,像睡著了一般颁褂。 火紅的嫁衣襯著肌膚如雪故响。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天颁独,我揣著相機(jī)與錄音彩届,去河邊找鬼。 笑死奖唯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的糜值。 我是一名探鬼主播丰捷,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼坯墨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了病往?” 一聲冷哼從身側(cè)響起捣染,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎停巷,沒(méi)想到半個(gè)月后耍攘,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡畔勤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年蕾各,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庆揪。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡式曲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缸榛,到底是詐尸還是另有隱情吝羞,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布内颗,位于F島的核電站钧排,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏均澳。R本人自食惡果不足惜恨溜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望负懦。 院中可真熱鬧筒捺,春花似錦、人聲如沸纸厉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)颗品。三九已至肯尺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間躯枢,已是汗流浹背则吟。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锄蹂,地道東北人氓仲。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親敬扛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子晰洒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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