gitlab+jenkins自動化部署

基於gitlab和jenkins的自動化部署html

 

Gitlab基於Jenkins自動化部署教程:java

http://www.javashuo.com/article/p-zypbbqcq-dq.htmlpython

http://www.javashuo.com/article/p-oygjlpth-kv.htmllinux

 

GitLab是一個代碼倉庫,用來管理代碼。git

Jenkins是一個自動化服務器,能夠運行各類自動化構建、測試或部署任務。因此這二者結合起來,就能夠實現開發者提交代碼到GitLab,Jenkins以必定頻率自動運行測試、構建和部署的任務,幫助開發團隊更高效的集成和發佈代碼。web

1、GitLab介紹

GitLab:是一個基於Git實現的在線代碼倉庫託管軟件,你能夠用gitlab本身搭建一個相似於Github同樣的系統,通常用於在企業、學校等內部網絡搭建git私服。
功能:Gitlab 是一個提供代碼託管、提交審覈和問題跟蹤的代碼管理平臺。對於軟件工程質量管理很是重要。
版本:GitLab 分爲社區版(CE) 和企業版(EE)。
配置:建議CPU2核,內存2G以上。正則表達式

2、Gitlab的服務構成:

Nginx:靜態web服務器。
gitlab-shell:用於處理Git命令和修改authorized keys列表。(Ruby)
gitlab-workhorse: 輕量級的反向代理服務器。(go)redis

GitLab Workhorse是一個敏捷的反向代理。它會處理一些大的HTTP請求,好比文件上傳、文件下載、Git push/pull和Git包下載。其它請求會反向代理到GitLab Rails應用,即反向代理給後端的unicorn。算法

logrotate:日誌文件管理工具。
postgresql:數據庫。
redis:緩存數據庫。
sidekiq:用於在後臺執行隊列任務(異步執行)。(Ruby)
unicorn:An HTTP server for Rack applications,GitLab Rails應用是託管在這個服務器上面的。(Ruby Web Server,主要使用Ruby編寫)sql

3、gitlab的安裝配置

一、安裝依賴性:

yum install curl policycoreutils openssh-server openssh-clients postfix

 

二、查看服務狀態確保開啓:

systemctl status postfix.service

 

三、安裝工具包:

yum install -y net-tools

 

四、下載安裝gitlab:

gitlab開源軟件鏡像站:

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

 

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.5.3-ce.0.el7.x86_64.rpm

 

 

rpm -ivh gitlab-ce-12.5.3-ce.0.el7.x86_64.rpm

 

yum install policycoreutils-python

 

再次進行安裝:rpm -ivh gitlab-ce-12.5.3-ce.0.el7.x86_64.rpm

 

五、編輯配置文件寫入當前主機IP(注:下面第8部能夠一塊兒編輯):

vim /etc/gitlab/gitlab.rb

 

六、初始化gitlab:gitlab-ctl reconfigure

 

七、重載服務:gitlab-ctl restart

 

八、修改gitlab倉庫路徑:

建立/data/gitlab目錄

mkdir -p /data/gitlab

修改gitlab配置文件

vim /etc/gitlab/gitlab.rb

git_data_dir的path裏面添加 "/data/gitlab"(注:這裏去掉前面的#符號)

 

中止當前gitlab,從新加載配置

gitlab-ctl stop

 

gitlab-ctl reconfigure

 

從新加載後,會發如今/data/gitlab目錄下多出一個repositories目錄

 

最後啓動gitlab便可

gitlab-ctl start

九、在瀏覽器輸入IP地址進行驗證,是否安裝成功,另外輸入8位密碼:

(我這裏是admin123456

 

十、設置用戶密碼:root,admin123456

 

登錄成功:

 

十一、建立一個新工程:

 

 

十二、配置gitlab免密鏈接:

1)前提:得有一個代碼倉庫,而後在倉庫建立分支並建立文件,這裏已存在

2)其次,得配置一個ssh公鑰到gitlab上,這樣才能模擬開發上傳代碼到gitlab

使用ssh-keygen生成私鑰和公鑰:(rsa加密算法生成)

ssh-keygen -t rsa -C 1483415221@qq.com

這裏須要:三次回車

 

 

查看公鑰:cat id_rsa.pub

 

將公鑰放到密鑰欄裏,這樣就可使用ssh方式來上傳代碼了:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKt4gqFEGve5I9m7S+j5Rtd78h3EsaUkHEJcuVjVEQrMmmQbbHOX7ZVPcm6+oBiWi31tB7OMajNg+qSELg8fYECDePLLeBwrPUuMLt7k7nJZ/YmbZ241d2h8zTPZ+xyQ9NPfatWzr6NpjdCXjrMz9+8w4BiCAdXIC2lVr0Aef50gpgaRwy18CZrV8P/qynv8N2r/zGge6xKgbTr11AVCp2SEkEI5E1NpyxBEyrj32/LWOODZ84NSLF8SYlbMIE12xwo+ueVmhhQSB6XryrsF5AYGcESICHmvzMO76JSGnQPwmxyPZa2d44cOMOj2HNB0m2I2P7dDTJ37eFWzZzSU8h

 

 

 

1三、克隆代碼倉庫,而後測試是否可以上傳代碼到gitlab:

git clone git@192.168.5.11:root/wyl.git

 

 

修改文本內容,提交到gitlab上看可否同步上去:

 

git add README.md 提交到暫存區

git commit -m "add README.md" 直接提交

 

git config --global user.email 1483415221@qq.com

git config --global user.name root

git commit -m "add README.md"

git push

這裏是用shell編寫的一個文本提交至gitlab:

echo 123456 > rc.txt

git add .

git commit -m "rc.txt"

git push

 

 

 

 

到這裏gitlab就配置完成。

 

4、Jenkins介紹

一、Jenkins 是什麼?   

 Jenkins 是一個可擴展的持續集成引擎。

二、主要用於:    

持續、自動地構建/測試軟件項目。     

監控一些定時執行的任務。

三、Jenkins 擁有的特性包括:    

易於安裝-只要把jenkins.war部署到servlet容器,不須要數據庫支持。     

易於配置-全部配置都是經過其提供的web界面實現。     

集成RSS/E-mail經過RSS發佈構建結果或當構建完成時經過e-mail通知。     

生成JUnit/TestNG測試報告。     

分佈式構建支持Jenkins可以讓多臺計算機一塊兒構建/測試。     

文件識別:Jenkins可以跟蹤哪次構建生成哪些jar,哪次構建使用哪一個版本的jar等。     

插件支持:支持擴展插件,你能夠開發適合本身團隊使用的工具。

四、Jenkins 安裝部署方式(如下4種方式後續都會寫到):    

(1)直接下載war包jenkins.war部署到servlet容器中,如tomcat,下載地址https://jenkins.io/download    

(2)下載war包使用命令直接運行war包,java -jar jenkins.war    

(3)windows下載zip包解壓運行jenkins.exe便可安裝成windows服務    

(4)下載rpm包在linux下安裝並配置服務

5、Jenkins安裝配置

教程:https://blog.csdn.net/xishaoguo/article/details/88577459

一、下載Jenkins包:https://jenkins.io/zh/download/

 

 

wget https://pkg.jenkins.io/redhat-stable/jenkins-2.190.3-1.1.noarch.rpm

 

若是這裏下載速度過慢,也能夠用rz本地直接上傳。

二、安裝Jenkins:

sudo rpm -ih jenkins-2.190.3-1.1.noarch.rpm

 

自動安裝完成以後:

/usr/lib/jenkins/jenkins.war    WAR包

/etc/sysconfig/jenkins       配置文件

/var/lib/jenkins/       默認的JENKINS_HOME目錄

/var/log/jenkins/jenkins.log    Jenkins日誌文件

三、啓動Jenkins:sudo service jenkins start

 

解決辦法:修改java路徑便可

find / -name jenkins

 

cd /etc/rc.d/init.d/

 

vim jenkins

 

上圖是默認路徑,修改成本機java路徑,以下圖一步到位便可:

 

sudo service jenkins start

systemctl daemon-reload           按提示:需重新加載單元

 

service jenkins start

service jenkins stop   中止Jenkins服務

service jenkins restart   重啓Jenkins服務

 

這裏若是防火牆未關閉,需先關閉,再啓動jenkins:systemctl stop firewalld.service

查看Jenkins是否正常運行,以下圖表示未運行:systemctl status jenkins

 

修改Jenkins端口號:vim /etc/sysconfig/jenkins

 

service jenkins start

systemctl status jenkins

 

瀏覽器驗證失敗,以下圖:

 

不少人說gitlab很佔內存,難道個人2G內存也被佔完了嗎?因而使用free命令看了一下

free -h

 

發現個人運行內存就剩77M了,因而停掉gitlab:

gitlab-ctl  stop

 

再次查看有可用內存了:free -h

 

而後這裏須要再次啓動Jenkins:

service jenkins start

systemctl status jenkins

 

再次在瀏覽器驗證,以下圖表示成功:192.168.5.11:8082

 

四、網頁配置Jenkins:

根據提示在虛擬機獲取初始化密碼:cat /var/lib/jenkins/secrets/initialAdminPassword

 

複製粘貼進去,進行下一步:

52b6aedc282f4e2ea322a2d563c95a16

 

 

這裏自動安裝插件,安裝失敗點擊重試,但有時候由於網絡緣由能夠跳過這一步:

 

建立管理員用戶,保存完成:

 

 

 

到這裏Jenkins就安裝完成啦。

五、因爲上面插件加載失敗,這裏須要先從新登陸,再安裝Jenkins所需插件:

 

個人Jenkins插件上面未安裝成功,這裏從新安裝,點擊系統管理--插件管理--搜索--勾選安裝便可:

須要安裝的插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git ParameterMaven Integration plugin

 

 

 

 

插件安裝失敗,有兩種緣由:

一、請求超時,網絡正常的時候從新安裝便可;

二、安裝時沒有依賴的安裝包。

若是Jenkins屢次安裝都不行須要換種方式解決:

http://www.javashuo.com/article/p-hfhooove-gy.html

Jenkins插件下載地址:

http://updates.jenkins-ci.org/download/plugins/

以下圖,所需插件均已安裝完成:

 

六、添加完插件重啓jenkins,開始添加要部署代碼的主機,注意必定是要可以經過ssh登錄的用戶

添加主機:系統管理 - 系統設置 找到Publish over SSH設置免密便可,以下圖:

 

設置好以後,測試報錯:

 

這是因爲服務器上的sshd服務沒有開啓致使的,登陸到服務器上執行命令

sudo service sshd start   //開啓sshd服務

將公鑰拷貝到authorized_keys文件發現以前的用戶1483415221@qq.com被添加進去,以下圖:

cat id_rsa.pub >> authorized_keys

 chmod 600 authorized_keys

 

 

七、系統管理--->全局工具配置

修改maven默認settings.xml文件,配置git、jdk、maven工具後保存(不要勾選自動安裝)

 

Git配置按下圖所示環境走:

 

八、Jenkins中建立一個job:

 

輸入項目名,構建一個自由風格的項目:

 

如下是Git配置:

 

 

 

構建觸發器:

http://192.168.5.11:8082/project/testwyl

這個URL待會配置gitlab會用到,以下圖所示用正則表達式生成gitlab webbook的安全令牌ef04574b270a8be397af2c7789493f8d(每次都生成新的)

 

 

 

當前代碼部署到的目錄,而後重啓服務,以下圖:

 

 

配置gitlab:

 

取消ssl勾選,由於咱們沒有在Jenkins上配置https,最後點擊增長web鉤子

 

 

這裏報錯是由於使用的最新版本的gitlab,這是由於新版的gitlab爲了安全默認禁止了本地局域網地址調用web hook,咱們在設置裏容許就行,具體步驟以下:

 

再次添加web鉤子,而後進行test,以下圖表示配置成功了:

 

 

以下圖,測試的記錄共3次:

 

九、測試提交代碼是否會部署到遠程主機:

git clone git@192.168.5.11:root/wyl.git

cd wyl/

echo '測試Jenkins' > index.html

git add .

git commit -m 'add index.html'

git push

#提交以後去jenkins頁面看看

 

以下圖是構建成功的項目:

相關文章
相關標籤/搜索