最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

款基于容器技術(shù)的持續(xù)集成工具

2023-02-23 10:10 作者:bili_39183997178  | 我要投稿

Drone簡(jiǎn)介

Drone是一款基于容器技術(shù)的持續(xù)集成工具,使用簡(jiǎn)單的YAML配置文件即可完成復(fù)雜的自動(dòng)化構(gòu)建、測(cè)試、部署任務(wù),在Github上已經(jīng)有22K+Star。

Gogs安裝

我們將使用輕量級(jí)的Gogs來(lái)搭建Git倉(cāng)庫(kù),這里只是簡(jiǎn)單說(shuō)下安裝步驟,具體使用可以參考《Github標(biāo)星34K+Star,這款開(kāi)源項(xiàng)目助你秒建Git服務(wù)!》。

  • 首先需要下載Gogs的Docker鏡像;

docker pull gogs/gogs復(fù)制代碼

  • 下載完成后在Docker容器中運(yùn)行Gogs;

docker run -p 10022:22 -p 10080:3000 --name=gogs \ -e TZ="Asia/Shanghai" \ -v /mydata/gogs:/data ?\ -d gogs/gogs復(fù)制代碼

  • Gogs運(yùn)行成功后,訪問(wèn)Web頁(yè)面地址并注冊(cè)賬號(hào):http://192.168.5.78:10080

  • 然后將我們的SpringBoot項(xiàng)目mall-tiny-drone的源碼上傳上去即可,項(xiàng)目地址:github.com/macrozheng/…

Drone安裝

接下來(lái)我們安裝下Drone,不愧是基于容器的CI/DI工具,使用Docker安裝很方便!

  • 首先下載Drone的Server和Runner的鏡像;

# Drone的Serverdocker pull drone/drone:1# Drone的Runnerdocker pull drone-runner-docker:1復(fù)制代碼

  • 這里有個(gè)Server和Runner的概念,我們先來(lái)理解下;

    • Server:為Drone的管理提供了Web頁(yè)面,用于管理從Git上獲取的倉(cāng)庫(kù)中的流水線任務(wù)。

    • Runner:一個(gè)單獨(dú)的守護(hù)進(jìn)程,會(huì)輪詢Server,獲取需要執(zhí)行的流水線任務(wù),之后執(zhí)行。

  • 接下來(lái)我們來(lái)安裝drone-server,使用如下命令即可;

docker run \

?-v /mydata/drone:/data \

?-e DRONE_AGENTS_ENABLED=true \

?-e DRONE_GOGS_SERVER=http://192.168.5.78:10080 \

?-e DRONE_RPC_SECRET=dronerpc666 \

?-e DRONE_SERVER_HOST=192.168.5.78:3080 \

?-e DRONE_SERVER_PROTO=http \ ?

-e DRONE_USER_CREATE=username:macro,admin:true \

?-e TZ="Asia/Shanghai" \ ?

-p 3080:80 \ ?

--restart=always \

?--detach=true \

?--name=drone \ ?

drone/drone:

  • 這里的配置參數(shù)比較多,下面統(tǒng)一解釋下;

    • DRONE_GOGS_SERVER:用于配置Gogs服務(wù)地址。

    • DRONE_RPC_SECRET:Drone的共享秘鑰,用于驗(yàn)證連接到server的rpc連接,server和runner需要提供同樣的秘鑰。

    • DRONE_SERVER_HOST:用于配置Drone server外部可訪問(wèn)的地址。

    • DRONE_SERVER_PROTO:用于配置Drone server外部可訪問(wèn)的協(xié)議,必須是http或https。

    • DRONE_USER_CREATE:創(chuàng)建一個(gè)管理員賬號(hào),該賬號(hào)需要在Gogs中注冊(cè)好。

  • 接下來(lái)安裝drone-runner-docker,當(dāng)有需要執(zhí)行的任務(wù)時(shí),會(huì)啟動(dòng)臨時(shí)的容器來(lái)執(zhí)行流水線任務(wù);

docker run -d \

-v /var/run/docker.sock:/var/run/docker.sock \ ?

-e DRONE_RPC_PROTO=http \

?-e DRONE_RPC_HOST=192.168.5.78:3080 \

?-e DRONE_RPC_SECRET=dronerpc666 \

?-e DRONE_RUNNER_CAPACITY=2 \

?-e DRONE_RUNNER_NAME=runner-docker \

-e TZ="Asia/Shanghai" \

?-p 3000:3000 \ ?--restart always \

?--name runner-docker \

?drone/drone-runner-docker:1復(fù)制代碼

  • 這里的配置參數(shù)比較多,下面統(tǒng)一解釋下。

    • DRONE_RPC_PROTO:用于配置連接到Drone server的協(xié)議,必須是http或https。

    • DRONE_RPC_HOST:用于配置Drone server的訪問(wèn)地址,runner會(huì)連接到server獲取流水線任務(wù)并執(zhí)行。

    • DRONE_RPC_SECRET:用于配置連接到Drone server的共享秘鑰。

    • DRONE_RUNNER_CAPACITY:限制runner并發(fā)執(zhí)行的流水線任務(wù)數(shù)量。

    • DRONE_RUNNER_NAME:自定義runner的名稱。

Drone使用

  • 讓我們來(lái)訪問(wèn)下Drone的控制臺(tái)頁(yè)面,第一次登錄需要輸入賬號(hào)密碼(在Gogs中注冊(cè)的賬號(hào)),訪問(wèn)地址:http://192.168.5.78:3080/

  • 此時(shí)我們?cè)贕ogs中的項(xiàng)目會(huì)現(xiàn)在在列表中,如果沒(méi)有的話可以點(diǎn)下SYNC按鈕;

  • 接下來(lái)我們需要對(duì)倉(cāng)庫(kù)進(jìn)行設(shè)置,將倉(cāng)庫(kù)設(shè)置為Trusted(否則Drone創(chuàng)建的容器無(wú)法掛載目錄到宿主機(jī)),最后點(diǎn)擊SAVE按鈕保存;

  • 保存成功后會(huì)在Gogs中自動(dòng)配置一個(gè)Web鉤子,當(dāng)我們推送代碼到Gogs中去時(shí),會(huì)觸發(fā)這個(gè)鉤子,然后執(zhí)行在Drone中的流水線任務(wù);

  • 拉到最下面,我們可以發(fā)送一個(gè)測(cè)試推送,推送成功會(huì)顯示綠色的√;

  • 此時(shí)我們?cè)贒rone中發(fā)現(xiàn)其實(shí)流水線執(zhí)行失敗了,那是因?yàn)槲覀冊(cè)谀_本中引用了Secret中的ssh_password;

  • 在倉(cāng)庫(kù)的設(shè)置中添加一個(gè)Secret即可,Secret是專門(mén)用來(lái)存儲(chǔ)密碼的,此密碼只能被使用或刪除,無(wú)法被查看;

  • ACTIVITY FEED中使用RESTART可以重新執(zhí)行該流水線,發(fā)現(xiàn)已經(jīng)成功執(zhí)行。

編寫(xiě)腳本

當(dāng)我們向Git倉(cāng)庫(kù)Push代碼時(shí),會(huì)自動(dòng)觸發(fā)Web鉤子,然后Drone就會(huì)從Git倉(cāng)庫(kù)Clone代碼,再通過(guò)項(xiàng)目目錄下的.drone.yml配置,執(zhí)行相應(yīng)的流水線,接下來(lái)我們來(lái)看看這個(gè)腳本是如何寫(xiě)的。

  • 首先我們來(lái)了解下在.drone.yml中配置的工作流都有哪些操作,看下流程圖就知道了;

  • 再來(lái)一個(gè)完整的.drone.yml,配上詳細(xì)的注解,看下就基本懂了!

kind: pipeline # 定義對(duì)象類(lèi)型,還有secret和signature兩種類(lèi)型

type: docker # 定義流水線類(lèi)型,還有kubernetes、exec、ssh等類(lèi)型

name: mall-tiny-drone # 定義流水線名稱

steps: # 定義流水線執(zhí)行步驟,這些步驟將順序執(zhí)行 ?

? ?- name: package # 流水線名稱 ? ?

? ? ? ? ?image: maven:3-jdk-8 # 定義創(chuàng)建容器的Docker鏡像 ? ?

? ? ?volumes: # 將容器內(nèi)目錄掛載到宿主機(jī),倉(cāng)庫(kù)需要開(kāi)啟Trusted設(shè)置 ? ? ?

? ? ? ? ? ?- name: maven-cache ? ? ?

? ? ? ? ? ? ?path: /root/.m2 # 將maven下載依賴的目錄掛載出來(lái),防止重復(fù)下載 ? ? ? ? ? ? ?- name: maven-build ? ? ?

? ? ? ? ? ? ? ?path: /app/build # 將應(yīng)用打包好的Jar和執(zhí)行腳本掛載出來(lái) ? ? ? ? ? ? ? ? ? ? ?commands: # 定義在Docker容器中執(zhí)行的shell命令 ? ?

? ? ? ? ? ? - mvn clean package # 應(yīng)用打包命令 ? ? ?

? ? ? ? ?- cp target/mall-tiny-drone-1.0-SNAPSHOT.jar /app/build/mall-tiny-drone-1.0-SNAPSHOT.jar ? ? ?

? ? ? ? ? ?- cp Dockerfile /app/build/Dockerfile ? ?

? ? ? ? ?- cp run.sh /app/build/run.sh ?- name: build-start ? ?

? ? ? ? ? ? image: appleboy/drone-ssh # SSH工具鏡像 ? ?

? ? ? ? ? ? settings: ? ? ?host: 192.168.5.78 # 遠(yuǎn)程連接地址 ? ? ?username: root # 遠(yuǎn)程連接賬號(hào) ? ?

? ? ? ? ? ?password: ? ? ? ?from_secret: ssh_password # 從Secret中讀取SSH密碼 ? ? ? ? port: 22 # 遠(yuǎn)程連接端口 ? ? ?

? ? ? ? ? command_timeout: 5m # 遠(yuǎn)程執(zhí)行命令超時(shí)時(shí)間 ? ?

? ? ? ? ? ? script: ? ? ? ?

? ? ? ? ? ? ?- cd /mydata/maven/build # 進(jìn)入宿主機(jī)構(gòu)建目錄 ? ? ? ?

? ? ? ? ? - chmod +x run.sh # 更改為可執(zhí)行腳本 ? ? ?

? ? ? ? ? ?- ./run.sh # 運(yùn)行腳本打包應(yīng)用鏡像并運(yùn)行

? ? ? ? ? ? volumes: # 定義流水線掛載目錄,用于共享數(shù)據(jù)

? ? ? ? ? ? ?- name: maven-build ? ?host: ? ?

? ? ? ? ? ? ? ? path: /mydata/maven/build # 從宿主機(jī)中掛載的目錄 ? ?

? ? ? ? ? ? ? ? - name: maven-cache ? ?

? ? ? ? ? ? ? ?host: ? ? ?path: /mydata/maven/cache復(fù)制代碼

  • run.sh執(zhí)行腳本可以實(shí)現(xiàn)打包應(yīng)用和運(yùn)行容器鏡像,之前講過(guò)這里就不再贅述了,具體可以參考《我常用的自動(dòng)化部署技巧,賊好用,推薦給大家!》,運(yùn)行成功效果如下。


款基于容器技術(shù)的持續(xù)集成工具的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
鹤岗市| 西和县| 榕江县| 宣城市| 盐津县| 肃宁县| 屯门区| 滦平县| 田林县| 利津县| 龙井市| 宁城县| 日土县| 武冈市| 昌黎县| 合江县| 灌南县| 祁连县| 商水县| 建德市| 论坛| 聊城市| 喀喇沁旗| 吕梁市| 咸宁市| 军事| 永定县| 同德县| 亳州市| 芒康县| 丹东市| 唐河县| 安康市| 兴和县| 武陟县| 江孜县| 涞水县| 扶余县| 晋江市| 遂平县| 蓬溪县|