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倉庫代碼、實現項目中代碼自動部署以及項目關聯觸發html

在jenkins服務端

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

[root@jenkins ~]# git clone git@192.168.1.30: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 www@192.168.1.31

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://jie@192.168.1.30': 
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://jie@192.168.1.30': 
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負責代碼打包

相關文章
相關標籤/搜索