<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Jenkins 是一款自動化構建工具,能夠基於 Maven 構建後端 Java 專案,也能夠基於 nodejs 構建前端 vue 專案,並且有視覺化 web 介面。
所謂自動化構建是按照一定的策略執行打包指令碼,相對於普通指令碼構建,Jenkins 有如下優勢:
Jenkins 體現一種專案管理思維:開發人員的貼心助理,集中精力專注於業務開發;儘早的實現程式碼整合(包含前後端)以便儘早發現問題;構建環境與開發環境隔離,為向生產環境遷移做好充足的準備。
構建過程全程自動化進行,無人工參與,配合 Docker 容易實現高效的專案部署與遷移。
Jenkins 是一個工具,既然是一個工具,便有相應的替代方案,因此不需要花工作的時間琢磨這個工具是如何工作的,將精力放在如何利用 Jenkins 提高敏捷開發效率上更有意義。
實踐過程中,將專案的指令碼化構建用 shell 編寫成命令指令碼,並附加在專案中,即使不使用 Jenkins,通過執行 shell 指令碼也能夠實現專案的自動化構建。這麼做主要有如下考慮:
增強拓展性
即使沒有 Jenkins,專案也能完成構建,增加構建的拓展性
減少對 Jenkins 的依賴
讓 Jenkins 承擔實踐排程的角色,具體構建過程由標準化的指令碼來完成。
既然 shell 指令碼能夠完成自動化構建,那麼還需要用到 Jenkins 嗎,是否衝突?答案是不衝突。shell 指令碼配合 Jenkins 使用有兩大方面優勢:
使用 shell 指令碼必須登入目標伺服器,擁有相應的許可權後,方能執行 shell 指令碼,Jenkins 能夠實現在不登入目標伺服器的基礎上,使用一對賬號和密碼,管理視覺化的 Web 操作介面觸發構建事件。
按需構建,開發者在提交完程式碼後,向 Jenkins 伺服器傳送一個訊號,便可觸發構建。
使用傳送門快捷安裝,啟動後使用安裝推薦外掛,內建國內外掛源,安裝速度較快。
cat ~/.jenkins/secrets/initialAdminPassword
預設工作空間路徑為~/.jnkins
,執行 Jenkins 程式的使用者空間下,構建完成後的專案,如果要放在第三方容器中執行時,有可能會出現找不到路徑的情況,修改預設工作空間或者給予資源目錄可執行許可權都能解決此問題。
安裝完成之後,暫時啟動程式,先確認是否需要修改Jenkins_HOME
變數,後續初始化以及外掛的安裝與此路徑有關。此變數修改方式有多種,顆粒度較大的是設定在 PATH 環境變數中,顆粒度較小的是設定在執行 Jenkins 專案的容器中。
修改 Tomcat 的組態檔 context.xml,增加一行設定
<!-- 建立一個jenkins,並將其使用者空間設定為JENKINS_HOME --> <Environment name="JENKINS_HOME" value="/home/jenkins" type=java.lang.String/>
注意:JENKINS_HOME
預設值為啟動程序使用者對應的使用者空間,在啟動前修改後即變成新的路徑。
如果在設定遠端 APiToken 觸發不生效,請閱讀免密登入章節。
用指令碼的方式構建 Jenkins 專案設定非常簡單,儘管內建了很多花裡胡哨的設定,這裡用不到,不需要關心。
只需要在構建中新增執行 shell 指令碼命令即可。附錄中列舉的環境設定統一在宿主機上完成,不在 Jenkins 服務內部設定,使用預設值即可。
在宿主機上將待構建專案的原始碼克隆到本地,執行 shell 指令碼完成手動構建。在 Jenkins 管理工作臺新建一個同名的空專案,將克隆的原始碼整體複製到 Jenkins 的工作空間下,預設位置為/root/.jenkins/workspace
,委託給 Jenkins 代為自動管理該專案。
使用 URL 觸發構建事件,需要設定免密登入,即在不需要輸入使用者名稱和密碼的情況下,通過遠端呼叫 shell 指令碼觸發構建事件,此 shell 指令碼本質上是 GET 的方式請求某個指定的路徑。操作過程如下:
(1)安裝外掛
安裝Build Authorization Token Root Plugin
外掛,如果已經存在,則忽略此步驟。此外掛的作用是給當前登入的使用者生成 Token,方便後續認證使用,一個使用者可以設定多個 token。
(2)專案設定
在指定的專案中新增 token 設定,專案可以複用一個 token 或者每個專案單獨設定一個 token,依據需要選擇。只有新增此設定之後,使用 token 觸發方能生效。
(3)使用者端使用
編寫指令碼,將指令碼分發給開發者,自動化構建便可以愉快的開始了。使用curl
多引數時,&
符號需要跳脫。
curl {Jenkins URL}/buildByToken/build?job={專案名}&token={token}
至此,CI/CD敏捷開發設定完畢。
構建事件可以按照不同的策略來定義,定時屬於被動觸發;URL 和勾點程式屬於主動觸發。
定時觸發有多種實現方案,使用 CentOS 伺服器內建的定時排程器是較為輕量的解決方式,實現原理是在指定的時間節點執行 shell 指令碼,其中 shell 指令碼便是專案構建的載體。如果單純希望定時構建專案,推薦使用此種解決方式,Jenkins 略顯笨重。
用指令碼模擬或者在瀏覽器存取 URL 觸發構建事件。此種方式是開發中用的比較多的方式,按需構建的代表。軟體開發者在提交完程式碼後,主動觸發構建事件,這種方式構建效率較高。
Build Triggers
構建觸發器是指 Jenkins 收到某一訊號之後,立即開始構建指定的任務。
勾選【Trigger builds remotely】並設定【Authentication Token】
# 【服務字首】/job/【任務名】/build?token=【token】 JENKINS_URL/job/job-vue/build?token=TOKEN_NAME
通過使用 curl 指令碼即可觸發構建訊號。
在程式碼倉庫完成勾點程式設定,並且允許程式碼倉庫伺服器存取 Jenkins 伺服器,勾點程式會在開發者提交程式碼時觸發構建事件。
勾點觸發看上去比較美,實際操作中有一定的前置條件:一是專案的構建時間不能過長;二是提交程式碼不能過於頻繁。
在【系統管理】>【外掛管理】中新增【locale】外掛。在【系統管理】>【全域性設定】中 locale 欄目下新增【en_US】,並勾選對所有使用者生效選項。
建議統一使用英文介面(可以修改為中文),在中英文混合下操作比較彆扭。
序號 | 環境名 | 作用及要求 | 參考資料 |
---|---|---|---|
1 | Java | Java 程式基礎執行環境,使用 jdk 不能使用 jre(需要編譯 Java 原始碼) | |
2 | maven | 構建 Java 專案,為提高構建速度需要設定國內倉庫源 | [Maven 使用手冊] |
3 | NodeJS | 構建前端專案 | |
4 | git | 拉取遠端倉庫程式碼 | |
5 | ssh 免密登入 | 授權拉取遠端倉庫程式碼;授權登入遠端伺服器(構建完成後部署) | [SSH 使用手冊] |
1、Maven Configuration
設定項 | 設定內容 |
---|---|
Default settings provider | /usr/local/maven/conf/settings.xml |
Default global settings provider | /usr/local/maven/conf/settings.xml |
2、JDK
設定項 | 設定內容 |
---|---|
JAVA_HOME | /usr/local/java |
3、Git
設定項 | 設定內容 |
---|---|
Path to Git executable | /usr/local/git/bin/git |
4、Maven
設定項 | 設定內容 |
---|---|
MAVEN_HOME | /usr/local/maven |
5、NodeJS
設定項 | 設定內容 |
---|---|
Installation directory | /usr/local/nodejs/bin |
1、Source Code Management
原始碼管理是 Jenkins 工作的前提,即能夠獲取到任務原始碼,它是後續程式碼自動構建的前提。
原始碼託管在 GitHub,並且是私有倉庫,Jenkins 正確存取 git 倉庫需要進行授權。
# 基於http使用者名稱和密碼授權 https://gitee.com/decsa/ucode-cms-vue.git # 基於公鑰和私鑰匙授權 git@gitee.com:decsa/ucode-cms-vue.git
為了提高工作效率,促進團隊共同作業,這裡選用 ssh 認證。
ssh-keygen -t rsa -C "982361244@qq.com"
將檔案【~/.ssh/id_rsa.pub】內字串拷貝至 GitHub 設定中,設定後即可免密拉取 GitHub 私有倉庫程式碼。
更多內容請檢視 [SSH 使用手冊]
2、Build Triggers
構建觸發器是指 Jenkins 收到某一訊號之後,立即開始構建指定的任務。
勾選【Trigger builds remotely】並設定【Authentication Token】
# 【服務字首】/job/【任務名】/build?token=【token】 JENKINS_URL/job/ruoyi-vue/build?token=TOKEN_NAME
通過在任一登陸的伺服器的瀏覽器或者使用 curl 指令碼即可出發任務的立即構建。
3、Build
後端專案通常使用 Maven 來構建,在下拉框中選擇【Invoke top-level Maven targets】,然後在 Goals 欄目中設定如下命令
clean install
經過此步驟,能夠在工作空間找到構建後的專案發布包。
4、Post-build Actions
在任務構建完成之後出發此操作。通常使用 Docker 將專案發布包構建成映象,然後釋出到映象倉庫中。可執行的映象釋出到映象倉庫之後,有兩種比較常用的後續方案與應用伺服器互動。
Jenkins 通過授權認證,登陸到目標應用伺服器,將對應的映象拉下來,然後使用指令碼啟動。
通過使用 k8s 容器服務,自動化管理任務映象釋出工作。
以上就是使用Jenkins自動化構建工具進行敏捷開發 的詳細內容,更多關於Jenkins自動化構建工具的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45