再见 Jenkins!几行脚本搞定自动化部署,这款神器有点厉害
title: 再見 Jenkins!幾行腳本搞定自動化部署,這款神器有點(diǎn)厲害
date: 2021-04-30 20:42:32
tags:
- CICD
- Jenkins
在開發(fā)或生產(chǎn)環(huán)境中,我們經(jīng)常會搞一套自動化部署方案(俗稱一鍵部署)。比較流行的一種就是Gitlab+Jenkins實(shí)現(xiàn)方案,不過這種方案占用內(nèi)存比較大,沒有個8G內(nèi)存,很難流暢運(yùn)行,而且部署起來也不快。最近發(fā)現(xiàn)一款神器Drone,輕量級CI/DI工具,結(jié)合Gogs使用內(nèi)存占用不到1G,幾行腳本就能實(shí)現(xiàn)自動化部署,推薦給大家!
Drone簡介
Drone是一款基于容器技術(shù)的持續(xù)集成工具,使用簡單的YAML配置文件即可完成復(fù)雜的自動化構(gòu)建、測試、部署任務(wù),在Github上已經(jīng)有22K+Star。
Gogs安裝
我們將使用輕量級的Gogs來搭建Git倉庫,這里只是簡單說下安裝步驟,具體使用可以參考《Github標(biāo)星34K+Star,這款開源項(xiàng)目助你秒建Git服務(wù)!》。
- 首先需要下載Gogs的Docker鏡像;
- 下載完成后在Docker容器中運(yùn)行Gogs;
- Gogs運(yùn)行成功后,訪問Web頁面地址并注冊賬號:http://192.168.5.78:10080
關(guān)注“傻姑個人簡介”技術(shù)干貨內(nèi)容,幫助大家一起學(xué)習(xí)成長!
- 然后將我們的SpringBoot項(xiàng)目mall-tiny-drone的源碼上傳上去即可,項(xiàng)目地址:https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-drone
Drone安裝
接下來我們安裝下Drone,不愧是基于容器的CI/DI工具,使用Docker安裝很方便!
- 首先下載Drone的Server和Runner的鏡像;
- 這里有個Server和Runner的概念,我們先來理解下;
- Server:為Drone的管理提供了Web頁面,用于管理從Git上獲取的倉庫中的流水線任務(wù)。
- Runner:一個單獨(dú)的守護(hù)進(jìn)程,會輪詢Server,獲取需要執(zhí)行的流水線任務(wù),之后執(zhí)行。
- 接下來我們來安裝drone-server,使用如下命令即可;
- 這里的配置參數(shù)比較多,下面統(tǒng)一解釋下;
- DRONE_GOGS_SERVER:用于配置Gogs服務(wù)地址。
- DRONE_RPC_SECRET:Drone的共享秘鑰,用于驗(yàn)證連接到server的rpc連接,server和runner需要提供同樣的秘鑰。
- DRONE_SERVER_HOST:用于配置Drone server外部可訪問的地址。
- DRONE_SERVER_PROTO:用于配置Drone server外部可訪問的協(xié)議,必須是http或https。
- DRONE_USER_CREATE:創(chuàng)建一個管理員賬號,該賬號需要在Gogs中注冊好。
- 接下來安裝drone-runner-docker,當(dāng)有需要執(zhí)行的任務(wù)時,會啟動臨時的容器來執(zhí)行流水線任務(wù);
- 這里的配置參數(shù)比較多,下面統(tǒng)一解釋下。
- DRONE_RPC_PROTO:用于配置連接到Drone server的協(xié)議,必須是http或https。
- DRONE_RPC_HOST:用于配置Drone server的訪問地址,runner會連接到server獲取流水線任務(wù)并執(zhí)行。
- DRONE_RPC_SECRET:用于配置連接到Drone server的共享秘鑰。
- DRONE_RUNNER_CAPACITY:限制runner并發(fā)執(zhí)行的流水線任務(wù)數(shù)量。
- DRONE_RUNNER_NAME:自定義runner的名稱。
Drone使用
-
讓我們來訪問下Drone的控制臺頁面,第一次登錄需要輸入賬號密碼(在Gogs中注冊的賬號),訪問地址:http://192.168.5.78:3080/
-
此時我們在Gogs中的項(xiàng)目會現(xiàn)在在列表中,如果沒有的話可以點(diǎn)下SYNC按鈕;
關(guān)注“傻姑個人簡介”技術(shù)干貨內(nèi)容,幫助大家一起學(xué)習(xí)成長!
- 接下來我們需要對倉庫進(jìn)行設(shè)置,將倉庫設(shè)置為Trusted(否則Drone創(chuàng)建的容器無法掛載目錄到宿主機(jī)),最后點(diǎn)擊SAVE按鈕保存;
-
保存成功后會在Gogs中自動配置一個Web鉤子,當(dāng)我們推送代碼到Gogs中去時,會觸發(fā)這個鉤子,然后執(zhí)行在Drone中的流水線任務(wù);
-
拉到最下面,我們可以發(fā)送一個測試推送,推送成功會顯示綠色的√;
-
此時我們在Drone中發(fā)現(xiàn)其實(shí)流水線執(zhí)行失敗了,那是因?yàn)槲覀冊谀_本中引用了Secret中的ssh_password;
-
在倉庫的設(shè)置中添加一個Secret即可,Secret是專門用來存儲密碼的,此密碼只能被使用或刪除,無法被查看;
-
在ACTIVITY FEED中使用RESTART可以重新執(zhí)行該流水線,發(fā)現(xiàn)已經(jīng)成功執(zhí)行。
編寫腳本
當(dāng)我們向Git倉庫Push代碼時,會自動觸發(fā)Web鉤子,然后Drone就會從Git倉庫Clone代碼,再通過項(xiàng)目目錄下的.drone.yml配置,執(zhí)行相應(yīng)的流水線,接下來我們來看看這個腳本是如何寫的。
首先我們來了解下在.drone.yml中配置的工作流都有哪些操作,看下流程圖就知道了;
- 再來一個完整的.drone.yml,配上詳細(xì)的注解,看下就基本懂了!
- run.sh
執(zhí)行腳本可以實(shí)現(xiàn)打包應(yīng)用和運(yùn)行容器鏡像,之前講過這里就不再贅述了,具體可以參考《我常用的自動化部署技巧,賊好用,推薦給大家!》,運(yùn)行成功效果如下。
總結(jié)
對比Jenkins復(fù)雜的圖形化界面操作,Drone使用腳本來定義流水線任務(wù)無疑更簡單、更直觀。Drone更加輕量級,內(nèi)存占用少且響應(yīng)速度快!自動化部署要啥Jenkins?直接給Git整個CI/DI功能難道不香么?
項(xiàng)目源碼地址
https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-drone
作者:傻姑不傻
鏈接:https://www.jianshu.com/p/304d67c59110
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
總結(jié)
以上是生活随笔為你收集整理的再见 Jenkins!几行脚本搞定自动化部署,这款神器有点厉害的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GeosparkViz 可视化
- 下一篇: win10系统winsxs文件夹该如何删