讓自動化工作流解放你的雙手-創(chuàng)新互聯(lián)

本篇主要講解一下如何去配置 jenkins,如何使用 Fabric(python 腳本)去部署項(xiàng)目,怎么設(shè)置 gitlab 的鉤子,實(shí)現(xiàn)我們提交代碼及自動打包部署,實(shí)現(xiàn)真正的自動化部署??礆w看,記得一定要實(shí)踐一下才知道哪里有坑。

成都服務(wù)器托管,創(chuàng)新互聯(lián)公司提供包括服務(wù)器租用、川西大數(shù)據(jù)中心、帶寬租用、云主機(jī)、機(jī)柜租用、主機(jī)租用托管、CDN網(wǎng)站加速、國際域名空間等業(yè)務(wù)的一體化完整服務(wù)。電話咨詢:18982081108

如果你在嘗試的過程中遇到什么問題,歡迎留言和我一起探討。

準(zhǔn)備項(xiàng)目

這里就不做過多介紹了,隨便一個 vue 或者 react 的項(xiàng)目,或者 node 的項(xiàng)目都可以。

前提是一定要上傳到 git 上哦,我們后續(xù)會使用項(xiàng)目 git 的鉤子函數(shù)去調(diào)用 jenkins 進(jìn)行自動構(gòu)建。我這邊用的是公司的一個 vue 項(xiàng)目。

安裝 jenkins

如果是公司已經(jīng)有自己的 jenkins,那可以跨過這一步,直接看后面的。

Linux 基礎(chǔ)環(huán)境

要求必須有 java 運(yùn)行環(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
復(fù)制代碼
  • 添加 Jenkins 官方倉庫

  • 導(dǎo)入公鑰

  • 安裝

上面執(zhí)行完成之后,檢查/usr/lib/jenkins/jenkins.war 是否存在,如果在下載過程中很慢的話,建議改成 http 協(xié)議。

服務(wù)管理(Linux)

在 linux 上可以通過以下命令去管理 jenkins 的服務(wù):

systemctl?start?jenkins
systemctl?stop?jenkins
systemctl?status?jenkins
復(fù)制代碼

配置

jenkins 的配置文件在這個目錄下:/etc/sysconfig/jenkins,我們可以通過這個配置文件修改 jenkins 的端口號,因?yàn)?jenkins 默認(rèn)端口號都是 8080,很容易被占用,所以還是換一下的好。

#?修改默認(rèn)端口
JENKINS_PORT="8001"
JENKINS_AJP_PORT="8009"?#?選填
復(fù)制代碼

第一次訪問

通過 systemctl start jenkins,將服務(wù)跑起來之后,我們就可以進(jìn)行訪問了,在瀏覽器中通過 http://服務(wù)器ip:端口號 即可進(jìn)行訪問。

讓自動化工作流解放你的雙手

  • 管你要密碼怎么辦?

可以在 /var/lib/jenkins/secrets/initialAdminPassword 中找到賬號密碼。

登錄之后,我們能看到主頁面就代表 jenkins 安裝成功了。

讓自動化工作流解放你的雙手

安裝其他需要的軟件

我們后續(xù)會在 jenkins 的服務(wù)器上進(jìn)行腳本的執(zhí)行和項(xiàng)目的打包,最好在 jenkins 上把 node 相關(guān)的軟件安裝好。

安裝 node 就不多講了,大家可以看一下我之前寫的node 中 3m 管理法,可以幫你有效的管理 node,以及切換 npm 源。

我們后續(xù)不使用 shell 腳本,使用 Fabric 腳本部署,希望大家在 jenkins 上也裝一下 Fabric 環(huán)境吧,放心,不是很麻煩,很快就可以裝好,不是給大家加活,主要是 Fabric 是真好用,后續(xù)給大家展示一下或者大家自己操作一下就知道了。

服務(wù)器上有很多會默認(rèn)帶 python 環(huán)境,我們需要先查看一下 python 的版本,F(xiàn)abric 需要運(yùn)行在 python2.5-2.7 的版本之下。

python?--version
復(fù)制代碼

只要版本大于 2.5 即可,如果沒有 python 或者版本小于 2.5,可以根據(jù)安裝教程安裝一下。

之后就是安裝 Fabric:

pip?install?fabric
復(fù)制代碼

好了,把環(huán)境安裝完成了,我們要開始搞事了。

創(chuàng)建 jenkins 工程

點(diǎn)擊 new 任務(wù),即可開始創(chuàng)建任務(wù):

讓自動化工作流解放你的雙手

填寫自己的工程的名稱,選擇自己需要創(chuàng)建項(xiàng)目的類型,我們就選擇自由風(fēng)格即可。

讓自動化工作流解放你的雙手

這個時(shí)候就創(chuàng)建好任務(wù)了,我們需要對任務(wù)進(jìn)行一定的配置。

配置 gitlab 的上傳即構(gòu)建功能

配置 jenkins 工程

從 jenkins 右側(cè)找到自己的工程,進(jìn)入工程后點(diǎn)擊左側(cè)的 configure。

讓自動化工作流解放你的雙手

配置 git 倉庫地址

在 jenkins 的工程里,我們可以配置具體項(xiàng)目的 git 地址,后續(xù)提交項(xiàng)目之后,jenkins 工程就會從這個 git 目錄去拉代碼,記得填寫一個有權(quán)限的賬戶哦。

讓自動化工作流解放你的雙手

添加觸發(fā)器

配置完成 git 遠(yuǎn)程倉庫地址之后,我們需要找到構(gòu)建環(huán)境,勾選下圖中紅框選中的地方,這個是 webhook 在 jenkins 里邊的配置。

讓自動化工作流解放你的雙手

記得保存紅框中 URL 后邊的地址,后續(xù)會填寫到 gitlab 里邊。

配置 git 倉庫鉤子

本篇主要以 gitlab 為例,在 gitlab 的對應(yīng)項(xiàng)目中,找到 webhook 的配置(settings -> integrations)

讓自動化工作流解放你的雙手

URL:就是上一步在 jenkins 中勾選 gitlab 鉤子時(shí)賦值的 URL,有時(shí)候可能會存在問題,比如你修改了 jenkins 的端口號,但是那個 URL 還是顯示 8080,這個時(shí)候需要將端口號修改成你更改后的。

Token:jenkins 對應(yīng)的工程中勾選 gitlab 鉤子選項(xiàng)之后,會有一個高級設(shè)置,如下:

讓自動化工作流解放你的雙手

讓自動化工作流解放你的雙手

讓自動化工作流解放你的雙手

將生成的 token 粘貼放到 gitlab 對應(yīng)的 Token 中。

**注意:**這個時(shí)候需要在高級設(shè)置中勾選另外一個選項(xiàng),就是具體根據(jù)哪個分支提交代碼后構(gòu)建,如果不勾選這個會導(dǎo)致 gitlab 中測試 push events 的時(shí)候報(bào) 401 的錯誤,如果你在測試 webhook 時(shí)出現(xiàn) 401 的問題,可以回來修改一下這里:

讓自動化工作流解放你的雙手

填完 gitlab 的 URL 和 Token 之后點(diǎn)擊創(chuàng)建:

Trigger 中我們勾選 push events 即可,如果有其他的需求可以自行勾選。

測試 gitlab 鉤子

在上一步中,我們已經(jīng)將 gitlab 鉤子需要的 URL 和 Token 都填寫完成,并且已經(jīng)創(chuàng)建了 webhook,在上一個頁面配置 webhook 下面可以看到你自己的配置成功的 webhook:

讓自動化工作流解放你的雙手

我們可以點(diǎn)擊 test -> Push Events 進(jìn)行 webhook 的測試,如果頁面頂部提示以下彈窗,說明配置成功。

讓自動化工作流解放你的雙手

這個時(shí)候我們在看 jenkins 里面,會提示工程正在構(gòu)建。

讓自動化工作流解放你的雙手

實(shí)現(xiàn)自動化構(gòu)建及部署

目前公司業(yè)務(wù)場景是這樣的:jenkins 是一臺服務(wù)器,需要部署項(xiàng)目是一臺服務(wù)器,并且需要部署項(xiàng)目的業(yè)務(wù)服務(wù)器有堡壘機(jī)進(jìn)行保護(hù),我無法使用 jenkins 的 ssh 功能對業(yè)務(wù)服務(wù)器進(jìn)行直接登錄。

所以我本篇主要講如何使用 Fabric 進(jìn)行遠(yuǎn)程部署,這里也就將自動化構(gòu)建和自動化部署合并起來了,其實(shí)自動化構(gòu)建是一塊內(nèi)容,自動化部署是一塊內(nèi)容。如果大家的業(yè)務(wù)場景和我一樣,可以使用這種方法,多一門手藝多一條出路唄,多學(xué)點(diǎn)東西肯定有好處。

正常的自動化工作流是這樣的:

  1. 在項(xiàng)目開發(fā)完成之后,使用 git push 將項(xiàng)目推送到遠(yuǎn)程倉庫。

  2. 如果上一步配置 git 鉤子功能沒問題,那么 git 就會觸發(fā) jenkins,然后 jenkins 開始工作。

  3. 我們可以在 jenkins 上進(jìn)行單元測試,安裝升級依賴包,打包,上傳業(yè)務(wù)服務(wù)器,無論你是執(zhí)行 npm scripts,還是執(zhí)行腳本,都能在 jenkins 上進(jìn)行構(gòu)建。

這一塊內(nèi)容主要講如何寫構(gòu)建和部署的腳本,如果你時(shí)間不充裕,沒時(shí)間學(xué) Fabric,使用 npm scripts 進(jìn)行構(gòu)建,那你可以參考一下掘金網(wǎng)友寫的實(shí)戰(zhàn)筆記:Jenkins 打造強(qiáng)大的前端自動化工作流。

其實(shí)我還是覺得大家應(yīng)該看一下 Fabric,點(diǎn)擊名字了解一下吧,真的很強(qiáng)大,直接將構(gòu)建部署合并。

要想使用 Fabric,需要在你的實(shí)際項(xiàng)目根目錄下創(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文件夾進(jìn)行壓縮
?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))
#?進(jìn)入業(yè)務(wù)服務(wù)器存放壓縮包的目錄
?with?cd(REMOTE_PATH):
?#?解壓壓縮包
?run('tar?zxf?{0}.tgz'.format(APP_NAME))
?#?刪除也所報(bào)
?run('rm?-f?{0}.tgz'.format(APP_NAME))
?#?進(jìn)入項(xiàng)目
?with?cd(APP_NAME):
?#?利用http-server和pm2將靜態(tài)項(xiàng)目跑起來
?run('pm2?start?http-server?--name?--?{0}?-p?8888?-d?false'.format(APP_NAME))
復(fù)制代碼

這個只是我們公司的業(yè)務(wù),其實(shí) Fabric 腳本就是幫助你將 shell 命令跑在服務(wù)器上,后續(xù)幫助你進(jìn)行遠(yuǎn)程上傳部署,看過 Fabric 教程的大兄弟們,你們應(yīng)該知道使用 local 命令會在當(dāng)前服務(wù)器執(zhí)行命令,使用 run 命令會在遠(yuǎn)程服務(wù)器執(zhí)行命令。

這個時(shí)候腳本就寫好了,我們打開 jenkins 找到對應(yīng)項(xiàng)目,進(jìn)入項(xiàng)目的 Configure,找到 build,然后配置一個 shell,讓其執(zhí)行。

可以參考下面的配置:

讓自動化工作流解放你的雙手

保存一下,然后自己測試一下吧。

在 jenkins 上執(zhí)行構(gòu)建,我們可以點(diǎn)擊這個構(gòu)建的圖標(biāo)查看構(gòu)建過程有沒有問題。

讓自動化工作流解放你的雙手

當(dāng)出現(xiàn)以下內(nèi)容時(shí),就代表構(gòu)建成功了。

讓自動化工作流解放你的雙手

可以使用你業(yè)務(wù)服務(wù)器的 ip 加項(xiàng)目端口號查看跑起來的項(xiàng)目。

讓自動化工作流解放你的雙手

這個時(shí)候我們的自動化構(gòu)建及自動化部署就完成了。

最后

這篇文章我們只是簡單的搭建一套自動化工作流程,像單元測試什么的都沒有寫,如果你的項(xiàng)目有單元測試,只需要多執(zhí)行一條命令即可。

我們在開發(fā)完成之后,提交 git,jenkins 就可以幫助我們自動化執(zhí)行,解放了人力部署的生產(chǎn)力,讓我們更多關(guān)注的是開發(fā)過程。其實(shí)持續(xù)集成真實(shí)的配置要比我們這些復(fù)雜的多,一套完整的持續(xù)集成,能讓公司省不少人力成本。

雖然我們配置的簡單,但是你如果配置成功一個工程,其實(shí)就已經(jīng)了解了這個過程,后續(xù)接觸復(fù)雜的持續(xù)集成,會讓你上手更快。

讓自動化工作流解放你的雙手

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

文章題目:讓自動化工作流解放你的雙手-創(chuàng)新互聯(lián)
本文URL:http://bm7419.com/article32/gicsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、App開發(fā)、營銷型網(wǎng)站建設(shè)服務(wù)器托管、網(wǎng)站設(shè)計(jì)公司移動網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司