docker 搭建Drone CI / CD 持續集成系統

搭建Drone CI / CD 持續集成系統

本文將介紹如何使用 docker 和 drone1.0 搭建自己的 cicd 系統。

網上的教程幾乎都是基於0.8版本的,網上1.0的能用的幾乎沒有,官方1.0前還有中文文檔,1.0之後目前僅有英文,且較爲簡略。1.0和之前版本差異較大,無論是配置項,配置文件結構又或者是部署方式,而在實際搭建過程中,遇到不少坑,故記錄通過 docker 搭建 drone 1.0 的過程。

跳過介紹,直接看如何搭建 drone

簡介

drone 是什麼?drone 是一個CI/CD的軟件,類似 jenkins ,同類軟件除了比較知名的 jenkins 外,還有TeamCity、Travis CI、AppVeyor、Azure Pipelines 等等。drone 官網

drone pipeline cicd 使用例子

drone 還有一些插件

爲什麼不用 jenkins

  • 節省更多服務器資源,佔用內存、CPU 遠比jenkins少。
  • 界面、清晰、好看,比 jenkins 的古老 UI 更具科技感。
  • 入門簡單,可以快速入門CICD。
  • 原生支持容器環境,docker、k8s…,當然 jenkins 也可以通過插件支持。
  • 啓動相當迅速
  • drone 提供的能力完全足夠使用,主要用的功能也有相應的插件支持,雖然比 jenkins 少,但已經夠用。

界面預覽

drone界面預覽

drone界面示例

通過 Docker 安裝 drone-server

DRONE 和 drone-runner 通信的密鑰保持一致即可

使用 github 倉庫

docker run \
  --volume=/opt/bin/drone/data:/data \
  --env=DRONE_GITHUB_CLIENT_ID={在github複製} \
  --env=DRONE_GITHUB_CLIENT_SECRET={在github複製} \
  --env=DRONE_RPC_SECRET={DRONE 和 drone-runner 通信的密鑰} \
  --env=DRONE_SERVER_HOST={一般填寫本機的 ip:port } \
  --env=DRONE_USER_CREATE=username:admin,admin:true \
  --env=DRONE_TLS_AUTOCERT=true \
  --env=DRONE_SERVER_PROTO=http \
  --publish=9090:80 \
  --publish=9443:443 \
  --restart=always \
  --detach=true \
  --name=drone \
  drone/drone:1

使用 Gogs 倉庫

gogs 是類似 gitlab 的代碼管理平臺,支持搭建私服,和 gitlab 類似,但 gitlab 私服搭建用了不到4G內存,gogs實測只需要26M 如何使用搭建 gogs Git 私服

docker run \
  --volume=/opt/bin/drone/data:/data \
  --env=DRONE_GIT_ALWAYS_AUTH={git clone 需要認證時設置成true,否則false} \
  --env=DRONE_GIT_USERNAME={GIT 用戶名} \
  --env=DRONE_GIT_PASSWORD={GIT 密碼} \
  --env=DRONE_GOGS=true \
  --env=DRONE_GOGS_SKIP_VERIFY=false \
  --env=DRONE_GOGS_SERVER=http://{Gogs服務的域名 或 ip:port} \
  --env=DRONE_PROVIDER=gogs \
  --env=DRONE_RPC_SECRET={DRONE 和 drone-runner 通信的密鑰} \
  -env=DRONE_USER_CREATE=username:gogs,admin:true \
  --env=DRONE_SERVER_PROTO=http \
  --publish=9090:80 \
  --publish=9443:443 \
  --restart=always \
  --detach=true \
  --name=drone \
  -h drone \
  drone/drone:1

通過 Docker 安裝 drone-runner

在 drone 1.0 之前的版本還較 drone-agent,因此看到 drone-agent 的教程一般是比較舊的了,1.0 後改爲了 drone-runner。

執行命令

docker run -d \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e DRONE_RPC_PROTO=http \
  -e DRONE_RPC_HOST={DRONE-server 的地址,如 192.168.1.1:9090} \
  -e DRONE_RPC_SECRET={DRONE 和 drone-runner 通信的密鑰} \
  -e DRONE_RUNNER_CAPACITY=2 \
  -e DRONE_RUNNER_NAME=${HOSTNAME} \
  -p 3000:3000 \
  --restart always \
  --name drone-runner \
  --link=drone:drone \
  drone/drone-runner-docker:1


查看容器狀態

查看所有容器狀態

docker ps -a

查看運行日誌

docker log drone

打開瀏覽器,訪問配置的 ip:port 即可


回頂部

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章