真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

jenkins持續(xù)集成--看我如何從1到代碼自動(dòng)部署-創(chuàng)新互聯(lián)

jenkins持續(xù)集成看我如何從1到代碼自動(dòng)化部署

背景

近期由于工作原因需要學(xué)習(xí)jenkins持續(xù)化集成。對(duì)于一個(gè)好學(xué)又帥氣的我來(lái)說(shuō)。學(xué)習(xí)他還不是手到擒來(lái)。公司為一個(gè)中小型創(chuàng)業(yè)公司,在部署代碼上面,很少用gitlab、jenkins等等,也沒(méi)有清晰的生產(chǎn)環(huán)境-測(cè)試環(huán)境-線上環(huán)境之分。唯一有的就是寫完代碼-登陸服務(wù)關(guān)閉服務(wù),上傳代碼-開(kāi)啟服務(wù)。這樣往往會(huì)到來(lái)很多問(wèn)題,同時(shí)也會(huì)給程序員帶來(lái)很多繁瑣的工作。這不,公司內(nèi)部整頓,需要一套清晰的流程,而且為了減輕程序員的負(fù)擔(dān),于是就希望采用gitlab+jenkins來(lái)部署代碼。

成都創(chuàng)新互聯(lián)長(zhǎng)期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為攀枝花企業(yè)提供專業(yè)的做網(wǎng)站、網(wǎng)站設(shè)計(jì)攀枝花網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

需求

程序員通過(guò)提交代碼到gitlab上;觸發(fā)jenkins自動(dòng)部署觸發(fā)器;部署到測(cè)試服務(wù)器,如果正常,提交到正式線上環(huán)境

環(huán)境介紹

Ubuntu18.04 :

          網(wǎng)絡(luò):內(nèi)網(wǎng)環(huán)境
          服務(wù):gitlab環(huán)境

Ubuntu16.04:

          網(wǎng)絡(luò):內(nèi)網(wǎng)環(huán)境
          服務(wù):jenkins

Centos 7 :

          網(wǎng)路:公網(wǎng)環(huán)境
          服務(wù):php+nginx+mysql

公網(wǎng)環(huán)境為一個(gè)測(cè)試環(huán)境,這里沒(méi)有線上環(huán)境,引一個(gè)環(huán)境就可以,測(cè)試成功上線是同理的道理。

部署過(guò)程

為什么從1到自動(dòng)化部署呢?是因?yàn)槲也惶雽懓惭b部署的過(guò)程。過(guò)程非常簡(jiǎn)單,沒(méi)有坑點(diǎn)和難點(diǎn)。稍稍百度一下就有很多。

前提條件:
1、你要有自己的gitlab賬號(hào)和自己的項(xiàng)目,當(dāng)然用別人的項(xiàng)目也行,不過(guò)在后面設(shè)置一些權(quán)限信息的時(shí)候,可能會(huì)很麻煩別人。所以自己的才是最方便的。
2、你的公網(wǎng)服務(wù)器一定要能訪問(wèn)到內(nèi)網(wǎng)gitlab的項(xiàng)目,因?yàn)闉榱藴p少出錯(cuò),采用的是公網(wǎng)服務(wù)器pull gitlab的代碼。具體的我們后面聊。
3、有一個(gè)不怕困難的心,和帥氣的臉。

一、安裝相關(guān)插件

點(diǎn)擊系統(tǒng)管理-插件管理,通過(guò)搜索框即可下載你想要對(duì)插件。這個(gè)在剛初始化jenkins的時(shí)候也有一次安裝插件的步驟,盡量裝,使勁裝。根據(jù)自己的需求哈!

二、在jenkins上創(chuàng)建一個(gè)job

1、新建任務(wù)
jenkins持續(xù)集成--看我如何從1到代碼自動(dòng)部署
2、輸入任務(wù)名稱-選擇-選擇流水線-確定
jenkins持續(xù)集成--看我如何從1到代碼自動(dòng)部署
簡(jiǎn)要介紹一下這幾個(gè)項(xiàng)目的優(yōu)缺點(diǎn)

Freestyle Job
需在頁(yè)面添加模塊配置項(xiàng)與參數(shù)完成配置
每個(gè)Job只能實(shí)現(xiàn)一個(gè)功能
無(wú)法代碼化,不利于遷移與版本控制

流水線項(xiàng)目
所有參數(shù)都可以體現(xiàn)為一個(gè)pipeline腳本
可以定義多個(gè)stage構(gòu)建一個(gè)管道工作集
配置代碼化,方便Job配置遷移與版本控制
腳本寫在Jenkins項(xiàng)目里

多分支流水線
優(yōu)點(diǎn)同流水線
腳本寫在GitLab項(xiàng)目里(Jenkinsfile)

關(guān)于多分支的流水線,推薦博客https://blog.51cto.com/12639039/2352222

3、進(jìn)入到j(luò)ob的配置界面-點(diǎn)擊構(gòu)建觸發(fā)器
General不需要配置
因?yàn)樾枨笫浅绦騿T向gitlab提交了新的代碼,jenkins觸發(fā)。所以在構(gòu)建觸發(fā)器的時(shí)候選擇下面這個(gè)選項(xiàng)

jenkins持續(xù)集成--看我如何從1到代碼自動(dòng)部署

這里請(qǐng)不要忽略Gitlab webhook URL:。這個(gè)webhook就是用來(lái)觸發(fā)jenkins自動(dòng)構(gòu)建的。

點(diǎn)擊高級(jí),創(chuàng)建 Secret token

jenkins持續(xù)集成--看我如何從1到代碼自動(dòng)部署
4、gitlab上添加步驟3 的webhook
jenkins持續(xù)集成--看我如何從1到代碼自動(dòng)部署
在url處填寫webhook;Secret Token處填寫步驟三隨機(jī)生成的字符串。完成過(guò),點(diǎn)擊添加即可。
jenkins持續(xù)集成--看我如何從1到代碼自動(dòng)部署

在這里可以進(jìn)行測(cè)試連通性。
注意到這里的時(shí)候,你可能會(huì)遇到一個(gè)問(wèn)題:有些用戶添加的時(shí)候會(huì)報(bào)這樣一個(gè)錯(cuò)誤,
jenkins持續(xù)集成--看我如何從1到代碼自動(dòng)部署
說(shuō)是不允許本地網(wǎng)絡(luò)請(qǐng)求。這是由于新版本安全性的問(wèn)題造成的,非常容易解決!
解決方法:使用gitlab管理員賬戶登陸。
jenkins持續(xù)集成--看我如何從1到代碼自動(dòng)部署
將那兩個(gè)全部勾選。然后回去重新添加即可。
5、編寫pipeline腳本
jenkins持續(xù)集成--看我如何從1到代碼自動(dòng)部署
這里有兩個(gè)選擇,第一個(gè)是在這里直接寫入腳本(溫馨提示,腳本在自己電腦上的編輯器上寫好粘貼到這里,因?yàn)檫@里的編輯器像吃了翔一樣難用!太難了。。。)第二個(gè)是使用jenkinsfile文件。我使用了第一個(gè)(因?yàn)檠菔静僮骱?jiǎn)單,易懂!嘿嘿)。
寫完后點(diǎn)擊保存。即可完成一個(gè)job的創(chuàng)建

你以為這就完了。最重要的才剛剛開(kāi)始?。。。。。。。。。。。。。。。。。。。。。。。。。?!


三、pipeline script編寫

讓我們?cè)賮?lái)回顧一下需求:

程序員通過(guò)提交代碼到gitlab上;出發(fā)jenkins自動(dòng)部署觸發(fā)器;部署到測(cè)試服務(wù)器,如果正常,提交到正式線上環(huán)境。不過(guò),我覺(jué)得這個(gè)沒(méi)有任何挑戰(zhàn)性。我想自己加點(diǎn)難度,不管部署過(guò)程是否成功,都要有個(gè)釘釘消息發(fā)到程序員小哥哥的群里,給他們個(gè)警示!

話不多說(shuō),上代碼一點(diǎn)點(diǎn)解釋:
溫馨提示:這是我為了滿足自身需要而編寫的代碼,請(qǐng)不要照搬,當(dāng)然與我有同樣需求的隨意嘍。同時(shí)中間的解釋也根據(jù)我的代碼去解釋,沒(méi)有刻意去講解語(yǔ)法,請(qǐng)諒解!

pipeline{
    agent any
    stages{
        stage("拉去代碼"){
            steps {
                echo "STEP 1 :clone code"
            }

        }
        stage("打包代碼"){
            steps {
                echo "step 2 : code package"
                sh label: '', script: '/usr/bin/ssh -p 62322 root@*.*.*.* "cd /var/www/html/pipeline/mytest && git pull && chmod -R 777 /var/www/html/pipeline/mytest/storage && composer install"'
            }
        }
        stage("上線發(fā)布"){
            steps {
                echo "step 3 :deploy package"
            }
        }
    }
    post {
        success {
            dingTalk accessToken:'釘釘機(jī)器人的token', 
            imageUrl:'圖片的url', 
            jenkinsUrl:'http://192.168.5.194:8080/', 
            message:'pipeline-test代碼部署成功。', 
            notifyPeople:''
        }
        failure {
            dingTalk accessToken:'釘釘機(jī)器人的token', 
            imageUrl:'圖片的url', 
            jenkinsUrl:'http://192.168.5.194:8080/', 
          message:'pipeline-test代碼部署失敗'。, 
          notifyPeople:''
        }
    }

}

詳解:

agent

          指示 Jenkins 為整個(gè)流水線分配一個(gè)執(zhí)行器(在 Jenkins 環(huán)境中的任何可用代理/節(jié)點(diǎn)上)和工作區(qū)。

echo

          寫一個(gè)簡(jiǎn)單的字符串到控制臺(tái)輸出。注意這里不是shell命令行的echo或php語(yǔ)法。和他們作用相同而已。

stage

          定義了在整個(gè)流水線的執(zhí)行任務(wù)的概念性地不同的的子集(比如 "Build", "Test" 和 "Deploy" 階段), 它被許多插件用于可視化 或Jenkins流水線目前的 狀態(tài)/進(jìn)展.

可能這句話不太形象(我第一次看官文也是蒙蔽),來(lái)張圖
jenkins持續(xù)集成--看我如何從1到代碼自動(dòng)部署

其中最后一個(gè)是post處理的狀態(tài)。

在打包代碼的stage塊中

sh label: '', script: '/usr/bin/ssh  root@*.*.*.* "cd /var/www/html/pipeline/mytest && git pull && chmod -R 777 /var/www/html/pipeline/mytest/storage && composer install"'

這是通過(guò)jenkins的片段生成器生成的符合語(yǔ)法的命令,可以在shell中去執(zhí)行的命令
那么,如何使用jenkins片段生成器?
(1)、點(diǎn)擊流水線語(yǔ)法
jenkins持續(xù)集成--看我如何從1到代碼自動(dòng)部署

(2)、從實(shí)例步驟中選擇sh:shell script。在文本框輸入需要生成的shell命令,
jenkins持續(xù)集成--看我如何從1到代碼自動(dòng)部署
(3)、點(diǎn)擊生成流水線腳本 按鈕即可成成相應(yīng)的流水線語(yǔ)法

Post

類似于python中try語(yǔ)句。如何根據(jù)stage執(zhí)行的結(jié)果而進(jìn)行特定處理則是實(shí)際Pipeline使用中經(jīng)常會(huì)碰到的問(wèn)題。所以這里post就是來(lái)做對(duì)異常處理的功能。同時(shí),你也可以理解為自由風(fēng)格中的構(gòu)建后的操作步驟(在自由風(fēng)格中發(fā)釘釘可以下載dingding的插件)。而這個(gè)post塊,就是我要滿足自己加的釘釘反饋的需求。說(shuō)到這里為了讓大家更明白post的使用方法想再多解釋一下:

使用限制:

需要寫在pipeline或者stage塊中
注意:post塊的位置一定要遵循這個(gè)原則,否則不會(huì)執(zhí)行。

支持的條件預(yù)置:

always: 無(wú)論pipeline或者stage的執(zhí)行結(jié)果如何,此塊中的預(yù)置操作都會(huì)執(zhí)行。

changed:只有當(dāng)pipeline或者stage的執(zhí)行后,當(dāng)前狀態(tài)與之前發(fā)生了改變時(shí),此塊中的預(yù)置操作才會(huì)執(zhí)行。

fixed:前一次運(yùn)行為不穩(wěn)定狀態(tài)或者失敗狀態(tài),而且本次運(yùn)行成功結(jié)束,這兩個(gè)條件同時(shí)滿足時(shí),此塊中的預(yù)置操作才會(huì)執(zhí)行。

regression: 本次運(yùn)行狀態(tài)為不穩(wěn)定狀態(tài),失敗狀態(tài)或者是中止?fàn)顟B(tài),而且前一次運(yùn)行成功結(jié)束,這兩個(gè)條件同時(shí)滿足時(shí),此塊中的預(yù)置操作才會(huì)執(zhí)行。

aborted:當(dāng)前pipeline或者stage的狀態(tài)為aborted時(shí),此塊中的預(yù)置操作才會(huì)執(zhí)行。通常是由于流水線被手工中會(huì)導(dǎo)致此狀態(tài)產(chǎn)生,而產(chǎn)生此狀態(tài)后,通常在Jenkins的UI界面會(huì)顯示為灰色。

failure:當(dāng)前pipeline或者stage的狀態(tài)為failed時(shí),此塊中的預(yù)置操作才會(huì)執(zhí)行。而產(chǎn)生此狀態(tài)后,通常在Jenkins的UI界面會(huì)顯示為紅色。

success:當(dāng)前pipeline或者stage的狀態(tài)為success時(shí),此塊中的預(yù)置操作才會(huì)執(zhí)行。而產(chǎn)生此狀態(tài)后,通常在Jenkins的UI界面會(huì)顯示為綠色。

unstable: 當(dāng)前pipeline或者stage的狀態(tài)為unstable時(shí),此塊中的預(yù)置操作才會(huì)執(zhí)行。通常情況下測(cè)試失敗或者代碼規(guī)約的違反都會(huì)導(dǎo)致此狀態(tài)產(chǎn)生,而產(chǎn)生此狀態(tài)后,通常在Jenkins的UI界面會(huì)顯示為黃色。

unsuccessful:當(dāng)前pipeline或者stage的狀態(tài)不是success時(shí),此塊中的預(yù)置操作才會(huì)執(zhí)行。

cleanup:無(wú)論pipeline或者stage的狀態(tài)為何種狀態(tài),在post中的其他的條件預(yù)置操作執(zhí)行之后,此塊中的預(yù)置操作就會(huì)執(zhí)行。

我用到了兩個(gè),分別是success和failure,在成功時(shí)應(yīng)該做什么操作,在失敗時(shí)應(yīng)該做什么操作。

dingTalkaccessToken:'釘釘機(jī)器人的token', 如果不知道如何添加釘釘機(jī)器人,去隔壁百度即可
imageUrl:'在發(fā)送的信息里會(huì)附加這個(gè)圖片',
jenkinsUrl:'自己jenkins的訪問(wèn)地址', 發(fā)送的信息就是這個(gè)鏈接,可以直接跳轉(zhuǎn)到我們的jenkins
message:'發(fā)送的文本信息、提示信息',
notifyPeople:'需要通知的人'

到這里我的腳本的大概情況也就介紹完畢。如果想了解詳細(xì)的jenkins語(yǔ)法,推薦學(xué)習(xí)地址
https://jenkins.io/zh/doc/book/pipeline/ 中文的,而且挺詳細(xì)。我這里寫的腳本僅僅是滿足我的個(gè)人需求,有類似需求的伙伴可以參考!

再來(lái)一個(gè)溫馨提示:初學(xué)者一定注意好代碼塊的書寫,盡量做到規(guī)范,因?yàn)檫@樣才好容易排錯(cuò)。 Groovy 語(yǔ)法大都代碼塊可能因?yàn)橐粋€(gè)花括號(hào)就能找個(gè)半天。所以盡量規(guī)范。如果有 Groovy 語(yǔ)法高亮的編輯器就更好了。

四、測(cè)試job運(yùn)行情況
點(diǎn)擊立即構(gòu)建
jenkins持續(xù)集成--看我如何從1到代碼自動(dòng)部署

執(zhí)行完畢后,通過(guò)控制臺(tái)輸出可以看到整個(gè)過(guò)程

jenkins持續(xù)集成--看我如何從1到代碼自動(dòng)部署
釘釘消息
jenkins持續(xù)集成--看我如何從1到代碼自動(dòng)部署

到此便大功告成,讓你們的程序員小哥哥去推代碼試試吧!

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


網(wǎng)頁(yè)名稱:jenkins持續(xù)集成--看我如何從1到代碼自動(dòng)部署-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://weahome.cn/article/dccjce.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部