【CI/CD2】actions,daocloud
文章目錄
- 1.github的actions:替代了travis,完成github上的cicd的操作
- 1.1 uses:后面可接其他倉庫,還可接docker: //alpine: 3.8,注意只是在ubuntu下docker run一鏡像,并不是下面的run在容器里運行
- 1.2 container:指定node8這個容器container下,顯示8.x,不是ubuntu的node10.x版本
- 1.3 services:可指定基于nginx鏡像的服務(wù),點擊Actions查看流程
- 1.4 Secrets:執(zhí)行流程中有涉及到一些密碼或敏感信息時,可在github中Settings中添加Secrets
- 2.生成springboot項目并上傳github:https://start.spring.io/
- 3.daocloud關(guān)聯(lián)github:https://www.daocloud.io/,用關(guān)聯(lián)github登錄注冊。創(chuàng)建項目,關(guān)聯(lián)github上的項目,點擊開始創(chuàng)建后就進(jìn)入cicd的配置流程,點擊前往流程定義
- 3.1 測試:cicd的配置流程即點擊如下測試任務(wù),里面寫mvn test。這個測試階段不通過,不會到構(gòu)建階段,構(gòu)建階段主要目的是想要將項目生成docker鏡像以便于后面的部署
- 3.2 構(gòu)建:點擊默認(rèn)構(gòu)建任務(wù),在項目中直接創(chuàng)建Dockerfile文件即本地創(chuàng)建Dockerfile
- 3.3 docker pull:設(shè)為公開,docker pull就不用進(jìn)行登錄
- 3.4 發(fā)布:前面全是CI,這里CD
- 3.4.1 創(chuàng)建應(yīng)用:應(yīng)用就是將鏡像部署到自由主機上
- 3.4.2 回到項目添加發(fā)布:自由主機就是集群管理中的虛擬機
1.github的actions:替代了travis,完成github上的cicd的操作
如下點擊Actions按鈕后選擇自定義流程。
如上點擊后產(chǎn)生如下main.yml文件。
如上點擊提交代碼后,Actions其實正在運行了。
如下是.yml文件怎么寫?三類:name,on(觸發(fā)時機),jobs(具體任務(wù))。
name:流程命名為,會顯示在圖像化界面上。
on:[push] push代碼時會觸發(fā)。如下是src下文件發(fā)生改動的主分支下提交的代碼才會觸發(fā)當(dāng)前的流程。
如下是每15分鐘執(zhí)行一次當(dāng)前流程,有schedule(固定時間觸發(fā))就不能寫push事件了。
具體觸發(fā)的任務(wù)在jobs下,job1是命名,job2執(zhí)行前必須是要job1執(zhí)行完成。
runs-on是枚舉類型,必須寫如下8種。
steps:- (數(shù)組):git clone xxx 這樣麻煩,如下uses中actions是github上有一官方用戶叫actions,有一個倉庫叫checkout,這倉庫里面流程就是把代碼下載下來【uses參數(shù)后面寫另一個代碼倉庫,run參數(shù)后面寫shell指令】。actions/setup-node@v1配置ubuntu-latest會安裝好nodejs,這樣下面npm就可用了。
1.1 uses:后面可接其他倉庫,還可接docker: //alpine: 3.8,注意只是在ubuntu下docker run一鏡像,并不是下面的run在容器里運行
timeout-minutes默認(rèn)30分鐘超時時間,指定超時時間如1分鐘,1分鐘內(nèi)沒有執(zhí)行完會強制結(jié)束。如下指定3個版本的nodejs分別去測試。
如下是自己寫的main.yml文件并執(zhí)行。
1.2 container:指定node8這個容器container下,顯示8.x,不是ubuntu的node10.x版本
1.3 services:可指定基于nginx鏡像的服務(wù),點擊Actions查看流程
如下nginx容器在當(dāng)前ubuntu-latest環(huán)境下啟動起來了。
1.4 Secrets:執(zhí)行流程中有涉及到一些密碼或敏感信息時,可在github中Settings中添加Secrets
開源項目的actions日志可以被看到,所以如下日志打印*,但變量已經(jīng)寫進(jìn)去了,比如登錄其他網(wǎng)站用到密碼時候,在這個腳本中其實是可用的。
2.生成springboot項目并上傳github:https://start.spring.io/
如上項目生成壓縮包,剪切到桌面進(jìn)行解壓,并用idea打開,并點擊idea中提示的Enable Auto-import。如下DaocloudApplication.java和DaocloudApplicationTests.java是默認(rèn)有的,MyController.java和MySrc.java是自己添加的。
如上運行后,瀏覽器輸入如下。
如下添加測試接口在test文件夾下,本機控制臺mvn test。
在GitHub上創(chuàng)建空的名為daocloud的倉庫。如下push時出現(xiàn)Permission時將origin用的ssh換成https。
3.daocloud關(guān)聯(lián)github:https://www.daocloud.io/,用關(guān)聯(lián)github登錄注冊。創(chuàng)建項目,關(guān)聯(lián)github上的項目,點擊開始創(chuàng)建后就進(jìn)入cicd的配置流程,點擊前往流程定義
3.1 測試:cicd的配置流程即點擊如下測試任務(wù),里面寫mvn test。這個測試階段不通過,不會到構(gòu)建階段,構(gòu)建階段主要目的是想要將項目生成docker鏡像以便于后面的部署
mvn test這個測試任務(wù)是在云端自動幫我們完成,云端并沒有安裝maven,云端是基于docker鏡像的,改為如下。
3.2 構(gòu)建:點擊默認(rèn)構(gòu)建任務(wù),在項目中直接創(chuàng)建Dockerfile文件即本地創(chuàng)建Dockerfile
// Dockerfile FROM maven:3 AS bd WORKDIR /code COPY ./ /code RUN mvn package -Dmaven.test.skip=true //會跳過測試,在target文件夾下生成jar包 // 如上利用maven3環(huán)境對代碼進(jìn)行打包 // 如下將這個jar包拷貝到j(luò)ava8鏡像的根目錄下并重命名為app.jar FROM java:8 COPY --from=bd /code/target/*.jar /app.jar CMD java -jar /app.jar // CMD是啟動指令在idea控制臺中重新add,commit,push添加Dockerfile文件到github(上面3中項目)。再回到如下構(gòu)建任務(wù)頁面,點擊保存,Dockerfile就是在項目根目錄下。
如下返回流程定義頁面,點擊如下手動觸發(fā)。
如下可以點進(jìn)去查看日志。
如下先將github項目代碼git clone拷貝到云端的一臺機器上,加載了自己.yml默認(rèn)配置文件,拉取了在測試時配置好的maven3鏡像,真正運行配置了mvn test(下載了springboot依賴,時間長)。
如上測試階段,如下構(gòu)建階段,docker build里就是上面Dockerfile內(nèi)容,鏡像構(gòu)建完后,需要上傳到daocloud的官方倉庫上。
3.3 docker pull:設(shè)為公開,docker pull就不用進(jìn)行登錄
如下就可將鏡像部署到自己機器上了。
如下解決上面的不自動化,點擊導(dǎo)入主機,添加新主機。
如下用crt連接win上裝的虛擬機(需安裝docker),輸入下面腳本。
如上點擊查看主機出現(xiàn)如下。
3.4 發(fā)布:前面全是CI,這里CD
如下在流程定義中添加發(fā)布階段。
3.4.1 創(chuàng)建應(yīng)用:應(yīng)用就是將鏡像部署到自由主機上
點擊左側(cè)的應(yīng)用 - 創(chuàng)建應(yīng)用 - 部署最新版本,如下ubuntu就是虛擬機。
如下創(chuàng)建子網(wǎng)穿透,可讓互聯(lián)網(wǎng)訪問到。
3.4.2 回到項目添加發(fā)布:自由主機就是集群管理中的虛擬機
修改了idea中代碼并重新add,commit,push,通過提交代碼方式重新觸發(fā)了流程。
在集群管理中點擊管理主機,可看見有容器(剛才被發(fā)布的)正在運行。
如下還要在應(yīng)用中刪除32768舊隧道,并新建32769新隧道。
執(zhí)行CI:添加依賴,代碼測試,將代碼打包入docker并重新構(gòu)建鏡像。執(zhí)行CD:生產(chǎn)機監(jiān)聽DaoCloud變化,拉取鏡像并構(gòu)建容器。
總結(jié)
以上是生活随笔為你收集整理的【CI/CD2】actions,daocloud的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【CI/CD1】jenkins
- 下一篇: 【Notes6】ajaxjson,校验用