Jakeuj's Notes master Help

Drone Cloud Github DotNetCore Build CI/CD Runner Note

Drone 可以用容器來做 CI/CD

目測官方有提供雲端環境可以直接用

也可以自建環境到公司內部自己用

筆記一下注意事項

Drone 官方網站有 Cloud 與 Docs 的連結

不得不說個人認為網站UX做得很差

點過去 Cloud/Docs 是回不來主頁 Www 欸?

首先建議先從 Cloud 的 Ready 環境先跑一遍新手任務

我是接 GitHub 的教學任務 因為解完了好像看不到原本的任務內容

大致上跟自建環境的流程一樣吧

https://docs.drone.io/server/provider/github/

看圖說故事應該是沒有甚麼太大的問題才是

解完應該可以在 Cloud 大廳看到 Github 上的專案列表

接著可以在 Github 開一個新倉儲來試跑一下 Drone 的 CI/CD

建立一個 dotnet core web application 專案 (我這邊是用 3.1 版本)

Push 到 Github Repo 然後到 Drone Cloud 點一下 SYNC

找到剛建立的倉儲 點進去之後 按 ACTIVATE REPOSITORY > SAVE CHANGES

1618912494

畫面稍微看一下會發現 Configuration 是 .drone.yml 這個檔案

有用過 Gitthub Action 或 Azure Pipeline 之類的應該知道該怎麼做

總之到專案根目錄建立該 .drone.yml 檔案

內容先試打一下建置 dotnet core 的描述

kind: pipeline name: dev_depoly workspace: base: /data/netcore path: istr steps: - name: build image: mcr.microsoft.com/dotnet/sdk:3.1 commands: - dotnet publish -c:Release -o ./publish - echo '>>> 建置完成,使用 ls 顯示一下目錄,看看結果 <<<' - ls -la

Ref: https://github.com/jakeuj/Drone/blob/main/.drone.yml

到這邊 commit & push to  master 之後應該會觸發 CI/CD

1618912476

可以到 Drone Cloud 裡面看看建置過程/結果

1618912597

參照: https://www.istr.cn/archives/93/

再來是自建 Drone Server & Runner 的部分

Server 的部分就是主要頁面與全局控制器

Runner 的部分類似 Jenkins 的 Agent

就是觸發 CI/CD 後,會交給他幫你去跑你的 yml 裡面要他做的事情

參照:https://www.tpisoftware.com/tpu/articleDetails/1884

前置作業

首先你需要安裝 Docker

因為 Drone Server 是直接用 container 跑的

包含後續的 runner 也是

再來還需要安裝 ngrok

ngrok 是幫你的 localhost 生出一個 domain 來給 github webhook 呼叫用的

感覺類似在你電腦起一個轉發器

localhost:8081 ← http://randomcode.ngrok.io

不然外部 (github) 是沒辦法 callback你 local 的 Drone server 位置的

然後可以開始用 docker 裝 Drone Server

官方 Drone Server (Github) 文件

主要就 pull & run

docker run \ --volume=/var/lib/drone:/data \ --env=DRONE_GITHUB_CLIENT_ID=456c14e7ed5e418a1ccd \ --env=DRONE_GITHUB_CLIENT_SECRET=789797177215d9e39854177428f2b3cdc33f3291 \ --env=DRONE_RPC_SECRET=123f11ca2cabbc1b47cc2fa281eba25c \ --env=DRONE_SERVER_HOST=45652a865bcf.ngrok.io \ --env=DRONE_SERVER_PROTO=https \ --publish=8081:80 \ --publish=443:443 \ --restart=always \ --detach=true \ --name=drone \ drone/drone:1

跑起來應該是看得到畫面可以授權 github 存取權給他

看起來跟 Drone Cloud 應該有個八十七分像

也可以成功看到你的倉儲才對

甚至也會觸發 CI/CD

只是會發現觸發後她永遠在 pending

然後我也找不到地方看他為什麼 pending

總之就是還沒有 runner 可以去處理這個事件

P.S. 接下來的 runner 如果執行失敗也會造成一樣的結果

再來就一樣把 runner 給裝起來

Drone Runner Docs

這裡要注意的是 Docker Windows 版

預設跑的是 linux 環境

所以你如果從 Server 那邊接著下一步 Runner 會要你選 Linux or Windows

你要選 Linux 不然 socket 對應會失敗

導致 Runner 連不回 Server

然後 CI/CD 觸發事件會一直卡在 Pending…

docker run -d \ -v /var/run/docker.sock:/var/run/docker.sock \ -e DRONE_RPC_PROTO=https \ -e DRONE_RPC_HOST=45652a865bcf.ngrok.io \ -e DRONE_RPC_SECRET=123f11ca2cabbc1b47cc2fa281eba25c \ -e DRONE_RUNNER_CAPACITY=2 \ -e DRONE_RUNNER_NAME=dev_depoly \ -p 3000:3000 \ --restart always \ --name runner \ drone/drone-runner-docker:1

注意一下 -v 的參數 (指定掛載卷)

WIndows 會長這樣

-v //./pipe/docker_engine://./pipe/docker_engine

除非你去 docker 那邊手動切到 windows 才需要改

不然應該都是要用 linux 的設定才對哦

到這邊就應該都裝好了

跟原本 Drone Cloud 一樣去 Active Repo

然後隨便 push master 看看應該可以觸發 CI/CD

也可以看到建置過程及時 Log

1618914759

Drone

如果跟我一樣卡 Pending

可以去 Docker 看一下 Runner Container Log

1618914874

上面是正常畫面

有問題再拿錯誤訊息去找一下古哥囉~

Jakeuj

PS5

  • CI/CD

  • Cloud

  • .Net Core

  • Drone

  • Github

  • 回首頁

本文章從點部落遷移至 Writerside

13 October 2025