本篇主要講解一下如何去配置 jenkins,如何使用 Fabric(python 腳本)去部署項目,怎么設(shè)置 gitlab 的鉤子,實現(xiàn)我們提交代碼及自動打包部署,實現(xiàn)真正的自動化部署??礆w看,記得一定要實踐一下才知道哪里有坑。
如果你在嘗試的過程中遇到什么問題,歡迎留言和我一起探討。
準備項目
這里就不做過多介紹了,隨便一個 vue 或者 react 的項目,或者 node 的項目都可以。
前提是一定要上傳到 git 上哦,我們后續(xù)會使用項目 git 的鉤子函數(shù)去調(diào)用 jenkins 進行自動構(gòu)建。我這邊用的是公司的一個 vue 項目。
安裝 jenkins
如果是公司已經(jīng)有自己的 jenkins,那可以跨過這一步,直接看后面的。
Linux 基礎(chǔ)環(huán)境
要求必須有 java 運行環(huán)境,建議安裝 Oracle 官方的,給大家個傳送門
安裝(CentOS 環(huán)境下)
sudo?wget?-O?/etc/yum.repos.d/jenkins.repo?https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo?rpm?--import?https://pkg.jenkins.io/redhat-stable/jenkins.io.key #?或?https://pkg.jenkins.io/redhat-stable/jenkins.io.key sudo?yum?install?jenkins 復制代碼
添加 Jenkins 官方倉庫
導入公鑰
安裝
上面執(zhí)行完成之后,檢查/usr/lib/jenkins/jenkins.war 是否存在,如果在下載過程中很慢的話,建議改成 http 協(xié)議。
服務(wù)管理(Linux)
在 linux 上可以通過以下命令去管理 jenkins 的服務(wù):
systemctl?start?jenkins systemctl?stop?jenkins systemctl?status?jenkins 復制代碼
配置
jenkins 的配置文件在這個目錄下:/etc/sysconfig/jenkins,我們可以通過這個配置文件修改 jenkins 的端口號,因為 jenkins 默認端口號都是 8080,很容易被占用,所以還是換一下的好。
#?修改默認端口 JENKINS_PORT="8001" JENKINS_AJP_PORT="8009"?#?選填 復制代碼
第一次訪問
通過 systemctl start jenkins,將服務(wù)跑起來之后,我們就可以進行訪問了,在瀏覽器中通過 http://服務(wù)器ip:端口號 即可進行訪問。
管你要密碼怎么辦?
可以在 /var/lib/jenkins/secrets/initialAdminPassword 中找到賬號密碼。
登錄之后,我們能看到主頁面就代表 jenkins 安裝成功了。
安裝其他需要的軟件
我們后續(xù)會在 jenkins 的服務(wù)器上進行腳本的執(zhí)行和項目的打包,最好在 jenkins 上把 node 相關(guān)的軟件安裝好。
安裝 node 就不多講了,大家可以看一下我之前寫的node 中 3m 管理法,可以幫你有效的管理 node,以及切換 npm 源。
我們后續(xù)不使用 shell 腳本,使用 Fabric 腳本部署,希望大家在 jenkins 上也裝一下 Fabric 環(huán)境吧,放心,不是很麻煩,很快就可以裝好,不是給大家加活,主要是 Fabric 是真好用,后續(xù)給大家展示一下或者大家自己操作一下就知道了。
服務(wù)器上有很多會默認帶 python 環(huán)境,我們需要先查看一下 python 的版本,F(xiàn)abric 需要運行在 python2.5-2.7 的版本之下。
python?--version 復制代碼
只要版本大于 2.5 即可,如果沒有 python 或者版本小于 2.5,可以根據(jù)安裝教程安裝一下。
之后就是安裝 Fabric:
pip?install?fabric 復制代碼
好了,把環(huán)境安裝完成了,我們要開始搞事了。
創(chuàng)建 jenkins 工程
點擊 new 任務(wù),即可開始創(chuàng)建任務(wù):
填寫自己的工程的名稱,選擇自己需要創(chuàng)建項目的類型,我們就選擇自由風格即可。
這個時候就創(chuàng)建好任務(wù)了,我們需要對任務(wù)進行一定的配置。
配置 gitlab 的上傳即構(gòu)建功能
配置 jenkins 工程
從 jenkins 右側(cè)找到自己的工程,進入工程后點擊左側(cè)的 configure。
配置 git 倉庫地址
在 jenkins 的工程里,我們可以配置具體項目的 git 地址,后續(xù)提交項目之后,jenkins 工程就會從這個 git 目錄去拉代碼,記得填寫一個有權(quán)限的賬戶哦。
添加觸發(fā)器
配置完成 git 遠程倉庫地址之后,我們需要找到構(gòu)建環(huán)境,勾選下圖中紅框選中的地方,這個是 webhook 在 jenkins 里邊的配置。
記得保存紅框中 URL 后邊的地址,后續(xù)會填寫到 gitlab 里邊。
配置 git 倉庫鉤子
本篇主要以 gitlab 為例,在 gitlab 的對應項目中,找到 webhook 的配置(settings -> integrations)
URL:就是上一步在 jenkins 中勾選 gitlab 鉤子時賦值的 URL,有時候可能會存在問題,比如你修改了 jenkins 的端口號,但是那個 URL 還是顯示 8080,這個時候需要將端口號修改成你更改后的。
Token:jenkins 對應的工程中勾選 gitlab 鉤子選項之后,會有一個高級設(shè)置,如下:
將生成的 token 粘貼放到 gitlab 對應的 Token 中。
**注意:**這個時候需要在高級設(shè)置中勾選另外一個選項,就是具體根據(jù)哪個分支提交代碼后構(gòu)建,如果不勾選這個會導致 gitlab 中測試 push events 的時候報 401 的錯誤,如果你在測試 webhook 時出現(xiàn) 401 的問題,可以回來修改一下這里:
填完 gitlab 的 URL 和 Token 之后點擊創(chuàng)建:
Trigger 中我們勾選 push events 即可,如果有其他的需求可以自行勾選。
測試 gitlab 鉤子
在上一步中,我們已經(jīng)將 gitlab 鉤子需要的 URL 和 Token 都填寫完成,并且已經(jīng)創(chuàng)建了 webhook,在上一個頁面配置 webhook 下面可以看到你自己的配置成功的 webhook:
我們可以點擊 test -> Push Events 進行 webhook 的測試,如果頁面頂部提示以下彈窗,說明配置成功。
這個時候我們在看 jenkins 里面,會提示工程正在構(gòu)建。
實現(xiàn)自動化構(gòu)建及部署
目前公司業(yè)務(wù)場景是這樣的:jenkins 是一臺服務(wù)器,需要部署項目是一臺服務(wù)器,并且需要部署項目的業(yè)務(wù)服務(wù)器有堡壘機進行保護,我無法使用 jenkins 的 ssh 功能對業(yè)務(wù)服務(wù)器進行直接登錄。
所以我本篇主要講如何使用 Fabric 進行遠程部署,這里也就將自動化構(gòu)建和自動化部署合并起來了,其實自動化構(gòu)建是一塊內(nèi)容,自動化部署是一塊內(nèi)容。如果大家的業(yè)務(wù)場景和我一樣,可以使用這種方法,多一門手藝多一條出路唄,多學點東西肯定有好處。
正常的自動化工作流是這樣的:
在項目開發(fā)完成之后,使用 git push 將項目推送到遠程倉庫。
如果上一步配置 git 鉤子功能沒問題,那么 git 就會觸發(fā) jenkins,然后 jenkins 開始工作。
我們可以在 jenkins 上進行單元測試,安裝升級依賴包,打包,上傳業(yè)務(wù)服務(wù)器,無論你是執(zhí)行 npm scripts,還是執(zhí)行腳本,都能在 jenkins 上進行構(gòu)建。
這一塊內(nèi)容主要講如何寫構(gòu)建和部署的腳本,如果你時間不充裕,沒時間學 Fabric,使用 npm scripts 進行構(gòu)建,那你可以參考一下掘金網(wǎng)友寫的實戰(zhàn)筆記:Jenkins 打造強大的前端自動化工作流。
其實我還是覺得大家應該看一下 Fabric,點擊名字了解一下吧,真的很強大,直接將構(gòu)建部署合并。
要想使用 Fabric,需要在你的實際項目根目錄下創(chuàng)建一個 fabfile.py 文件,存放腳本,后續(xù)在 jenkins 中可以直接執(zhí)行這個文件。廢話不說,我先給大家放一段我寫的腳本。
import?json from?fabric.api?import?* #?定義一些變量 APP_NAME?=?'cartoon_cms_fe' REMOTE_PATH?=?'/data/front/source' #?業(yè)務(wù)服務(wù)器?ip,登錄的用戶名 env.hosts?=?['127.0.0.1'] env.user?=?'root' #?構(gòu)建函數(shù) @runs_once def?package(): #?執(zhí)行安裝依賴的過程 ?run('npm?install') ?#?執(zhí)行打包過程 ?run('npm?run?build:prod') ?#?將打包的dist文件夾進行壓縮 ?local('tar?zcf?{0}.tgz?dist?--exclude=".svn"?--exclude=".idea"?--remove-files'.format(APP_NAME),?capture=False) #?部署 def?deploy(): #?將壓縮包上傳到業(yè)務(wù)服務(wù)器 ?put('{0}.tgz'.format(APP_NAME),?'{1}/{0}.tgz'.format(APP_NAME,?REMOTE_PATH)) #?進入業(yè)務(wù)服務(wù)器存放壓縮包的目錄 ?with?cd(REMOTE_PATH): ?#?解壓壓縮包 ?run('tar?zxf?{0}.tgz'.format(APP_NAME)) ?#?刪除也所報 ?run('rm?-f?{0}.tgz'.format(APP_NAME)) ?#?進入項目 ?with?cd(APP_NAME): ?#?利用http-server和pm2將靜態(tài)項目跑起來 ?run('pm2?start?http-server?--name?--?{0}?-p?8888?-d?false'.format(APP_NAME)) 復制代碼
這個只是我們公司的業(yè)務(wù),其實 Fabric 腳本就是幫助你將 shell 命令跑在服務(wù)器上,后續(xù)幫助你進行遠程上傳部署,看過 Fabric 教程的大兄弟們,你們應該知道使用 local 命令會在當前服務(wù)器執(zhí)行命令,使用 run 命令會在遠程服務(wù)器執(zhí)行命令。
這個時候腳本就寫好了,我們打開 jenkins 找到對應項目,進入項目的 Configure,找到 build,然后配置一個 shell,讓其執(zhí)行。
可以參考下面的配置:
保存一下,然后自己測試一下吧。
在 jenkins 上執(zhí)行構(gòu)建,我們可以點擊這個構(gòu)建的圖標查看構(gòu)建過程有沒有問題。
當出現(xiàn)以下內(nèi)容時,就代表構(gòu)建成功了。
可以使用你業(yè)務(wù)服務(wù)器的 ip 加項目端口號查看跑起來的項目。
這個時候我們的自動化構(gòu)建及自動化部署就完成了。
最后
這篇文章我們只是簡單的搭建一套自動化工作流程,像單元測試什么的都沒有寫,如果你的項目有單元測試,只需要多執(zhí)行一條命令即可。
我們在開發(fā)完成之后,提交 git,jenkins 就可以幫助我們自動化執(zhí)行,解放了人力部署的生產(chǎn)力,讓我們更多關(guān)注的是開發(fā)過程。其實持續(xù)集成真實的配置要比我們這些復雜的多,一套完整的持續(xù)集成,能讓公司省不少人力成本。
雖然我們配置的簡單,但是你如果配置成功一個工程,其實就已經(jīng)了解了這個過程,后續(xù)接觸復雜的持續(xù)集成,會讓你上手更快。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章題目:讓自動化工作流解放你的雙手-創(chuàng)新互聯(lián)
本文URL:http://aaarwkj.com/article32/gicsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、App開發(fā)、營銷型網(wǎng)站建設(shè)、服務(wù)器托管、網(wǎng)站設(shè)計公司、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容