应无所住而生其心

发布于     更新于
安装 drone 配置持续集成环境。

应如是生清净心,不应住色生心,不应住声香味触法生心,应无所住而生其心。

安装 drone 配置持续集成环境。


最近想在自己的服务器上配置自动化部署的环境。搜了一下常见的自动化的 ci 服务,装了 jenkins ,占用了我 3g 多内存。太臃肿了。

然后找到一个叫做 drone 的,看起来还不错。

drone 分为两部分, serverrunners 。首先装 sever ,安装的时候通过指定环境变量来配置第三方登陆,这里用自托管的 gitlab 为例:

首先在终端生成一个 SECRET:

openssl rand -hex 16

记下这 DRONE_RPC_SECRET 用于 serverrunner 通信。

在 gitlab 新建一个 app 生成 DRONE_GITLAB_CLIENT_ID DRONE_GITLAB_CLIENT_SECRET

通过 docker 安装

  • 安装 server
docker run \
  --volume=/var/lib/drone:/data \
  --volume=/var/lib/drone:/data \
  --env=DRONE_GITLAB_SERVER=https://gitlab.domain.host \
  --env=DRONE_GITLAB_CLIENT_ID=abcd \
  --env=DRONE_GITLAB_CLIENT_SECRET=abcd \
  --env=DRONE_RPC_SECRET=abcd \
  --env=DRONE_SERVER_HOST=drone.domain.host \
  --env=DRONE_GIT_ALWAYS_AUTH=true \
  --env=DRONE_SERVER_PROTO=https \
  --publish=9480:80 \
  --publish=9443:443 \
  --restart=always \
  --detach=true \
  --name=drone \
  drone/drone:2
  • 安装 runner
docker run --detach \
  --volume=/var/run/docker.sock:/var/run/docker.sock \
  --env=DRONE_RPC_PROTO=https \
  --env=DRONE_RPC_HOST=drone.domain.host \
  --env=DRONE_RPC_SECRET=abcd \
  --env=DRONE_RUNNER_CAPACITY=2 \
  --env=DRONE_RUNNER_NAME=my-docker-runner \
  --env=DRONE_DEBUG=true \
  --env=DRONE_TRACE=true \
  --env=DRONE_RPC_DUMP_HTTP=true \
  --env=DRONE_RPC_DUMP_HTTP_BODY=true \
  --env=DRONE_UI_USERNAME=my-docker-runner \
  --env=DRONE_UI_PASSWORD=abcd \
  --publish=8300:3000 \
  --restart=always \
  --name=runner \
  drone/drone-runner-docker

安装后的问题:

1、运行起来了,但是 Console Logs 一直是 pending ,发现因为我的是 arm 的机器,需要指定系统架构:

kind: pipeline
name: default

+platform:
+  os: linux
+  arch: arm64

steps: ...

参见 这里

2、挂载主机卷需要设置受信任的源

linter: untrusted repositories cannot mount host volumes

因为前面是通过代码仓库快捷登陆创建的用户,此用户默认不是管理员权限。需要通过 cli 修改用户权限。

重新运行 docker 创建一个管理员用户:DRONE_USER_CREATE

--env=DRONE_USER_CREATE=username:用户名,machine:false,admin:true,token:另一个TOKEN   \

本地安装 cli

curl -L https://github.com/harness/drone-cli/releases/latest/download/drone_linux_amd64.tar.gz | tar zx
sudo install -t /usr/local/bin drone

将之前登陆的帐号配置为管理员权限:Create Additional Admins

drone info
drone user update 用户 --admin
drone user ls
drone info

然后就可以通过图形界面或者命令行设置信任源。

drone repo update your/repo --trusted=true