jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

jenkins主機內存和gitlab主機內存最好配置4G及以上,防止各自的web端打不開

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

1.配置JDK環境

1)jdk解壓到此目錄

[root@localhost src]# pwd /usr/local/src
[root@localhost src]# tar xvf jdk-8u211-linux-x64.tar.gz 

2)創建jdk相關的軟連接

[root@localhost src]# ln -sv  jdk1.8.0_211/ jdk
[root@localhost src]# ln -sv /usr/local/src/jdk/bin/* /usr/bin/

3)配置jdk的環境變量

[root@localhost src]# vim /etc/profile
……
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

4)環境變量生效

[root@localhost src]# source /etc/profile

5)測試java命令並查看java的版本號

[root@localhost src]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

2.安裝並配置jenkins

1)下載rpm包並進行安裝,可以看到jenkins的rpm包在安裝時無依賴

[root@localhost rpm]# ls
jenkins-2.164.3-1.1.noarch.rpm
[root@localhost rpm]# rpm -ivh jenkins-2.164.3-1.1.noarch.rpm 
warning: jenkins-2.164.3-1.1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID d50582e6: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
     1:jenkins-2.164.3-1.1              ################################# [100%]

2)修改jenkins的配置文件

[root@localhost jenkins]# grep '^[a-Z]' /etc/sysconfig/jenkins
JENKINS_HOME="/var/lib/jenkins"   #jenkins的家目錄,保存着其構建的項目、安裝的插件、
JENKINS_JAVA_CMD=""
JENKINS_USER="root"  #默認是jenkins用戶,這裏將這裏改爲root用戶,避免將來部署代碼到後端服務因爲權限問題導致部署失敗
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dcom.sun.management.jmxremote  #options選項中開啓監控功能,爲zabbix等監控軟件提供一個監控接口
-Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false
 -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname="192.168.1.15""
JENKINS_PORT="8080"
JENKINS_LISTEN_ADDRESS=""
JENKINS_HTTPS_PORT=""
JENKINS_HTTPS_KEYSTORE=""
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
JENKINS_HTTPS_LISTEN_ADDRESS=""
JENKINS_DEBUG_LEVEL="5"
JENKINS_ENABLE_ACCESS_LOG="no"
JENKINS_HANDLER_MAX="100"
JENKINS_HANDLER_IDLE="20"
JENKINS_ARGS=""

3)啓動jenkins服務

[root@localhost rpm]# systemctl start jenkins

4)查看jenkins服務監聽的端口

[root@localhost rpm]# ss -tnlp
State       Recv-Q Send-Q                                     Local Address:Port                    Peer Address:Port
……
LISTEN      0      50                                                 :::8080                                      :::*                  
 users:(("java",pid=2739,fd=166))
……

3.瀏覽器訪問jenkins的web端並登錄

1)瀏覽器訪問8080端口

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

2)服務器主機上查看此初始化管理員祕鑰文件,並將祕鑰輸入登錄jenkins的web端

[root@localhost rpm]# cat /var/lib/jenkins/secrets/initialAdminPassword
fb58302d30c34478b086244bd725bc68

3)安裝默認推薦插件

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

4)創建一個管理員賬號

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

5)進入jenkins主界面

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

4.安裝gitlab和blue ocean相關必要插件

1)在插件管理中過濾出需要安裝插件

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

2)正在安裝gitlab相關的插件

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

3)安裝一個blue ocean插件,是一個界面顯示插件

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

4)安裝角色權限插件

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

5.創建新用戶和角色以及權限管理等

1)創建一個新用戶

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

2)打開全局安全設置,將認證類型改爲角色認證,默認的認證類型是登錄用戶可以做任何事

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

3)創建一個角色

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

4)只給此角色分配一個讀權限

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

5)將新創建的用戶服務common角色

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

6)利用新創建的用戶登錄jenkins客戶端

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

7)可以看到此時的普通用戶登錄後沒看到系統管理這個選項,普通用戶無權限,設置了只有讀權限

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

8)此時創建一個job

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

9)可以看到沒有權限創建job

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

6.配置管理員郵箱

1)進入系統管理選擇系統設置,填寫管理員的郵箱配置

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

2)郵箱測試

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

7.通過ssh_key自動拉取gitlab中的代碼

在gitlab的web端

1)點擊用戶裏面的setting並找到ssh keys選項

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發
2)再將jenkeys的服務器的公鑰添加到gitlab服務器
jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

在jenkins服務端

1)此時可在命令行直接拉取gitlab的代碼

[root@jenkins ~]# git clone [email protected]:jie/web-page.git
Cloning into 'web-page'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), 244 bytes | 0 bytes/s, done.

2)查看拉取的代碼目錄

[root@jenkins ~]# ls
anaconda-ks.cfg  dump.rdb  sentinel_26379.log  web-page

3)進入目錄查看代碼內容,實現了在命令行直接拉取gitlab代碼

[root@jenkins ~]# cat web-page/index.html 
<h1>welcom to my gitlab page!</h1>

4)給jenkins的web端添加上自己的私鑰,實現在jenkins的web端直接拉取代碼

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

5)在構建一個項目工程

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

6)在點擊源碼管理選項進行連接gitlab的倉庫地址配置、認證方式選擇爲私鑰

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

7)點擊立即構建

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

8)查看最近一次構建

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

9)查看控制檯輸出(console output)

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

10)jenkins的服務端驗證所拉取的gitlab數據

[root@jenkins ~]# ls -a /var/lib/jenkins/workspace/website-html
.  ..  .git  index.html

8.jenkins的web服務端通過shell腳本自動部署代碼到後端服務

1)在jenkins服務端將免密認證文件發送到後端服務nginx的www用戶的家目錄下

[root@jenkins ~]# ssh-copy-id [email protected]

2)指定gitlab倉庫連接url、認證類型

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

3)在構建環境中選擇構建項目之前刪除工作區間,編寫構建中的shell腳本,再保存

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

4)在立即構建項目,並查看控制檯輸出的狀態如下

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

5)在jenkins的服務端檢查代碼是否部署到本地

[root@jenkins ~]# ll /var/lib/jenkins/workspace/website-html/
total 16
-rw-r--r-- 1 root root    34 Jul 23 00:20 index.html
-rw-r--r-- 1 root root 10240 Jul 23 00:20 index.tar.gz

6)在後端服務nginx檢查代碼是否部署成功

[root@localhost html]# ll
total 16
-rw-r--r-- 1 www www    34 Jul 23 00:20 index.html
-rw-r--r-- 1 www www 10240 Jul 23 00:20 index.tar.gz

7)瀏覽器訪問後端服務nginx

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

9.構建觸發器,實現當一提交代碼到gitlab倉庫就觸發jenkins自動部署代碼到後端服務

gitlab服務

1)在一個項目裏,點擊Branch

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

2)創建一個開發新分支

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

jenkins服務端

1)點擊系統管理,再找到全局安全設置

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

2)選擇登錄用戶可以做任何事、取消"防止跨站點請求僞造”

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

3)安裝這兩插件

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

4)新建一個job

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

5)配置項目的源碼管理,指定其gitlab倉庫的url、認證類型、開發分支等

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

6)生成一個認證祕鑰隨機數

[root@jenkins ~]# openssl rand -hex 16
2fc11d619fe0c21facf6ddf71504a08e

7)將以上生成的隨機數作爲構建觸發器認證的token

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

8)構建簡單的測試命令

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

9)檢查本地的項目配置文件保存的構建觸發器的遠程認證祕鑰、執行的shell命令

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

10)訪問url測試自否自動觸發立即構建項目

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

或者直接curl
[root@jenkins ~]# curl http://192.168.1.15:8080/job/develop/build?token=2fc11d619fe0c21facf6ddf71504a08e

11)發現當訪問文url時會自動觸發構建項目

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

12)再修改爲正式的構建shell遠程執行命令,當一提交代碼到gitlab倉庫會自動觸發將代碼部署到nginx服務器

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

gitlab服務端

1)找到system hooks系統鉤子,點擊系統鉤子進行配置

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

2)輸入jenkins中的認證url,其他選項保持默認,點擊add system hook添加系統鉤子

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

3)點擊測試系統鉤子的可用性

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

4)出現201代碼,建立連接成功,檢測成功

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

在nginx服務端,克隆gitlab倉庫代碼,預先安裝好git工具

1)指定從develop分支克隆代碼,並填寫登錄用戶名及密碼

[root@nginx ~]# git clone -b develop http://192.168.1.30/jie/web-page.git
Cloning into 'web-page'...
Username for 'http://192.168.1.30': jie
Password for 'http://[email protected]': 
remote: Enumerating objects: 18, done.
remote: Counting objects: 100% (18/18), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 18 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (18/18), done.

2)查看克隆下來的代碼環境

[root@nginx ~]# cd web-page/
[root@nginx web-page]# ls -a
.  ..  .git  index.html

3)查看代碼內容,並將代碼修改

[root@nginx web-page]# cat index.html 
<h1>welcom to my develop page</h1>
[root@nginx web-page]# vim index.html
<h1>welcom to my develop page</h1>
<h2>welcom to my develop page</h2>
<h3>welcom to my develop page</h3>
<h4>welcom to my develop page</h4>

4)將修改好的代碼添加到本地暫存區

[root@nginx web-page]# git add index.html

5)再將代碼提交到工作區

[root@nginx web-page]# git commit -m 'audi_q7'
[develop b560fe3] audi_q7
 1 file changed, 3 insertions(+), 1 deletion(-)

6)最後再提交到gitlab代碼庫

[root@nginx web-page]# git push
Username for 'http://192.168.1.30': jie
Password for 'http://[email protected]': 
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 280 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: 
remote: To create a merge request for develop, visit:
remote:   http://192.168.1.30/jie/web-page/merge_requests/new?merge_request%5Bsource_branch%5D=develop
remote: 
To http://192.168.1.30/jie/web-page.git
     de793ac..b560fe3  develop -> develop

7)在jenkins服務器上查看,可以看到自動觸發構建

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

8)查看jenkins的控制檯輸出信息,代碼部署到nginx服務成功

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

9)查看代碼是否部署到nginx服務器

root@nginx ~]# ll /usr/share/nginx/html/
total 16
-rw-r--r-- 1 www www   140 Jul 24 19:51 index.html
-rw-r--r-- 1 www www 10240 Jul 24 19:51 index.tar.gz

10)查看nginx服務是否正常啓動

[root@nginx ~]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
     Active: active (running) since Wed 2019-07-24 19:51:12 CST; 4min 38s ago
    Process: 7582 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
    Process: 7580 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
    Process: 7578 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 7584 (nginx)
     CGroup: /system.slice/nginx.service
                     ├─7584 nginx: master process /usr/sbin/nginx
                     ├─7585 nginx: worker process
                     └─7586 nginx: worker process

11)瀏覽器訪問nginx服務器,代碼自動部署成功

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

12)在gitlab服務中若需要合併代碼,點create merge request 創建合併請求,待上級確定後在執行合併到master分支上

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

10.實現項目job關聯,即當一個項目執行完成會自動觸發另一個項目執行

1)在jenkins中添加構建後放入執行動作,觸發時必須上一個項目構建穩定、每次構建不穩定或有故障發送郵件通知

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

2)點擊立即構建項目

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

3)構建後會立即觸發下一個項目的構建

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

4)查看被觸發的項目

jenkins的部署、實現自動拉取gitlab倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發

總結:這種項目關聯適用於將一個項目拆成多個小項目,例如其中一個項目job負責代碼測試,另一個job負責代碼打包

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章