Drone 部署 Hexo blog
环境
目前的环境是hexo
+docker
+drone
。
package.json
明细
"scripts": {
"build": "hexo generate",
"clean": "hexo clean",
"deploy": "hexo deploy",
"server": "hexo server"
},
.drone.yml
根据上面的环境配置,编辑.drone.yml
kind: pipeline # 定义对象类型,还有secret和signature两种类型
type: docker # 定义流水线类型,还有kubernetes、exec、ssh等类型
name: build-hexo # 定义流水线名称
steps:
- name: build-web # 流水线名称
image: node:12-alpine # 定义创建容器的Docker镜像
volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置
- name: web-build
path: /app/build # 将应用打包好的Jar和执行脚本挂载出来
commands: # 定义在Docker容器中执行的shell命令
- npm install # 应用打包命令
- npm run build
- rm -rf /app/build/* # 删除历史文件
- cp -r public/ /app/build/public/ # 拷贝打包的文件
- cp Dockerfile /app/build/Dockerfile
- cp default.conf /app/build/default.conf
- name: build-docker
image: docker:dind
volumes:
- name: web-build
path: /app/build # 将应用打包好的Jar和执行脚本挂载出来
- name: dockersock
path: /var/run/docker.sock
commands:
- cd /app/build/
- docker build -t my_blog . # 编译容器
- docker stop my_blog # 停止原容器
- docker rm my_blog # 删除原容器
- docker run --name my_blog -p 8005:80 -d my_blog # 启动新容器
volumes: # 定义流水线挂载目录,用于共享数据
- name: web-build
host:
path: /data/drone/temp/hexo/web-build # 从宿主机中挂载的目录
- name: dockersock
host:
path: /var/run/docker.sock
到这里就完成,只需要进行 git push 每次 Drone 就会自动完成打包
,部署
。