GitHub+Jenkins持续集成简介
DevOps(英文Development(開(kāi)發(fā))和Operations(技術(shù)運(yùn)營(yíng))的組合)是一組過(guò)程、方法與系統(tǒng)的統(tǒng)稱(chēng),用于促進(jìn)開(kāi)發(fā)(應(yīng)用程序/軟件工程)、技術(shù)運(yùn)營(yíng)和質(zhì)量保障(QA)部門(mén)之間的溝通、協(xié)作與整合。它的出現(xiàn)是由于軟件行業(yè)日益清晰地認(rèn)識(shí)到:為了按時(shí)交付軟件產(chǎn)品和服務(wù),開(kāi)發(fā)和運(yùn)營(yíng)工作必須緊密合作
持續(xù)集成概念:
1.1 什么是持續(xù)集成:
持續(xù)集成是指開(kāi)發(fā)者在代碼的開(kāi)發(fā)過(guò)程中,可以頻繁的將代碼部署集成到主干,并進(jìn)程自動(dòng)化測(cè)試?
1.3 什么是持續(xù)交付:
持續(xù)交付指的是在持續(xù)集成的環(huán)境基礎(chǔ)之上,將代碼部署到預(yù)生產(chǎn)環(huán)境?
1.4 持續(xù)部署:
在持續(xù)交付的基礎(chǔ)上,把部署到生產(chǎn)環(huán)境的過(guò)程自動(dòng)化,持續(xù)部署和持續(xù)交付的區(qū)別就是最終部署到生產(chǎn)環(huán)境是自動(dòng)化的。?
1.5 部署代碼上線(xiàn)流程
運(yùn)維必知OWASP
Jenkins上OWASP 插件介紹:?它是開(kāi)放式Web應(yīng)用程序安全項(xiàng)目
[OWASP,Open Web Application Secunity Project]?
它每年會(huì)出一個(gè)top10的安全漏洞,我們需要知道當(dāng)前top10的漏洞有哪些?
https://www.owasp.org/p_w_picpaths/5/57/OWASP_Proactive_Controls_2.pdf?
https://www.owasp.org/index.php/Top_10_2013-Top_10
Gitlab介紹
GitLab是一個(gè)利用?Ruby on Rails?開(kāi)發(fā)的開(kāi)源應(yīng)用程序,實(shí)現(xiàn)一個(gè)自托管的Git項(xiàng)目倉(cāng)庫(kù),可通過(guò)Web界面進(jìn)行訪(fǎng)問(wèn)公開(kāi)的或者私人項(xiàng)目。?
GitLab擁有與Github類(lèi)似的功能,能夠?yàn)g覽源代碼,管理缺陷和注釋。可以管理團(tuán)隊(duì)對(duì)倉(cāng)庫(kù)的訪(fǎng)問(wèn),它非常易于瀏覽提交過(guò)的版本并提供一個(gè)文件歷史庫(kù)。它還提供一個(gè)代碼片段收集功能可以輕松實(shí)現(xiàn)代碼復(fù)用,便于日后有需要的時(shí)候進(jìn)行查找。
環(huán)境準(zhǔn)備
[root@linux-node1?~]#?cat?/etc/redhat-release? CentOS?Linux?release?7.3.1611?(Core)? [root@linux-node1?~]#?uname?-r 3.10.0-514.2.2.el7.x86_64
下載epel源
更新系統(tǒng)并重啟
[root@linux-node1 ~]# yum update -y && reboot
我們一共有2臺(tái):192.168.56.11和192.168.56.12我們安裝在192.168.56.11上
[root@linux-node1?/]#?yum?install?curl?policycoreutils?openssh-server?openssh-clients?postfix?-y [root@linux-node1?/]#?systemctl?start?postfix [root@linux-node1?/]#?curl?-sS?https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh?|?sudo?bash [root@linux-node1?/]#?yum?install?-y?gitlab-ce
#由于網(wǎng)絡(luò)問(wèn)題,國(guó)內(nèi)用戶(hù),建議使用清華大學(xué)的鏡像源進(jìn)行安裝
在安裝一個(gè)git客戶(hù)端
配置并啟動(dòng)gitlab-ce
[root@linux-node1?~]#?gitlab-ctl?reconfigure #時(shí)間可能比較長(zhǎng),耐心你等待即可!---- gitlab常用命令: 關(guān)閉gitlab:[root@linux-node2?~]#?gitlab-ctl?stop 啟動(dòng)gitlab:[root@linux-node2?~]#?gitlab-ctl?start 重啟gitlab:[root@linux-node2?~]#?gitlab-ctl?restart
可以使用gitlab-ctl管理gitlab,例如查看gitlab狀態(tài):
提示:?我們要保證80端口不被占用
我們可以查看一下端口
Web:訪(fǎng)問(wèn):192.168.56.11?
提示:啟動(dòng)gitlab需要時(shí)間!
Web頁(yè)面提示我們需要設(shè)置一個(gè)賬號(hào)密碼(我們要設(shè)置最少8位數(shù)的一個(gè)賬號(hào)密碼)我們?cè)O(shè)置密碼為:12345678
我們?cè)诤竺娴捻?yè)面設(shè)置用戶(hù)名?
我們現(xiàn)在是以管理員的身份登陸?
我們點(diǎn)擊右上角管理區(qū)域
第一步:我們關(guān)閉自動(dòng)注冊(cè),因?yàn)槲覀儍?nèi)部使用不需要用戶(hù)自己注冊(cè),由運(yùn)維分配用戶(hù)即可?
提示:Save在頁(yè)面最下放!!!!!! 記得點(diǎn)保存!!!!!!!!!!!!
現(xiàn)在在查看首頁(yè)就沒(méi)有注冊(cè)頁(yè)面了
第二步:我們創(chuàng)建一個(gè)用戶(hù),在創(chuàng)建一個(gè)項(xiàng)目
先創(chuàng)建一個(gè)組?
**提示:**gitlab上面有一個(gè)項(xiàng)目跟組的概念,我們要?jiǎng)?chuàng)建一個(gè)組,才可以在創(chuàng)建一個(gè)項(xiàng)目。因?yàn)間itlab的路徑上首先是ip地址,其次是組?
點(diǎn)擊下方Create group
然后我們?cè)诮M里面創(chuàng)建項(xiàng)目
下一步:?
創(chuàng)建完成之后它提示我們可以創(chuàng)建一個(gè)key對(duì)它進(jìn)行管理
我們點(diǎn)擊上面的README然后我們隨便在里面寫(xiě)點(diǎn)東西?
填寫(xiě)完成我們點(diǎn)擊前面進(jìn)行查看
我們要做免密驗(yàn)證,現(xiàn)在去192.168.56.11復(fù)制下面的.ssh/id_rsa.pub
[www@linux-node1?~]$?cat?.ssh/id_rsa.pub ssh-rsa?AAAAB3NzaC1yc2EAAAADAQABAAABAQC8wfTSQcSyhlsGYDSUtuxZNb1Gl3VU56nAPuxAEF2wP2ZW Z2yva354ZdKOOb6rZx2yZxqy5XIj7opBJPbhraXap+NtCH5qWyktR7dH19RBmCS7vUGgvk/5RQC0mVFrC8cz tBp0M/5HxMuhVir6mD1rhbDvvaLL6S5y4gljzC1Gr2VRHIb4Et9go/38c2tqMjYCike7WWbFRyL9wTal6/14 6+9uREZ/r69TBTKrGuRqF44fROQP8/ly02XFjlXyl6J5NnGTk6AU855pwasX0W9aNPce3Ynrpe1TBTubmfQh rH1BwteEmg+ZXNRupxjumA+tPWfBUX+u51r/w7W/d4PD?www@linux-node1#提示:需要提前做秘鑰認(rèn)證
設(shè)置Keys?
添加完之后我們就可以使用www用戶(hù),就可以拉了?
點(diǎn)擊Projects 選擇SSH,我們要將代碼拉去下來(lái)
[www@linux-node1?~]$?cd?/deploy/code/ [www@linux-node1?code]$?ls web-demo [www@linux-node1?code]$?rm?-rf?web-demo/ [www@linux-node1?~]$?git?clone??git@linux-node1:web/web-demo.git Cloning?into?'web-demo'... The?authenticity?of?host?'linux-node1?(192.168.56.11)'?can't?be?established. ECDSA?key?fingerprint?is?b5:74:8f:f1:03:2d:cb:7d:01:28:30:12:34:9c:35:8c. Are?you?sure?you?want?to?continue?connecting?(yes/no)??yes Warning:?Permanently?added?'linux-node1'?(ECDSA)?to?the?list?of?known?hosts. remote:?Counting?objects:?3,?done. remote:?Compressing?objects:?100%?(2/2),?done. remote:?Total?3?(delta?0),?reused?0?(delta?0) Receiving?objects:?100%?(3/3),?done. [www@linux-node1?~]$?ls?web-demo/ README.md #git?clone是克隆的意思
我們來(lái)模擬開(kāi)發(fā)繼續(xù)寫(xiě)代碼提交
[www@linux-node1?~]$?mkdir?-p?/web-demo [www@linux-node1?~]$?vim?web-demo/index.html [www@linux-node1?~]$?cd?web-demo/ [www@linux-node1?web-demo]$ [www@linux-node1?web-demo]$?ls index.html??README.md [www@linux-node1?web-demo]$?git?add?* [www@linux-node1?web-demo]$?git?commit?-m?"add?index.html" ***?Please?tell?me?who?you?are. Rungit?config?--global?user.email?"you@example.com"git?config?--global?user.name?"Your?Name" to?set?your?account's?default?identity. Omit?--global?to?set?the?identity?only?in?this?repository. fatal:?empty?ident?name?(for?<www@linux-node1.(none)>)?not?allowed需要身份驗(yàn)證:
git push命令用于將本地分支的更新,推送到遠(yuǎn)程主機(jī)。它的格式與git pull命令相仿。
[www@linux-node1?web-demo]$?git?push warning:?push.default?is?unset;?its?implicit?value?is?changing?in Git?2.0?from?'matching'?to?'simple'.?To?squelch?this?message and?maintain?the?current?behavior?after?the?default?changes,?use:git?config?--global?push.default?matching To?squelch?this?message?and?adopt?the?new?behavior?now,?use:git?config?--global?push.default?simple See?'git?help?config'?and?search?for?'push.default'?for?further?information. (the?'simple'?mode?was?introduced?in?Git?1.7.11.?Use?the?similar?mode 'current'?instead?of?'simple'?if?you?sometimes?use?older?versions?of?Git) Counting?objects:?4,?done. Delta?compression?using?up?to?4?threads. Compressing?objects:?100%?(3/3),?done. Writing?objects:?100%?(3/3),?7.66?KiB?|?0?bytes/s,?done. Total?3?(delta?0),?reused?0?(delta?0) To?git@linux-node1:web/web-demo.git0c1d357..be8a547??master?->?master
我們的gitlab安裝在opt/gitlab?
gitlab配置文件存放在etc/gitlab/gitlab.rb?
#現(xiàn)在git 需要加上主機(jī)名,我們可以修改配置文件,讓它使用IP進(jìn)行訪(fǎng)問(wèn)
編輯配置文件
我們從新登陸進(jìn)行查看?
咦! 為啥還沒(méi)改呢! 我們從新創(chuàng)建一個(gè)項(xiàng)目在試一下
友情提示:?
關(guān)于Git可以查看徐布斯博客?or?廖雪峰Git
自動(dòng)化運(yùn)維之DevOps
DevOps(英文Development(開(kāi)發(fā))和Operations(技術(shù)運(yùn)營(yíng))的組合)是一組過(guò)程、方法與系統(tǒng)的統(tǒng)稱(chēng),用于促進(jìn)開(kāi)發(fā)(應(yīng)用程序/軟件工程)、技術(shù)運(yùn)營(yíng)和質(zhì)量保障(QA)部門(mén)之間的溝通、協(xié)作與整合。?
它的出現(xiàn)是由于軟件行業(yè)日益清晰地認(rèn)識(shí)到:為了按時(shí)交付軟件產(chǎn)品和服務(wù),開(kāi)發(fā)和運(yùn)營(yíng)工作必須緊密合作
簡(jiǎn)單的來(lái)說(shuō)DevOps是一種文化,是讓開(kāi)發(fā)開(kāi)發(fā)、運(yùn)維、測(cè)試能夠之間溝通和交流
自動(dòng)化運(yùn)維工具:saltstack、jenkins、等。因?yàn)樗麄兊哪繕?biāo)一樣,為了我們的軟件、構(gòu)建、測(cè)試、發(fā)布更加的敏捷、頻繁、可靠?
如果運(yùn)維對(duì)git不熟,是無(wú)法做自動(dòng)化部署。因?yàn)樗械捻?xiàng)目都受制于開(kāi)發(fā)
Jenkins 介紹
Jenkins只是一個(gè)平臺(tái),真正運(yùn)作的都是插件。這就是jenkins流行的原因,因?yàn)閖enkins什么插件都有?
Hudson是Jenkins的前身,是基于Java開(kāi)發(fā)的一種持續(xù)集成工具,用于監(jiān)控程序重復(fù)的工作,Hudson后來(lái)被收購(gòu),成為商業(yè)版。后來(lái)創(chuàng)始人又寫(xiě)了一個(gè)jenkins,jenkins在功能上遠(yuǎn)遠(yuǎn)超過(guò)hudson
Jenkins官網(wǎng):https://jenkins.io/
安裝?
安裝JDK?
Jenkins是Java編寫(xiě)的,所以需要先安裝JDK,這里采用yum安裝,如果對(duì)版本有需求,可以直接在Oracle官網(wǎng)下載JDK。
安裝jenkins
[root@linux-node1?~]#?cd?/etc/yum.repos.d/ [root@linux-node1?yum.repos.d]#?wget?http://pkg.jenkins.io/redhat/jenkins.repo [root@linux-node1?~]#?rpm?--import?http://pkg.jenkins.io/redhat/jenkins.io.key [root@linux-node1?~]#?yum?install?-y?jenkins [root@linux-node1?~]#?systemctl?start?jenkins #本文使用yum進(jìn)行安裝,大家也可以使用編譯安裝。新版本的jenkins為了保證安全,在安裝之后有一個(gè)鎖,需要設(shè)置密碼之后才可以解鎖
Jenkins Web訪(fǎng)問(wèn)地址:192.168.56.11:8080?
友情提示:jenkins如果跟gitlab在一臺(tái)服務(wù)器需要將jenkins的端口進(jìn)行修改,需要將jenkins的8080修改為8081?
復(fù)制這個(gè)文件下面的ID,否則不可以進(jìn)行安裝。
我們選擇推薦安裝即可
它會(huì)給我們安裝一些基礎(chǔ)的插件?
設(shè)置用戶(hù)名密碼:?
點(diǎn)擊保存并退出?
早期jenkins默認(rèn)是不需要登陸的?
我們先來(lái)介紹一下jenkins基礎(chǔ)功能
我們點(diǎn)擊新建?
這里就是構(gòu)建一個(gè)項(xiàng)目
用戶(hù)界面:主要是一些用戶(hù)的管理?
可以看到當(dāng)前登陸用戶(hù)及用戶(hù)權(quán)限等
任務(wù)歷史:可以查看到所有構(gòu)建過(guò)的項(xiàng)目的歷史?
#之所以叫構(gòu)建,是因?yàn)槎际莏ava,因?yàn)槿绻皇莏ava程序就沒(méi)有構(gòu)建這個(gè)詞。但是我們也可以把一些工作稱(chēng)之為構(gòu)建
系統(tǒng)管理:存放jenkins所有的配置?
My Views:視圖功能,我們可以自己創(chuàng)建一個(gè)自己的視圖?
構(gòu)建隊(duì)列:如果當(dāng)前有視圖任務(wù)都會(huì)顯示在這里?
構(gòu)建執(zhí)行狀態(tài):顯示在正構(gòu)建的任務(wù)?
系統(tǒng)管理:-系統(tǒng)設(shè)置
設(shè)置Jenkins全局設(shè)置&路徑?
Jenkins系統(tǒng)管理比較重要的就是插件管理了?
#因?yàn)閖enkins所有的東西都需要靠插件來(lái)完成,
點(diǎn)擊已安裝可以查看我們的安裝?
我們想安裝什么插件,我們可以選擇可選插件
我們?yōu)榱撕蚲itlab和在一起,我們需要安裝一個(gè)插件?
查看還可以去jenkins官網(wǎng)下載,然后上傳插件?
因?yàn)楹芏嗖寮枰痢痢敛趴梢岳^續(xù)下載,jenkins還提供了代理的設(shè)置
轉(zhuǎn)載于:https://blog.51cto.com/yw666/1940391
總結(jié)
以上是生活随笔為你收集整理的GitHub+Jenkins持续集成简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: lols9赛季什么时候开始(s9全球总决
- 下一篇: 为什么卡片机没人用了(汉典为字的基本解释