1. 程式人生 > >gitlab+jenkins+tomcat實現程式碼自動部署

gitlab+jenkins+tomcat實現程式碼自動部署

一 搭建docker-gitlab-ce(優先部署docker,前面有docker部署文件)

環境準備:

1 實體記憶體要大於3GB
2 Linux Centos7系統
3 需要能夠訪問外網
4 jdk-8u172-linux-x64.tar.gz軟體包 (均在官網即可下載)
5 apache-tomcat-8.5.31.tar.gz軟體包
6 jenkins.war軟體包

1 下載gitlab的映象源

[[email protected] ~] docker pull gitlab/gitlab-ce:latest   #下載gitlab標準映象源(也可以自己定製)
[
[email protected]
~] docker images #檢視已有的映象檔案,檢視到如下資訊說明下載成功 REPOSITORY TAG IMAGE ID CREATED SIZE gitlab/gitlab-ce latest a6cd10f85c07 2 weeks ago 1.47GB

2 基於gitlab-ce映象啟動一個容器

[r[email protected]
~] docker run -d -p 7080:80 -p 2222:22 \ --name gtilab \ --restart always \ --volume /data/local/gitlab/config:/etc/gitlab \ --volume /data/local/gitlab/logs:/var/log/gitlab \ --volume /data/local/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest -d:後臺執行容器並返回容器ID -p:將容器中埠號對映到本地指定埠號 --restart:容器重啟後的狀態 always:在容器退出時總是重啟容器 --volume:將容器中/etc/gitlab目錄對映到本地的/data/local/gitlab/config目錄,本地目錄不存在自動建立,其他同理 gitlab/gitlab-ce:latest:要執行的映象的名稱 [
[email protected]
~] docker ps -a $:檢視當前執行的容器

3 編輯gitlab配置檔案(由於我們已經對映到本地,所以在本地編輯就可以)

[[email protected] ~] cd /data/local/gitlab/config       #進入配置檔案所在目錄下
[[email protected] config] cp gitlab.rb gitlab.rb.bak    #修改配置檔案之前先備份,養成習慣!
[[email protected] config] vim gitlab.rb                 #下列顯示的都是編輯器中內容
# external_url 'GENERATED_EXTERNAL_URL'           #找到這一行,修改為下面這一行
  external_url 'http://192.168.119.101'           #後面的地址改為gitlab地址
# gitlab_rails['gitlab_shell_ssh_port'] = 22      #找到這一行,修改為下面一行
  gitlab_rails['gitlab_shell_ssh_port'] = 2222    #開啟gitlab的ssh功能並且埠改為2222;
    :wq!                                          #儲存且推出vim編輯器
[[email protected] config] docker restart gitlab         #重啟gitlab容器生效

4 訪問gitlab檢視是否可以訪問

在瀏覽器中輸入gitlab配置檔案中定義的IP地址,以及docker對映到本地的埠號檢視是否可以訪問,看到圖中資訊則說明成功,開始
初始化管理員密碼(剛開始啟動後訪問頁面會比較慢,等一會兒就可以了)

這裡寫圖片描述
5 進入gitlab開始使用吧!!
這裡寫圖片描述

二 安裝jenkins+tomcat(與gitlab在同一臺主機)

1 首先需要安裝1.8版本的jdk

[[email protected] ~] cd /app                             #到指定目錄下安裝軟體
[[email protected] app] rz                                #使用rz命令上傳jdk-8u172-linux-x64.tar.gz軟體包
[[email protected] app] tar zxvf jdk-8u172-linux-x64.tar.gz #解壓檔案
[[email protected] app] vim /etc/profile.d/jdk.sh          #建立jdk.sh檔案並編輯寫入以下內容
JAVA_HOME=/app/jdk1.8.0_172
CLASS_PATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASS_PATH PATH
:wq                                                #儲存並退出
[[email protected] app] source /etc/profile.d/jdk.sh      #重新整理此檔案中定義的內容
[[email protected] app] java -version                     #檢視java版本以及home路徑是否正確,如下圖所示

這裡寫圖片描述
2 安裝tomcat

[[email protected] app] tar zxvf apache-tomcat-8.5.31.tar.gz  #解壓檔案
[[email protected] app] mv apache-tomcat-8.5.31/ tomcat       #將解壓後的目錄名改為tomcat方便日後管理
[[email protected] app] cd tomcat/bin                         #進入二進位制檔案存放目錄
[[email protected] bin] ./startup.sh                          #啟動tomcat

3 訪問tomcat檢視是否能夠訪問

在瀏覽器中直接輸入tomcat主機的IP地址加埠號檢視到下圖資訊則說明安裝成功

這裡寫圖片描述
4 將jenkins整合到tomcat中

[[email protected] app] rz                                 #上傳jenkins.war包到此處(官網即可下載)
[[email protected] app] mv jeknins.war tomcat/webapps/     #將jenkins.war檔案移動到tomcat的webapps資料夾下,當tomcat
                                                    啟動,Linux會自動識別出jenkins.war包

5 重新啟動tomcat並且訪問jenkins

[[email protected] app] cd tomcat/bin      #進入指定目錄下執行
[[email protected] bin] ./shutdown.sh      #首先停止tomcat服務
[[email protected] bin] ss -nlt            #使用此命令檢視埠狀況,沒有8080埠則說明停止成功
[[email protected] bin] ./startup.sh       #啟動tomcat服務,此時的webapps下應該多出了一個jenkins資料夾,這就說明
                                    tomcat識別了jenkins.war包

6 訪問jenkins檢視是否成功

使用瀏覽器直接訪問Tomcat主機IP地址的8080埠下的jenkins資料夾,如圖

這裡寫圖片描述
7 做Jenkins初始化配置

1 當jenkins啟動完畢後,重新整理會出現如下圖的一個介面,將jenkins伺服器上指定位置下的檔案內容複製到管理員密碼位置
[[email protected] app] cat /root/.jenkins/secrets/initialAdminPassword      #檢視目標目錄下檔案並且複製到網頁的"管理
                                                                      員密碼"位置上並點選繼續

這裡寫圖片描述

2 輸入完密碼後,Jenkins會出現如下圖所示介面,問使用者是否安裝部分外掛,點選"安裝推薦的外掛"並等待安裝完畢

這裡寫圖片描述

3 安裝完畢後,會出現讓使用者建立管理員的一個介面,如圖,根據要求建立即可

這裡寫圖片描述

4 建立完畢使用者,會出現如下圖所示介面,是讓使用者確定Jenkins的URL地址是否正確,不正確的話再手動除錯,確定後點擊儲存並完成 

這裡寫圖片描述

5 最後你就成功安裝了Jenkins開始使用吧!!

P.S:小知識
!!當忘記jenkins管理員密碼的時候按照以下操作進行!!
1 登入到Jenkins伺服器上面更改config.xml(一般在/root/.jenkins/config.xml)檔案

[[email protected] ~] find / -name config.xml       #查詢名為config.xml的檔案
[[email protected] ~] vim /root/.jenkins/config.xml #找到以下這一段全部選中刪除
<useSecurity>true</useSecurity>
<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy">
<denyAnonymousReadAccess>true</denyAnonymousReadAccess>
  </authorizationStrategy>
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
<disableSignup>true</disableSignup>
<enableCaptcha>false</enableCaptcha>
</securityRealm>

2 此時再次登入Jenkins就不用輸入密碼了,但為了安全起見,還是要在系統管理中的安全配置中開啟密碼驗證功能並修改管理員的密碼

三 配置gitlab

1 在剛剛安裝的gitlab上建立一個屬於自己的專案,如圖
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
2 配置SSH-key公鑰檔案

1 由於上傳程式碼預設都是以http方式上傳的,但當專案過大的時候就需要用到ssh方式了,此處為了省事兒,直接改用ssh,也沒有壞處,
根據下列圖示操作即可!
2 注意:你要用哪臺電腦上傳就輸入哪臺電腦的id_rsa.pub檔案(本實驗在Windows上傳程式碼,使用的工具為"Git Bash")
如下圖所示:

這裡寫圖片描述

3 生成後開啟指定目錄下的id_rsa.pub檔案並複製,如圖所示

這裡寫圖片描述

4 將複製的內容貼上到gitlab的ssh-key中,按圖中依次操作

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

5 新增完畢後,在"Git Bash"中使用ssh -vT [email protected] -p 2222測試,看到如圖字樣則證明成功

這裡寫圖片描述
3 將倉庫克隆到本地驗證是否可以與gitlab直接通訊

git的學習可以去以下網站:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
圖中命令以及解釋:
        git clone ssh://[email protected]:2222/root/test.git #將專案的ssh地址寫上使用git clone命令克隆到本地
        cd test                        #進入到克隆下來的專案中
        echo test > test.txt           #生成一個內容為test的txt檔案
        git add .                      #將檔案修改新增到暫存區
        git commit -m "add test.txt"   #確認無誤將暫存區資料提交,並且新增描述
        git push                       #將目標上傳至主分割槽

這裡寫圖片描述

四 配置Jenkins

1 登入到jenkins的管理頁面;
2 按照以下步驟操作

安裝外掛:
點選"系統管理" ---> "外掛管理" --> "可選外掛" --> (右上角)"過濾" --> (依次搜尋)
"Gitlab Hook"、"Build Authorization Token Root"、"Publish Over SSH"、"Gitlab Authentication"、"Gitlab" 
--> "直接安裝" --> 重啟jenkins(本實驗用的tomcat,直接重啟tomcat即可)

3 開始將要上傳程式碼到的目標伺服器新增進jenkins中

1 首先要將Jenkins伺服器上面的id_rsa.pub檔案內容拷貝到目標伺服器/root/.ssh/authorized_key檔案中
 (使用ssh-keygen -t rsa命令生成id_rsa以及id_rsa.pub檔案)預設authorized_key檔案不存在需要手動建立

2 接著新增主機:
     點選"系統管理" --> "系統設定"  --> "Publish Over SSH" (如圖)

這裡寫圖片描述

3 在Jenkins上建立一個任務(按照以下圖中步驟操作)

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
4 到此Jenkins就配置完畢了,接著回到Gitlab,按照下圖步驟配置!
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
5 檢視Jenkins構建結果,如下圖就說明配置成功
這裡寫圖片描述

五 測試提交程式碼,是否能夠提交到目標伺服器

1 在Windows上繼續使用"Git Bash"工具再次克隆並提交程式碼(如圖)
git clone ssh://[email protected]:2222/root/test.git
cd test
echo "hello jenkins!" > index.html
git add .
git commit -m "add index.html"
git push

這裡寫圖片描述

2 接著去Jenkins介面檢視構建過程,如圖

這裡寫圖片描述

3 去目標伺服器上檢視是否有推送的程式碼,如果成功就會有顯示,如圖

這裡寫圖片描述

到此,搭建結束!謝謝欣賞!~~

相關推薦

gitlab+jenkins+tomcat實現程式碼自動部署

一 搭建docker-gitlab-ce(優先部署docker,前面有docker部署文件) 環境準備: 1 實體記憶體要大於3GB 2 Linux Centos7系統 3 需要能夠訪問外網 4 jdk-8u172-linux-x64.tar.gz軟體

gitlab+jenkins+tomcat實現代碼自動部署

要求 再次 返回 完成 conf 主機ip eight word-wrap class 一 搭建docker-gitlab-ce(優先部署docker,前面有docker部署文檔)環境準備:1 物理內存要大於3GB 2 Linux Centos7系統 3 需要能夠訪問外網

開發測試環境通過gitlab+jenkins+docker 實現一命令部署

jpg ins text mark git pull bho 命令 gitlab 技術分享 開發測試環境的CI/CD 拓撲圖,程序員端執行git push之後,gitlab 的webhook 會觸發Jenkins上的任務,jenkins 在開發測試環境執行已定義好的shel

手摸手,帶你實現程式碼自動部署

為什麼? 為什麼要實現自動部署? 在2個月的時間裡,一直都在忙著整理部落格,每一個程式設計師都有一個部落格夢(當然也不排除有些是沒有的),我先後使用過各種部落格系統: vuepress react-static jekyll hexo ... 這些都因為前前後後的原因,

git hook實現程式碼自動部署

原理與流程 git使用者執行git push操作 遠端倉庫發現有使用者執行了push操作,就會執行一個指令碼post-receive(鉤子) 在post-receive指令碼中,將git倉庫的程式碼拷貝到web站點目錄下 建立git倉庫 我們可以在自己的伺服器上建立g

使用git hooks實現程式碼自動部署更新

環境:CentOS 7先說下整體思路:在伺服器中建立遠端倉庫A(裸倉庫)和本地倉庫B(一般倉庫)。然後在倉庫A中建立使B git pull A的指令碼,並每當有使用者 git push A的時候就觸發該指令碼。1. 初始化兩個倉庫兩個倉庫的目錄分別是 A:/home/myco

jenkins+Gitlab+maven+tomcat實現自動化集成、打包、部署

linux 編譯 oracle system group org 51cto check soft 為什麽需要持續集成呢? 1.因為在開發的過程中,用於階段性地構建出產品。這樣可以更加清楚地審視產品的不足之處。2.由於在某些情況下,例如有緊急bug的時候,研發的版本更新可能

Jenkins安裝及配合GitLab程式碼自動部署

** git—倉庫搭建及使用 ** ################################################################### 建立使用者 [kiosk@foundation6 ~]$ git confi

linux(CentOS)下Jenkins+GitLab+Maven+Tomcat多環境自動釋出和部署

環境:jenkins需要jdk1.8以上、需要maven3.2.5以上、需要git2.6.2以上 1、安裝jdk: 解壓:tar -zxvf jdk-8u181-linux-x64.tar.gz 配置環境變數:vim /etc/profile 在尾部追加(

持續整合之Jenkins結合指令碼實現程式碼自動化部署及一鍵回滾至上一版本

一:本文通過jenkins呼叫shell指令碼的的方式完成從Git伺服器獲取程式碼、打包、部署到web伺服器、將web伺服器從負載均衡器刪除、解壓、複製配置檔案、建立軟連線、測試每一臺web伺服器、將web伺服器新增至負載均衡、回滾到任意指定版本、一鍵回滾到上一版本等功能,指令碼放在www使用者家目錄並使用w

jenkins實現專案自動部署

背景 之前給公司搭建過一套gitlab+gerrit+jenkins的持續整合環境,由於操作起來有點繁瑣,自己也沒太搞清楚該怎麼用,所以一直就只用了gitlab來做程式碼管理。最近要做一個專案自動部署的功能,使用過jenkins一定知道他的自動化功能

Jenkins+Maven+Svn實現程式碼自動打包與釋出

安裝jdk、tomcat環境 [root@centos6 ~]# tar zxf jdk-8u111-linux-x64.tar.gz -C /usr/local/ [root@centos6 ~]# tar zxf apache-tomcat-8.5.9.t

[筆記]利用Webhook實現coding上的程式碼自動部署到Centos7伺服器上

centos7上的nginx伺服器配置 遠端控制伺服器 ssh [email protected] //@ 左邊的 root 是連線時使用的使用者的名字,@ 右邊的數字是你的伺服器的 IP 地址 新增新使用者並設定密碼 adduser

GIT伺服器實現web程式碼自動部署

之前在一臺vps伺服器上面搭建了git伺服器,用來做程式碼管理,方便團隊開發。但是問題也就相應的來了,使用git可以輕鬆的上傳程式碼,而由於做的是web開發,每次還都得到伺服器上把程式碼手動pull或者複製到網頁所在的資料夾下,也就比較麻煩,不適合我這種懶人。git提供了

gitlab+jenkins+hook代碼自動構建發布上線

jenkins 名稱 成功 alt tla cnblogs settings 9.png 一個 Gitlab+Jenkins+Hook 1、gitlab和jenkins的安裝見: http://www.cnblogs.com/cuishuai/p/7544663.html

關於jenkins的安裝及自動部署

端口 AS sco table span 初始 col 其他 sys 1. 安裝Jenkins 1.1 準備Linux服務器, 關閉防火墻禁止開機啟動 1 systemctl stop firewalld.service #停止firewall 2 systemctl

eclipse上部署tomcat不能自動部署maven管理的額jar包

http maven tomcat jar 圖片 分享圖片 自動部署 .com inf eclipse上部署到tomcat不能自動部署maven管理的額jar包

Gitlab+jenkins持續集成+自動化部署(一)

技術 ftl ssh 占用 nag etc 客戶端 id_rsa client Gitlab介紹  GitLab是一個利用?Ruby on Rails?開發的開源應用程序,實現一個自托管的Git項目倉庫,可通過Web界面進行訪問公開的或者私人項目。?  GitLab擁有與G

Gitlab+jenkins持續集成+自動化部署(二)

bbf 兩個 後來 oss term apach init hook 搜索 Jenkins 介紹Jenkins只是一個平臺,真正運作的都是插件。這就是jenkins流行的原因,因為jenkins什麽插件都有?Hudson是Jenkins的前身,是基於Java開發的一種持續集

Gitlab+jenkins持續集成+自動化部署(三)

使用 key pair 插件 exec ast ota d+ sha2 ner 搭建gitlab+Jenkins自動化部署在jenkins上安裝插件 Build Authorization Token Root Plugin、 Build Authorization T