0%

Hexo环境准备

这里已经假设使用Hexo创建好了网站

  1. 配置 _config.yml 的deploy,将文章发布到私有git服务器
1
2
3
4
deploy:
type: git
repo: your-repo.git
branch: master
  1. 执行hexo d 将网站发布到git上
1
$hexo d

配置Drone任务

Drone安装与配置

  1. 到Drone激活仓库

image-20191207230036760

  1. 基础配置

image-20191207230208605

需要勾选 Trusted,因为目前没想到比较好的方式在单机上进行部署发布。所以通过不怎么安全的Volumes方式做目录映射来处理数据,以后有更好的方式再修改。

  1. 进入 .deploy_git 目录,创建.drone.yml配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
---
kind: pipeline
type: docker
name: your-job

workspace:
base: /homespace
path: src

steps:
- name: deploy
image: golang
volumes:
- name: cache
path: /workspace
commands:
- mkdir -p /workspace/zh-blog/
- cd /workspace/zh-blog/
- rm -rf *
- cp -r /homespace/src/* /workspace/zh-blog/

volumes:
- name: cache
host:
path: /custom_dir/workspace

原理解释

通过volumes将宿主系统的 /custom_dir/workspace 目录映射到 cache 上

然后Drone的pipeline在执行脚本的时候,将git的内容覆盖过去

配置Nginx服务器

1
2
3
4
5
6
7
server {
listen 80;
location / {
root /custom_dir/workspace;
index index.html;
}
}

发表一篇文章试试

写好文章后,通过 hexo d进行发布, 在Drone平台上,看到构建任务

image-20191207230908232

Great!!!

创建目录与配置文件

1
2
3
drone
|-- data
|-- docker-compose.yml

data目录是drone的数据目录,通过volumes映射
docker-compose编排容器参数

docker-compose配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
version: '3'

services:
drone-server:
image: drone/drone:latest
container_name: drone-server
ports:
- 127.0.0.1:3100:80
volumes:
- ./data:/data
restart: always
environment:
- DRONE_AGENTS_ENABLED=true
- DRONE_GITEA_CLIENT_ID={GITEA_CLIENT_ID}
- DRONE_GITEA_CLIENT_SECRET={GITEA_SECRET}
- DRONE_GITEA_SERVER={GITEA_HOST}
- DRONE_RPC_SECRET={SHARE_SECRET}
- DRONE_SERVER_HOST={DRONE_HOST}
- DRONE_SERVER_PROTO=https
- DRONE_USER_CREATE=username:xxxuser,admin:true

drone-agent:
image: drone/agent:latest
container_name: drone-agent
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_RPC_SERVER=https://{DRONE_HOST}
- DRONE_RPC_SECRET={SHARE_SECRET}
- DRONE_RUNNER_CAPACITY=2
- DRONE_RUNNER_NAME=drone-runner

DRONE_GITEA_CLIENT_ID, DRONE_GITEA_CLIENT_SECRET: 通过GITEA中创建的应用的ID与密钥

DRONE_RPC_SECRET: 共享密钥,通过下面指令创建

1
$openssl rand -hex 16

DRONE_GITEA_SERVER: GITEA服务器地址

DRONE_SERVER_HOST: Drone服务器Host

DRONE_SERVER_PROTO: 服务器协议,推荐都启用HTTPS

DRONE_USER_CREATE: 初始化管理员权限,不设置的情况,用户通过gitea登录授权后,是普通用户权限。如果需要通过DRONE-CLI进行管理。需要设置这个。

GITEA创建应用

img

重定向URI填上

1
https://{DRONE_HOST}/login

nginx配置drone对外访问

1
2
3
4
5
server {
listen 443 ssl;
# ssl ...
proxy_pass http://127.0.0.1:3100;
}

通过nginx配置反向代理对外访问

运行

1
docker-compose up -d

结束清理时只需 docker-compose down 则可

配置drone-cli (客户端mac)

1
2
3
4
5
6
7
8
$brew install drone-cli
# 设置drone验证
$export DRONE_SERVER={DRONE_HOSE}
$export DRONE_TOKEN={TOKEN}
# 查看drone信息,Everything is ok!
$drone info
User: xxxuser
Email: [email protected]

DRONE_TOKEN 在登录drone页面后,看个人信息页面里面有

image-20191207195911881