Drone CI/CD 是一款轻量的devOps软件。
声明 pipeline type的类型,在 yml 文件中写入 step 就可以进行自定义打包了。pipeline的常用类型有 docker等,使用一个基础镜像,在drone的容器内部进行打包,如 node:10 -> commands : npm install/ npm build.
本文主要说明如何使用 pipeline 为 exec 类型时,只需要执行自定义bash脚本,或几句简单的bash命令完成自己的CD。
- 安装Drone,如果是多节点则需要安装 drone-agent。本文以多节点安装, Drone + Gitlab 实例
docker run --volume=/var/lib/drone:/data --env=DRONE_AGENTS_ENABLED=true \
--env=DRONE_GITLAB_SERVER=${gitlab.yoururl.com} \
--env=DRONE_GITLAB_CLIENT_ID=${gitlab中的client id} \
--env=DRONE_GITLAB_CLIENT_SECRET=${gitlab中的client secret} \
--env=DRONE_RPC_SECRET=${自定义 secret} \
--env=DRONE_SERVER_HOST=${drone.yoururl.com} \
--env=DRONE_SERVER_PROTO=http \
--env=DRONE_TLS_AUTOCERT=false --env=DRONE_LOGS_DEBUG=true \
--env=DRONE_USER_CREATE=username:root,admin:true \
--publish=8881:80 --restart=always --detach=true --name=drone drone/drone:1
配置Agent
docker run -d -v /var/run/docker.sock:/var/run/docker.sock \
-e DRONE_RPC_PROTO=http \
-e DRONE_RPC_HOST=${drone.yoururl.com} \
-e DRONE_RPC_SECRET=${自定义 secret 与 上面对应} \
-e DRONE_RUNNER_CAPACITY=1 \
-e DRONE_RUNNER_NAME=${agent 名称} \
-p 3000:3000 \
--restart always --name runner drone/agent:1
到此,Drone 与 Gitlab 的配置已经配置完成。
- 现在主要说说如何使用 Drone 中 pipeline 类型为 exec
这是一个实例的 yml 文件。
kind: pipeline
type: exec
name: deployment
platform:
os: linux
arch: amd64
steps:
- name: backend image build
commands:
- echo start build images...
- export MAJOR_VERSION=1.0.rtm.
- export BUILD_NUMBER=$DRONE_BUILD_NUMBER
- export WORKSPACE=`pwd`
- bash ./build.sh
when:
branch:
- master
如果我们仅仅只是配置了 drone + agent ,在 drone 执行这个yml文件的时候,一定会卡pending。
我们还需要在执行服务器上安装 drone-runner-exec
curl -L https://github.com/drone-runners/drone-runner-exec/releases/latest/download/drone_runner_exec_linux_amd64.tar.gz | tar zx
sudo install -t /usr/local/bin drone-runner-exec
touch /etc/drone-runner-exec/config
vim /etc/drone-runner-exec/config
将这些变量保存到config中:
DRONE_RPC_PROTO=http
DRONE_RPC_HOST=drone.yoururl.com
DRONE_RPC_SECRET=之前部署时的自定义secret
drone-runner-exec service install
drone-runner-exec service start
# 停止可以使用
drone-runner-exec service stop
现在 Drone 就可以执行自定以的bash命令了。