devops持續集成,Centos7.6下gitlab+jenkins(pipeline)實現代碼自動上線


持續集成 gitlab+jenkins(pipeline)實現代碼自動上線

 

環境准備:
Centos7.6版本
ip:192.168.0.13 主機名:git
ip:192.168.0.23 主機名:jenkins
ip:192.168.0.15 主機名:web01
關閉防火牆
關閉selinux
分發公鑰使兩兩主機間可以免密碼連通

 


 192.168.0.13主機上

1.安裝gitlab
  #安裝gitlab要先安裝如下依賴包
  [root@git git_data]# yum install -y curl policycoreutils-python openssh-server
  #再安裝gitlab軟件包
  [root@git git_data]# rpm -ivh gitlab-ce-10.2.0-ce.0.el7.x86_64.rpm

 2.修改gitlab的配置文件

  [root@git git_data]# vim /etc/gitlab/gitlab.rb

  ...
  external_url 'http://192.168.0.13'        #在13行位置,修改url地址為本機的ip地址

 3.重新配置gitlab

  [root@git ~]# gitlab-ctl reconfigure

4.查看gitlab的狀態

  [root@git monitor]# gitlab-ctl status

5.然后就可以登錄gitlab了谷歌瀏覽器輸入http://192.168.0.13,第一次登錄會提示修改密碼,用戶名為root,密碼為修改后的密碼

 


 

 192.168.0.23主機上

1.安裝jenkins和jdk
  [root@jenkins ~]# rpm -ivh jdk-8u181-linux-x64.rpm
  [root@jenkins ~]# rpm -ivh jenkins-2.99-1.1.noarch.rpm

2.編輯配置文件改user為root
  [root@jenkins ~]# vim /etc/sysconfig/jenkins

  ...
  JENKINS_USER="root"

3.確認jdk已經安裝再啟動jenkins
  [root@jenkins ~]# systemctl start jenkins

4.登錄jenkins,在瀏覽器輸入http://192.168.0.23,第一次登錄會提示輸入密碼
  復制下面文件下的密碼到web頁面中到密碼框
  [root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
  fc0da02333a443799c90dead163240a0

5.輸入密碼后,繼續可能會有提示創建用戶,暫時不創建,因為默認有管理員賬號密碼
  管理員賬號為admin登錄后修改密碼為123

6.接着安裝jenkins的必要插件
  下載好插件包jenkins-plugins.tar.gz
  安裝jenkins插件,把下載的壓縮包解壓到/var/lib/jenkins/plugins
  把壓縮包里的plugin目錄下的文件移動到/var/lib/jenkins/plugins下即可

7.刷新頁面在系統管理下就可查看到安裝的插件了


192.168.0.15主機上

1.搭建好nginx環境
 安裝nginx,安裝配置方法可看我上一篇博客


 

上面步驟完成了gitlab,jenkins和nginx的搭建和部署,接下來就可以進行代碼項目的部署了

 

為了練習,這里在碼雲上面找了個開源項目


 

接着把碼雲的項目代碼導入到gitlab,方法如下圖1,2,3


完成代碼導入后繼續下面的操作

代碼的拉取和推送要先有代碼倉庫權限,因此要把git和jenkins主機的root用戶的ssh公鑰放到gitlab上,
然后可以在命令行進行測試:git clone
         

在gitlab添加公鑰的方法如下圖

  

 


 

開始新建pipeline項目,pipeline的聲明式腳本執行后可以查看到詳細的每一步執行,如果有錯誤還會提示錯誤位置和信息。

下面圖片的順序為操作步驟的順序,要按照下面圖片順序來搭建:

下面代碼為pipeline的聲明式腳本

pipeline{ agent any stages{ stage("get code"){ steps{ echo "get code" } } stage("unit test"){ steps{ echo "unit test" } } stage("package"){ steps{ sh 'tar zcf /opt/web-${BUILD_ID}.tar.gz' ./* --exclude=.git --exclude=Jenkinsfile } } stage("deploy"){ steps{ sh 'ssh 192.168.0.15 "cd /usr/share/nginx/ && mkdir web-${BUILD_ID}"' sh 'scp /opt/web-${BUILD_ID}.tar.gz 192.168.0.15:/usr/share/nginx/web-${BUILD_ID}' sh 'ssh 192.168.0.15 "cd /usr/share/nginx/web-${BUILD_ID} && tar xf web-${BUILD_ID}.tar.gz && rm -fr web-${BUILD_ID}.tar.gz"' sh 'ssh 192.168.0.15 "cd /usr/share/nginx/ && rm -fr html && ln -s web-${BUILD_ID} html"' } } } }

 


 以下為測試部分

 

谷歌瀏覽器輸入http://192.168.0.15

下圖為修改代碼的操作

[root@git monitor]# grep -n "dark上傳模擬" index.html                          #修改后查看修改的代碼      43: <a class="logo pull-left" href="index.html" style="width: 233px">dark上傳模擬</a>
[root@git monitor]# git commit -am "modified index.html"                        #把修改的代碼文件提交到本地倉庫 [master 19bf27d] modified index.html 1 file changed, 1 insertion(+), 1 deletion(-) [root@git monitor]# git push -u origin master                              #把本地倉庫的文件提交到遠程倉庫gitlab上 Counting objects: 5, done. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 329 bytes | 0 bytes/s, done. Total 3 (delta 2), reused 0 (delta 0) To git@192.168.0.13:dark/monitor.git 4eae6ad..19bf27d master -> master Branch master set up to track remote branch master from origin.

 

過一會刷新頁面后,代碼成功自動更改,就成功了

 

#####################博客文章為原創,僅供參考學習使用######################


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM