Jenkins自動化部署入門詳細教程

2021-02-13 java1234

作者:java老兵

轉載自:

https://www.cnblogs.com/wfd360/p/11314697.html

  

1.背景

  在實際開發中,我們經常要一邊開發一邊測試,當然這裡說的測試並不是程式設計師對自己代碼的單元測試,而是同組程式設計師將代碼提交後,由測試人員測試;

  或者前後端分離後,經常會修改接口,然後重新部署;

  這些情況都會涉及到頻繁的打包部署;

  手動打包常規步驟:

  1.提交代碼

  2.問一下同組小夥伴有沒有要提交的代碼

  3.拉取代碼並打包(war包,或者jar包)

  4.上傳到Linux伺服器

  5.查看當前程序是否在運行

  6.關閉當前程序

  7.啟動新的jar包

  8.觀察日誌看是否啟動成功

  9.如果有同事說,自己還有代碼沒有提交.再次重複1到8的步驟!!!!!(一上午沒了)

  那麼,有一種工具能夠實現,將代碼提交到git後就自動打包部署勒,答案是肯定的:Jenkins

  當然除了Jenkins以外,也還有其他的工具可以實現自動化部署,如Hudson等

  只是Jenkins相對來說,使用得更廣泛。

2.Jenkins伺服器搭建及基本配置2.1.簡介

  Jenkins是一個開源軟體項目,是基於Java開發的一種持續集成工具,用於監控持續重複的工作,旨在提供一個開放易用的軟體平臺,使軟體的持續集成變成可能。

2.2.Jenkins自動化部署實現原理

  

 2.3.Jenkins部署環境

  基本環境:

  1.jdk環境,Jenkins是java語言開發的,因需要jdk環境。

  2.git/svn客戶端,因一般代碼是放在git/svn伺服器上的,我們需要拉取代碼。

  3.maven客戶端,因一般java程序是由maven工程,需要maven打包,當然也有其他打包方式,如:gradle

  以上是自動化部署java程序jenkins需要的基本環境,請自己提前安裝好,下面著重講解Jenkins的安裝部署配置。

2.4.Jenkins安裝

  1.下載安裝包jenkins.war;

  2.在安裝包根路徑下,運行命令 java -jar jenkins.war --httpPort=8080,(linux環境、Windows環境都一樣);

  3.打開瀏覽器進入連結 http://localhost:8080.

  4.填寫初始密碼,激活系統

  

  5.進入插件安裝選擇

  這裡建議選擇,推薦安裝的插件,保證基本常用的功能可以使用。

  

  選擇後,進入插件安裝頁面

  

  6.設置初始用戶和密碼

  

  7.進入系統,安裝完成

  注意,如果還是進入不了系統,需要稍等一下,或者刷新頁面,如果還是進入不了,需要重新啟動jenkinds伺服器。

2.5.Jenkins基本配置2.5.1.系統初始化配置 

  

  1.Configure System (系統設置)

  在系統設置這裡,我們只需要設置最後面的一項,配置遠程伺服器地址,

  即我們代碼最終運行的伺服器地址信息,就像我們之前手動部署時使用xshell登錄Linux伺服器一樣,

  當然這裡是可以配置多臺遠程Linux伺服器的,配置完成後點擊保存即可,為後面我們配置自動化部署做準備,配置如下圖

  

  2.Configure  Global Security (全局安全配置)

  a.配置用戶相關的權限

  

  b.配置鉤子程序(當用代碼更新時通知)訪問權限,避免報403錯誤

  默認是勾選上了的,這裡去掉勾選

  

  3.Global Tool Configuration (全局工具配置 )

  a.配置maven的全局settings路徑

  

  b.配置jdk

  

  c.配置git

  

  d.配置maven的安裝路徑

  

   4.配置必要插件

   主要是檢查如下這兩個插件是否已安裝

  插件1:Publish over SSH
  插件2:Deploy to container Plugin

  

  到這裡,我們配置一個自動化部署的的java程序(springBoot+maven+gitHub),基本必要配置就差不多了,後面配置過程中如果需要在配置。

3.Jenkins自動化部署(springBoot+maven+gitHub)項目 3.1.Jenkins伺服器上創建項目和配置

  大體步驟:General(基礎配置)--》源碼管理--》構建觸發器--》構建環境--》構建--》構建後操作

  1.創建一個工程

  

  2.General(基礎配置)

  僅需填寫標準部分,其他可不填寫

  

  3.源碼管理

  

  上圖中點擊「添加」按鈕添加一組帳號和密碼

  

  4.構建觸發器

  

  如上圖:當前項目的回調地址為:

  http://localhost:8080/job/jenkinsSpringBootDemo/build?token=token_demo2

  只要執行這個地址(在瀏覽器上訪問改地址),該項目就會發起一次構建項目,即拉取代碼打包部署操作,

  在實際中,是由git伺服器回調改地址,在後面講git伺服器配置時詳細講解 ,

  值得注意的是,如果你是學習測試,使用的是GitHub服務,要確保你的回調地址已經試外網映射過的,即往外網可以訪問

  5.構建環境(無需配置)

  6.構建

  

  7.構建後操作

  構建後操作的意思是,jar打包好後,要將jar發送到哪裡去,發送後去和啟動等

  這裡需要提前在需要部署的伺服器上配置好路徑,寫好啟動和停止項目的腳本,並設置為可以執行的腳本,

  其實就是我們平時在Linux上手動部署項目操作的腳本

  

  案例中給出的stop.sh腳本如下:

#!/bin/bashecho "Stop Procedure : demo2-0.0.1-SNAPSHOT.jar"pid=`ps -ef |grep java|grep demo2-0.0.1-SNAPSHOT.jar|awk '{print $2}'`echo 'old Procedure pid:'$pidif [ -n "$pid" ]thenkill -9 $pidfi

  案例中給出的start.sh腳本如下:

#!/bin/bashexport JAVA_HOME=/usr/java/jdk1.8.0_131echo ${JAVA_HOME}echo 'Start the program : demo2-0.0.1-SNAPSHOT.jar' chmod 777 /home/ldp/app/demo2-0.0.1-SNAPSHOT.jarecho '--Starting--' cd /home/ldp/app/nohup ${JAVA_HOME}/bin/java -jar demo2-0.0.1-SNAPSHOT.jar &echo 'start success'

   到此,Jenkinds伺服器配置完成,接下來我還有要配置Linux伺服器和Git伺服器。

3.2.Linux伺服器配置

  在Liux服務上,上傳上文中的兩個腳本,用於啟動和停止

  

3.3.GitHub伺服器配置

  在GitHub伺服器上的指定項目裡面配置上文中提到的回調地址

  特別注意:為了保證回調地址網可以使用,

  我已經將地址:http://localhost:8080/job/jenkinsSpringBootDemo/build?token=token_demo2,

  通過花生殼進行外網映射為:http://zhishidi.imwork.net/job/jenkinsSpringBootDemo/build?token=token_demo2

  所以,下面配置的是外網映射地址。

  

  到這裡所有配置搞定,只需修改代碼,提交到git,然後訪問程序看是否生效。

 4.測試

   1.測試代碼

  

  2.提交代碼到git,觸發構建

  3.在GitHub伺服器上去看,是否已經觸發

  

  4.在Jenkins的控制臺查看是否,正在構建

  從下圖中可以看出,正在構建

  

  5.查看當次構建的控制臺日誌

  

  說明已經啟動成功

  6.查看Linux伺服器,是否上傳代碼

  

  7.在Linux上使用命令jps,查看是否啟動

  

  8.瀏覽器上訪問,看是否能用

  

  說明,已經正常啟動可以使用。

  9.再次確認是否能自動化部署

  修改代碼,重新提交代碼,循環1到8步查看。

  如果測試結果是你預期的,那麼自動化部署成功。

5.總結&資料下載5.1.總結

  自動化部署Jenkins,作為一款工具,有著非常強大的功能,

  上面我們只是講了生產上做Java自動化部署的一個主要流程,

  其他的功能,大家可以參看官方文檔:https://jenkins.io/zh/doc/

  但是,本著學習是為了解決生產的原則,

  個人建議,用到Jenkins的什麼功能就學什麼就可以了,

  沒必要把Jenkins的所有功能都學完在使用,

  就如同我們使用word文檔一樣,並沒有系統的他word文檔學完後,在開始使用,而是用到什麼功能就學習什麼功能!

5.2.相關資料

  1.案例中的源碼地址:https://github.com/bangbangw/demo01.git

  2.官方文檔:https://jenkins.io/zh/doc/

 

相關焦點

  • Jenkins 自動化部署 Java 項目,厲害~
    (一上午沒了)那麼,有一種工具能夠實現,將代碼提交到git後就自動打包部署勒,答案是肯定的:Jenkins當然除了Jenkins以外,也還有其他的工具可以實現自動化部署,如Hudson等只是Jenkins相對來說,使用得更廣泛。
  • Windows+.Net Framework+svn+IIS在Jenkins上的自動化部署入門
    關於Jenkins的使用及安裝,上一篇文章我已經介紹過了Windows+.NetCore+git+IIS在Jenkins上的自動化部署入門
  • Jenkins自動化部署項目 你值得一讀
    它可以在代碼上傳倉庫(如github,gitee,gitlab)後,在jenkins(一個網站界面)中通過獲取代碼倉庫中最新代碼,進行自動化部署,而省去手動打包、上傳伺服器、部署這一系列步驟,非常方便。
  • Windows+.NetCore+git+IIS在Jenkins上的自動化部署入門
    5、java的jdk必須安裝,jenkins是java安裝的。下載地址:https://www.jenkins.io/download/選擇插件來安裝之後,進入到下面的頁面,儘量選擇下圖所示操作。不然安裝其他插件,好多會失敗,要等好長時間。所以,選擇無,一個插件都不裝。另外。到後面的創建管理員操作,你可以創建也可以後面創建,我選擇了後面創建,因為,一點也不影響我後面的操作。
  • 前端項目自動化部署——超詳細教程(Jenkins、Github Actions)
    本教程主要講解了怎麼使用 Jenkins 和 Github Actions 部署前端項目。
  • Jenkins 自動化構建教程(一)
    持續化集成,測試的同事要測試某個產品的時候直接拉取自動化構建,生成的二維碼下載下來,完全不用找開發人員要 apk 包,想要打那個版本的都可以,當時感覺這個東西真好。這完全是一篇小白入門的文章,由於篇幅過長,於是分了幾篇來寫。下面進入正題。
  • Jenkins + 釘釘 + SpringBoot 極簡入門,一鍵打包部署項目
    在《Jenkins 用戶文檔中心》介紹如下:Jenkins 是一款開源 CI&CD 軟體,用於自動化各種任務,包括構建、測試和部署軟體。Jenkins 支持各種運行方式,可通過系統包、Docker 或者通過一個獨立的 Java 程序。
  • Jenkins詳細教程
    CI        CD(Continuous Delivery, 中文意思持續交付)是在持續集成的基礎上,將集成後的代碼部署到更貼近真實運行環境(類生產環境)中。比如,我們完成單元測試後,可以把代碼部署到連接資料庫的Staging環境中更多的測試。如果代碼沒有問題,可以繼續手動部署到生產環境。下圖反應的是CI/CD 的大概工作模式。
  • Jenkins部署和實戰教程
    Job為配置單位與日誌管理,使運維開發人員能協同工作2、安裝部署2.1、環境準備2.1.1:主機名更改[root@localhost ~]# hostnamectl set-hostname jenkins2.1.2:防火牆配置
  • 前端項目自動化部署——超詳細教程
    和 Github Actions 部署前端項目。第一部分是使用 Gitea 配置區域網 git 伺服器,再使用 Jenkins 將 Gitea 下的項目部署到區域網伺服器。第二部分是使用 Github Actions 將 Github 項目部署到 Github Page 和阿里雲。
  • windows服務+OpenSSH+SVN在Jenkins上的自動化部署進階篇
    一、簡介關於使用Jenkins做自動化部署入門篇,我已經分別寫了兩篇文章,不管企業現在是在用
  • 使用Jenkins實現自動化構建!
    CICD是持續集成(Continuous Integration)和持續部署(Continuous Deployment)的總稱,是指通過自動化的構建、測試和部署,實現軟體產品可循環使用的快速交付流程。Jenkins是一個基於Java開發的功能強大的自動化構建工具,並且有一個非常豐富的插件倉庫,可以很好地擴充和豐富其本身的功能。因此,Jenkins是實現自動化構建的一個很不錯的工具。
  • jenkins簡單介紹以及插件入門
    Jenkins是一個廣泛用於持續構建的可視化web工具,就是各種項目的的「自動化」編譯、打包、分發部署,將以前編譯、打包、上傳、部署到Tomcat
  • 前端項目搭建部署全流程(五):基於Jenkins與gitea的自動化部署
    前言繼上一篇文章之後,我們可以基於寫的腳手架工程初始化一個項目工程,然後基於這個工程提交搞Gitea服務,實現基於Jenkins的自動化部署與Gitea的webhook鉤子,以便在執行git push的時候,自動構建項目。2.
  • 我常用的自動化部署技巧,賊好用,推薦給大家!
    SpringBoot+Jenkins自動化部署技巧,遠程部署同樣適用,附通用自動化腳本!
  • GitHub Actions入門教程:自動化部署靜態博客
    前天,我使用 GitHub Actions 實現了靜態博客的自動化部署,覺得它非常強大,只要你提交到 GitHub,後面的部署完全由 GitHub 自動完成。當然了,不止博客的部署,任意軟體的持續集成,都可以由 GitHub Actions 來完成,比如拉取代碼、運行測試、登錄遠程伺服器,發布到第三方服務等。因此 GitHub Actions 是實現自動化發布最便捷的方式了,值得每一個程式設計師學習和使用。
  • 帶你入門前端工程(六):自動化部署
    部署是指將代碼發布到伺服器的一種行為。自動化部署就是使用工具來幫助你實現部署的過程,無需親自動手。
  • 前端自動化部署的深度實踐
    自動化部署這方面下了點功夫,將自己的學習所得在自動化部署的一小步,前端搬磚的一大步這篇博客中做了分享。感謝兩位網友@_shanks和@TomCzHen的意見,讓我有了繼續優化部署流程的動力。本文主要是在自動化部署流程中,對版本管理和流程合理性等方面做了一些改進,配合規範的工作流,使用體驗更佳!更新日誌自動生成之前我都是手動修改CHANGELOG.md,用來記錄更新日誌,感覺操作起來有點心累,也不是很規範。
  • 乾貨 | Jenkins使用簡易教程
    Jenkins是一個廣泛用於持續構建的可視化Web工具,持續構建說得更直白點,就是各種項目的"自動化"編譯、打包、分發部署。Jenkins可以很好的支持各種語言(比如:Java,C#,PHP等)的項目構建,也完全兼容ant、maven、gradle等多種第三方構建工具,同時跟SVN、Git能無縫集成。
  • 如何在 Ubuntu16.04 中用 Apache 部署 Jenkins 自動化伺服器
    Jenkins 是從 Hudson 項目衍生出來的自動化伺服器。