jenkins+git+gitlab+ansible實現持續集成自動化部署


一、環境配置

192.168.42.8部署gitlab,節點一

192.168.42.9部署git,Jenkins,ansible服務器

192.168.42.10節點二

二、操作演示

  ①gitlab創建新的nginx項目

創建目錄及克隆
[root@localhost ~]# mkdir nn [root@localhost ~]# cd nn [root@localhost nn]# git clone http://192.168.42.8/root/nginx.git Cloning into 'nginx'... warning: You appear to have cloned an empty repository. [root@localhost nn]# ls nginx [root@localhost nn]# cd nginx/ [root@localhost nginx]# ls -a . .. .git

  ②發送密鑰

[root@localhost nginx]# ssh-keygen
[root@localhost nginx]# ssh-copy-id 192.168.42.8
[root@localhost nginx]# ssh-copy-id 192.168.42.10

  ③創建roles相關目錄,並編寫相關文件

1.創建roles目錄
[root@localhost nginx]# mkdir roles/nginx/{files,template,vars,tasks} -p
2.編寫vars文件 [root@localhost nginx]# vim roles
/nginx/vars/main.yaml [root@localhost nginx]# cat roles/nginx/vars/main.yaml conn: 2048 host_user: root por: 83 docu_root: /var/www/html
3.復制nginx至template下 [root@localhost nginx]# cp
/etc/nginx/nginx.conf roles/nginx/template/nginx.conf.j2
4.編輯nginx.conf,修改變量 [root@localhost nginx]# vim roles
/nginx/template/nginx.conf.j2 user {{ host_user }}; worker_connections {{ conn }}; listen {{ por }}; root {{ docu_root }};
5.編輯tasks文件 [root@localhost nginx]# cat roles
/nginx/tasks/main.yaml - template: src=roles/nginx/template/nginx.conf.j2 dest=/etc/nginx/nginx.conf - yum: name=nginx state=present - service: name=nginx state=restarted - copy: src=roles/nginx/files/index.html dest=/var/www/html
6.編寫測試文件 [root@localhost nginx]# echo
'I will success' >> roles/nginx/files/index.html [root@localhost nginx]# ls roles/nginx/files/ index.html 7.編寫清單文件 [root@localhost nginx]# cat inventory/jams [jams] 192.168.42.8 192.168.42.10 8.編寫劇本 [root@localhost nginx]# cat jams.yaml - hosts: all roles: - nginx
9.模擬執行劇本 [root@localhost nginx]# ansible-playbook -C -i inventory/jams jams.yaml [root@localhost nginx]# ansible
-playbook -i inventory/jams jams.yaml
10.提交 [root@localhost nginx]# git add . [root@localhost nginx]# git commit
-m v1 [root@localhost nginx]# git push -u origin master

 

jenkins 實現持續集成

 

經過上面的一些操作之后,我們已經完成了靜態網站的部署,以及代碼的上傳

但是發現還是每次執行需要輸入命令等

現在我們就使用jenkins來實現持續化部署

 

第一步:jenkins中創建任務

創建了一個自由風格的軟件項目

項目名稱為item7

 

第二步:添加源碼管理信息

這里的url就是你的項目的地址(即gitlab的倉庫鏈接地址

下面的憑證輸入之前添加的全局憑據的賬號和密碼。

 

 用腳本構建,cd到workspace下。

創建的bubu文件以及此次的任務名目錄(任務名是一個worksapce下的目錄)都會在workspace目錄下。

 可以看到我的任務腳本內執行ansible時並沒有指定清單inventory/test 這是因為我選擇了在/etc/ansible/hosts里面配置主機信息,這也是一種方法。

 

三:選擇立即構建執行任務。

可能會碰到以下報錯:

 

1)這里的失敗原因是因為運行jenkins程序的是jenkins用戶,我們連接節點的秘鑰是root的,所以現在連接不上

打開配置文件/var/lib/jenkins 將jenkins用戶改為root用戶即可。

 

2)有時候報錯時因為各主機之間的時間不同步,使用ntpdate同步時間后再次嘗試。

 

3)有時候部署gitlab的節點無法啟動nginx服務這是因為gitlab會自動啟動nginx,使用gitlab-ctl stop nginx,然后再啟動即可。

 

4)更有時候部署gitlab的ip換了,但是倉庫的鏈接地址還是沒變,這在gitlab網頁上不好修改,我們在做git clone克隆的時候以及用gitlab做持續集成的時候就需要自己手動修改。

 

 5)如果做jenkin持續集成構建時報錯 playbook xxx not found (找不到劇本)

或者其中一台節點無法重啟nginx服務

在部署jenkins服務的主機上提交推送文件給gitlab倉庫

然后試試關閉防火牆和重啟jenkins服務。

 

6)如果報錯找不到repository或者master分支,這是因為gitlab創建新項目的時候沒有創建搭建本地倉庫。

 

四:如果構建成功的話,可以去linux下的/var/lib/jenkins/workspace/下去查看是否含有bubu文件。

來證明gitlab+ansible+jenkins的持續集成實驗成功。


免責聲明!

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



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