最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Jenkins自動化構建工具進行敏捷開發(fā)

 更新時間:2022年04月02日 19:12:23   作者:Java知識圖譜  
這篇文章主要為大家介紹了使用Jenkins自動化構建工具進行敏捷開發(fā),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪

一、序言

Jenkins 是一款自動化構建工具,能夠基于 Maven 構建后端 Java 項目,也能夠基于 nodejs 構建前端 vue 項目,并且有可視化 web 界面。

所謂自動化構建是按照一定的策略執(zhí)行打包腳本,相對于普通腳本構建,Jenkins 有如下優(yōu)勢:

  • 構建隊列中能夠同時構建多個項目,包含前端和后端項目;
  • 定時構建;
  • 代碼倉庫觸發(fā)構建(普通腳本無法實現(xiàn));

Jenkins 體現(xiàn)一種項目管理思維:開發(fā)人員的貼心助理,集中精力專注于業(yè)務開發(fā);盡早的實現(xiàn)代碼集成(包含前后端)以便盡早發(fā)現(xiàn)問題;構建環(huán)境與開發(fā)環(huán)境隔離,為向生產(chǎn)環(huán)境遷移做好充足的準備。

構建過程全程自動化進行,無人工參與,配合 Docker 容易實現(xiàn)高效的項目部署與遷移。

二、安裝與使用

Jenkins 是一個工具,既然是一個工具,便有相應的替代方案,因此不需要花工作的時間琢磨這個工具是如何工作的,將精力放在如何利用 Jenkins 提高敏捷開發(fā)效率上更有意義。

實踐過程中,將項目的腳本化構建用 shell 編寫成命令腳本,并附加在項目中,即使不使用 Jenkins,通過執(zhí)行 shell 腳本也能夠?qū)崿F(xiàn)項目的自動化構建。這么做主要有如下考慮:

增強拓展性

即使沒有 Jenkins,項目也能完成構建,增加構建的拓展性

減少對 Jenkins 的依賴

讓 Jenkins 承擔實踐調(diào)度的角色,具體構建過程由標準化的腳本來完成。

既然 shell 腳本能夠完成自動化構建,那么還需要用到 Jenkins 嗎,是否沖突?答案是不沖突。shell 腳本配合 Jenkins 使用有兩大方面優(yōu)勢:

使用 shell 腳本必須登錄目標服務器,擁有相應的權限后,方能執(zhí)行 shell 腳本,Jenkins 能夠?qū)崿F(xiàn)在不登錄目標服務器的基礎上,使用一對賬號和密碼,管理可視化的 Web 操作界面觸發(fā)構建事件。

按需構建,開發(fā)者在提交完代碼后,向 Jenkins 服務器發(fā)送一個信號,便可觸發(fā)構建。

(一)安裝

使用傳送門快捷安裝,啟動后使用安裝推薦插件,內(nèi)置國內(nèi)插件源,安裝速度較快。

1、查看初始密碼

cat ~/.jenkins/secrets/initialAdminPassword

2、修改默認工作空間

默認工作空間路徑為~/.jnkins,運行 Jenkins 程序的用戶空間下,構建完成后的項目,如果要放在第三方容器中運行時,有可能會出現(xiàn)找不到路徑的情況,修改默認工作空間或者給予資源目錄可執(zhí)行權限都能解決此問題。

安裝完成之后,暫時啟動程序,先確認是否需要修改Jenkins_HOME變量,后續(xù)初始化以及插件的安裝與此路徑有關。此變量修改方式有多種,顆粒度較大的是配置在 PATH 環(huán)境變量中,顆粒度較小的是配置在運行 Jenkins 項目的容器中。

修改 Tomcat 的配置文件 context.xml,增加一行配置

<!-- 創(chuàng)建一個jenkins,并將其用戶空間設置為JENKINS_HOME -->
<Environment name="JENKINS_HOME" value="/home/jenkins" type=java.lang.String/>

注意:JENKINS_HOME默認值為啟動進程用戶對應的用戶空間,在啟動前修改后即變成新的路徑。

(二)使用

如果在配置遠程 APiToken 觸發(fā)不生效,請閱讀免密登錄章節(jié)。

1、構建配置

用腳本的方式構建 Jenkins 項目配置非常簡單,盡管內(nèi)置了很多花里胡哨的配置,這里用不到,不需要關心。

只需要在構建中添加執(zhí)行 shell 腳本命令即可。附錄中列舉的環(huán)境配置統(tǒng)一在宿主機上完成,不在 Jenkins 服務內(nèi)部配置,使用默認值即可。

2、添加項目

在宿主機上將待構建項目的源代碼克隆到本地,執(zhí)行 shell 腳本完成手動構建。在 Jenkins 管理工作臺新建一個同名的空項目,將克隆的源代碼整體復制到 Jenkins 的工作空間下,默認位置為/root/.jenkins/workspace,委托給 Jenkins 代為自動管理該項目。

(三)免密登錄

使用 URL 觸發(fā)構建事件,需要配置免密登錄,即在不需要輸入用戶名和密碼的情況下,通過遠程調(diào)用 shell 腳本觸發(fā)構建事件,此 shell 腳本本質(zhì)上是 GET 的方式請求某個指定的路徑。操作過程如下:

(1)安裝插件

安裝Build Authorization Token Root Plugin插件,如果已經(jīng)存在,則忽略此步驟。此插件的作用是給當前登錄的用戶生成 Token,方便后續(xù)認證使用,一個用戶可以配置多個 token。

(2)項目配置

在指定的項目中添加 token 配置,項目可以復用一個 token 或者每個項目單獨設置一個 token,依據(jù)需要選擇。只有添加此配置之后,使用 token 觸發(fā)方能生效。

image-20210406181556605

(3)客戶端使用

編寫腳本,將腳本分發(fā)給開發(fā)者,自動化構建便可以愉快的開始了。使用curl多參數(shù)時,&符號需要轉義。

curl {Jenkins URL}/buildByToken/build?job={項目名}\&token={token}

至此,CI/CD敏捷開發(fā)配置完畢。

三、觸發(fā)策略

構建事件可以按照不同的策略來定義,定時屬于被動觸發(fā);URL 和鉤子程序?qū)儆谥鲃佑|發(fā)。

(一)定時觸發(fā)

定時觸發(fā)有多種實現(xiàn)方案,使用 CentOS 服務器內(nèi)置的定時調(diào)度器是較為輕量的解決方式,實現(xiàn)原理是在指定的時間節(jié)點運行 shell 腳本,其中 shell 腳本便是項目構建的載體。如果單純希望定時構建項目,推薦使用此種解決方式,Jenkins 略顯笨重。

(二)URL 觸發(fā)

用腳本模擬或者在瀏覽器訪問 URL 觸發(fā)構建事件。此種方式是開發(fā)中用的比較多的方式,按需構建的代表。軟件開發(fā)者在提交完代碼后,主動觸發(fā)構建事件,這種方式構建效率較高。

Build Triggers

構建觸發(fā)器是指 Jenkins 收到某一信號之后,立即開始構建指定的任務。

勾選【Trigger builds remotely】并設置【Authentication Token】

# 【服務前綴】/job/【任務名】/build?token=【token】
JENKINS_URL/job/job-vue/build?token=TOKEN_NAME

通過使用 curl 腳本即可觸發(fā)構建信號。

(三)鉤子觸發(fā)

在代碼倉庫完成鉤子程序配置,并且允許代碼倉庫服務器訪問 Jenkins 服務器,鉤子程序會在開發(fā)者提交代碼時觸發(fā)構建事件。

鉤子觸發(fā)看上去比較美,實際操作中有一定的前置條件:一是項目的構建時間不能過長;二是提交代碼不能過于頻繁。

附錄、工具使用

1、語言設置

在【系統(tǒng)管理】>【插件管理】中添加【locale】插件。在【系統(tǒng)管理】>【全局配置】中 locale 欄目下添加【en_US】,并勾選對所有用戶生效選項。

建議統(tǒng)一使用英文界面(可以修改為中文),在中英文混合下操作比較別扭。

2、構建環(huán)境清單

序號環(huán)境名作用及要求參考資料
1JavaJava 程序基礎運行環(huán)境,使用 jdk 不能使用 jre(需要編譯 Java 源碼) 
2maven構建 Java 項目,為提高構建速度需要配置國內(nèi)倉庫源[Maven 使用手冊]
3NodeJS構建前端項目 
4git拉取遠程倉庫代碼 
5ssh 免密登錄授權拉取遠程倉庫代碼;授權登錄遠程服務器(構建完成后部署)[SSH 使用手冊]

3、環(huán)境配置

1、Maven Configuration

配置項配置內(nèi)容
Default settings provider/usr/local/maven/conf/settings.xml
Default global settings provider/usr/local/maven/conf/settings.xml

2、JDK

配置項配置內(nèi)容
JAVA_HOME/usr/local/java

3、Git

配置項配置內(nèi)容
Path to Git executable/usr/local/git/bin/git

4、Maven

配置項配置內(nèi)容
MAVEN_HOME/usr/local/maven

5、NodeJS

配置項配置內(nèi)容
Installation directory/usr/local/nodejs/bin

4、任務配置

1、Source Code Management

源代碼管理是 Jenkins 工作的前提,即能夠獲取到任務源代碼,它是后續(xù)代碼自動構建的前提。

源代碼托管在 GitHub,并且是私有倉庫,Jenkins 正確訪問 git 倉庫需要進行授權。

# 基于http用戶名和密碼授權
https://gitee.com/decsa/ucode-cms-vue.git
# 基于公鑰和私鑰匙授權
git@gitee.com:decsa/ucode-cms-vue.git

為了提高工作效率,促進團隊協(xié)作,這里選用 ssh 認證。

ssh-keygen -t rsa -C "982361244@qq.com"

將文件【~/.ssh/id_rsa.pub】內(nèi)字符串拷貝至 GitHub 設置中,配置后即可免密拉取 GitHub 私有倉庫代碼。

更多內(nèi)容請查看 [SSH 使用手冊]

2、Build Triggers

構建觸發(fā)器是指 Jenkins 收到某一信號之后,立即開始構建指定的任務。

勾選【Trigger builds remotely】并設置【Authentication Token】

# 【服務前綴】/job/【任務名】/build?token=【token】
JENKINS_URL/job/ruoyi-vue/build?token=TOKEN_NAME

通過在任一登陸的服務器的瀏覽器或者使用 curl 腳本即可出發(fā)任務的立即構建。

3、Build

后端項目通常使用 Maven 來構建,在下拉框中選擇【Invoke top-level Maven targets】,然后在 Goals 欄目中配置如下命令

clean install

經(jīng)過此步驟,能夠在工作空間找到構建后的項目發(fā)布包。

4、Post-build Actions

在任務構建完成之后出發(fā)此操作。通常使用 Docker 將項目發(fā)布包構建成鏡像,然后發(fā)布到鏡像倉庫中。可執(zhí)行的鏡像發(fā)布到鏡像倉庫之后,有兩種比較常用的后續(xù)方案與應用服務器交互。

Jenkins 通過授權認證,登陸到目標應用服務器,將對應的鏡像拉下來,然后使用腳本啟動。

通過使用 k8s 容器服務,自動化管理任務鏡像發(fā)布工作。

以上就是使用Jenkins自動化構建工具進行敏捷開發(fā) 的詳細內(nèi)容,更多關于Jenkins自動化構建工具的資料請關注腳本之家其它相關文章!

相關文章

  • SpringBoot中的Actuator詳解

    SpringBoot中的Actuator詳解

    這篇文章主要介紹了SpringBoot中的Actuator詳解,Spring Boot Actuator 在Spring Boot第一個版本發(fā)布的時候就有了,它為Spring Boot提供了一系列產(chǎn)品級的特性,監(jiān)控應用程序,收集元數(shù)據(jù),運行情況或者數(shù)據(jù)庫狀態(tài)等,需要的朋友可以參考下
    2023-09-09
  • JSON在Java中的使用方法實例

    JSON在Java中的使用方法實例

    對于java來說,json的對象也是分為JSONObject和JSONArray這兩種,每種對象的操作方式不一樣哦,下面這篇文章主要給大家介紹了關于JSON在Java中使用的相關資料,需要的朋友可以參考下
    2023-03-03
  • Java中一些常見的并發(fā)集合類的使用

    Java中一些常見的并發(fā)集合類的使用

    并發(fā)集合是一種特殊的數(shù)據(jù)結構,它允許多個線程安全地訪問和修改,本文主要介紹了Java中一些常見的并發(fā)集合類的使用,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • 基于java web獲取網(wǎng)頁訪問次數(shù)代碼實例

    基于java web獲取網(wǎng)頁訪問次數(shù)代碼實例

    這篇文章主要介紹了基于java web獲取網(wǎng)頁訪問次數(shù)代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • 詳解IDEA使用Maven項目不能加入本地Jar包的解決方法

    詳解IDEA使用Maven項目不能加入本地Jar包的解決方法

    這篇文章主要介紹了詳解IDEA使用Maven項目不能加入本地Jar包的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • java 中設計模式之單例

    java 中設計模式之單例

    這篇文章主要介紹了java 中設計模式之單例的相關資料,這里說明惡漢模式與懶漢模式,需要的朋友可以參考下
    2017-08-08
  • java重試機制使用RPC必須考慮冪等性原理解析

    java重試機制使用RPC必須考慮冪等性原理解析

    這篇文章主要為大家介紹了java重試機制使用RPC必須考慮冪等性原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 基于Cookie與Session的Servlet?API會話管理操作

    基于Cookie與Session的Servlet?API會話管理操作

    這篇文章主要為大家介紹了基于Cookie與Session的Servlet?API會話管理操作詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Spring注解配置AOP導致通知執(zhí)行順序紊亂解決方案

    Spring注解配置AOP導致通知執(zhí)行順序紊亂解決方案

    這篇文章主要介紹了Spring注解配置AOP導致通知執(zhí)行順序紊亂解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • 詳解SpringBoot多跨域請求的支持(JSONP)

    詳解SpringBoot多跨域請求的支持(JSONP)

    跨域是很多項目需要遇到的文章,本篇文章主要介紹了詳解SpringBoot多跨域請求的支持(JSONP),具有一定的參考價值,有興趣的可以了解一下
    2017-04-04

最新評論

曲阳县| 彭阳县| 连南| 司法| 霞浦县| 镇安县| 浑源县| 和平县| 寿光市| 襄城县| 东港市| 新巴尔虎左旗| 民勤县| 平安县| 治多县| 子长县| 三亚市| 黎川县| 闽侯县| 虹口区| 特克斯县| 施甸县| 东城区| 达州市| 溧阳市| 阜康市| 兰溪市| 曲阳县| 开江县| 商都县| 柞水县| 浮山县| 奉新县| 黎平县| 杭锦旗| 柳州市| 平谷区| 固镇县| 祁阳县| 苏尼特右旗| 本溪市|