gitlab+jenkins+tomcat實現代碼自動部署
環境準備:
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的鏡像源
[root@bogon ~] docker pull gitlab/gitlab-ce:latest $:下載gitlab標準鏡像源(也可以自己定制) [root@bogon ~] docker images $:查看已有的鏡像文件,查看到如下信息說明下載成功 REPOSITORY TAG IMAGE ID CREATED SIZE gitlab/gitlab-ce latest a6cd10f85c07 2 weeks ago 1.47GB
2 基於gitlab-ce鏡像啟動一個容器
[root@bogon ~] 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:要運行的鏡像的名稱 [root@bogon ~] docker ps -a $:查看當前運行的容器
3 編輯gitlab配置文件(由於我們已經映射到本地,所以在本地編輯就可以)
[root@bogon ~] cd /data/local/gitlab/config $:進入配置文件所在目錄下 [root@bogon config] cp gitlab.rb gitlab.rb.bak $:修改配置文件之前先備份,養成習慣! [root@bogon 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編輯器 [root@bogon config] docker restart gitlab $:重啟gitlab容器生效
4 訪問gitlab查看是否可以訪問
在瀏覽器中輸入gitlab配置文件中定義的IP地址,以及docker映射到本地的端口號查看是否可以訪問 看到圖中信息則說明成功,開始初始化管理員密碼(剛開始啟動後訪問頁面會比較慢,等一會兒就可以了)
5 進入gitlab開始使用吧!!
二 安裝jenkins+tomcat(與gitlab在同一臺主機)
1 首先需要安裝1.8版本的jdk
[root@bogon ~] cd /app $:到指定目錄下安裝軟件 [root@bogon app] rz $:使用rz命令上傳jdk-8u172-linux-x64.tar.gz軟件包 [root@bogon app] tar zxvf jdk-8u172-linux-x64.tar.gz $:解壓文件 [root@bogon 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 $:保存並退出 [root@bogon app] source /etc/profile.d/jdk.sh $:刷新此文件中定義的內容 [root@bogon app] java -version $:查看java版本以及home路徑是否正確,如下圖所示
2 安裝tomcat
[root@bogon app] tar zxvf apache-tomcat-8.5.31.tar.gz $:解壓文件 [root@bogon app] mv apache-tomcat-8.5.31/ tomcat $:將解壓後的目錄名改為tomcat方便日後管理 [root@bogon app] cd tomcat/bin $:進入二進制文件存放目錄 [root@bogon bin] ./startup.sh $:啟動tomcat
3 訪問tomcat查看是否能夠訪問
在瀏覽器中直接輸入tomcat主機的IP地址加端口號查看到下圖信息則說明安裝成功
4 將jenkins整合到tomcat中
[root@bogon app] rz $:上傳jenkins.war包到此處(官網即可下載) [root@bogon app] mv jeknins.war tomcat/webapps/ $:將jenkins.war文件移動到tomcat的webapps文件夾下,當tomcat啟動,Linux會自動識別出jenkins.war包
5 重新啟動tomcat並且訪問jenkins
[root@bogon app] cd tomcat/bin $:進入指定目錄下執行 [root@bogon bin] ./shutdown.sh $:首先停止tomcat服務 [root@bogon bin] ss -nlt $:使用此命令查看端口狀況,沒有8080端口則說明停止成功 [root@bogon bin] ./startup.sh $:啟動tomcat服務,此時的webapps下應該多出了一個jenkins文件夾,這就說明tomcat識別了jenkins.war包
6 訪問jenkins查看是否成功
使用瀏覽器直接訪問Tomcat主機IP地址的8080端口下的jenkins文件夾,如圖
7 做Jenkins初始化配置
1 當jenkins啟動完畢後,刷新會出現如下圖的一個界面,將jenkins服務器上指定位置下的文件內容復制到管理員密碼位置
[root@bogon 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)文件
[root@bogon ~] find / -name config.xml $:查找名為config.xml的文件 [root@bogon ~] 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實現代碼自動部署