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