天天看點

Drone-CI 運作時的指定runner

Drone-CI 運作時的指定runner

最近群裡小夥伴問了個 drone ci 的問題

Drone-CI 運作時的指定runner

是我不曾想到的場景, 由于我使用的是三塊樹莓派4b, 性能上沒有差別, 是以在使用的時候就沒考慮過指定在哪一塊的runner上運作, 反正都差不多

各個服務的管理是通過k3s做的, 也就用runner打個鏡像推送到nexus3上而已

但是在實際的場景中可能會有各種各樣的情況:

  • runner 宿主配置差距大, 個别鏡像放到孱弱的機器上打包會浪費時間造成流程阻塞
  • 不同runner對應不同OS, 蘋果應該可以摻一腳
  • 不同機器擁有不同的鏡像緩存, 可以加快打包速度
  • steps中包含具體部署的部分, 可以直接将服務部署到任務分發的機器上
  • 甚至有可能針對不同時區專門配置了不同的runner
  • ......

這樣看下來, 根據需要自由選擇runner就非常有意義了

重建runner

首先删除原來的runner

然後使用類似下面的指令建立一個新的runner

docker run -itd \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e DRONE_RPC_PROTO=${drone_proto} \
  -e DRONE_RPC_HOST=${drone_server} \
  -e DRONE_RPC_SECRET=${drone_rpc_secret} \
  -e DRONE_RUNNER_CAPACITY=2 \
  -e DRONE_RUNNER_NAME=${HOSTNAME} \
  -e DRONE_LOGS_TRACE=true \
  -e DRONE_AGENTS_ENABLED=true \
  -e DRONE_RUNNER_LABELS=a:b,c:d \
  -p 3000:3000 \
  --restart always \
  --name runner \
  drone/drone-runner-docker
           

與官方文檔不同的是, 這裡增加了一行

-e DRONE_RUNNER_LABELS=a:b,c:d 
           

其中的

a:b,c:d

兩個鍵值對作為 辨別, 可以根據實際情況自己定義, 隻要遵循 {Key1}:{Value1},{Key2}:{Value2} 的格式即可

修改yml

在yml中可以根據上面的 辨別 指定運作時的runner

kind: pipeline
type: docker
name: default

node:
    a: b
    c: d

steps:
    - name: ****
......

           

大概差不多就是這個樣子

繼續閱讀