应无所住而生其心
发布于
更新于
安装 drone 配置持续集成环境。
应如是生清净心,不应住色生心,不应住声香味触法生心,应无所住而生其心。
安装 drone 配置持续集成环境。
最近想在自己的服务器上配置自动化部署的环境。搜了一下常见的自动化的 ci 服务,装了 jenkins ,占用了我 3g 多内存。太臃肿了。
然后找到一个叫做 drone 的,看起来还不错。
drone 分为两部分, server
和 runners
。首先装 sever
,安装的时候通过指定环境变量来配置第三方登陆,这里用自托管的 gitlab 为例:
首先在终端生成一个 SECRET:
openssl rand -hex 16
记下这 DRONE_RPC_SECRET
用于 server
和 runner
通信。
在 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