日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【CI/CD2】actions,daocloud

發布時間:2024/4/24 编程问答 93 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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是自己添加的。

//MySvc.java package com.example.daocloud; import org.springframework.stereotype.Service;@Service public class MySvc {public int add(int a,int b){return a+b;} } //MyController.java package com.example.daocloud; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody;@Controller @ResponseBody public class MyController {@AutowiredMySvc mySvc;@GetMapping("/")public String index(){return "hello spring boot"; //首頁}@GetMapping("/add")public String add(int a, int b ){return mySvc.add(a,b)+""; //最后加雙引號是將數字變為字符串} }


如上運行后,瀏覽器輸入如下。

如下添加測試接口在test文件夾下,本機控制臺mvn test。

package com.example.daocloud; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class) @SpringBootTest public class DaocloudApplicationTests {@AutowiredMySvc mySvc; // 對服務進行測試,只要測試mySvc@Testpublic void addTest() { // 測試用例,點擊這行的開始播放按鈕int res = mySvc.add(772,119);assert res == 891; // 892測試不通過,控制臺報紅}@Testpublic void addTest2() {int res = mySvc.add(556,119);assert res == 675;} }

在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變化,拉取鏡像并構建容器。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的【CI/CD2】actions,daocloud的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。