Hexo如何实现CI/CD?

现在来介绍一下我的网站是如何实现持续部署的。

Docker

首先要在服务器上Build一个Docker镜像,用于生成Hexo网站,因为如果直接用Python调用shell命令构建的话,会有环境变量和权限的问题,所以这里我们把源代码目录bind到容器中,然后在容器中构建。Dockerfile如下:

1
2
3
4
5
6
7
8
9
10
11
FROM node:12-alpine
RUN echo "Asia/Shanghai" > /etc/timezone \
&& echo "https://mirrors.ustc.edu.cn/alpine/v3.9/main/" > /etc/apk/repositories \
&& npm config set registry https://registry.npm.taobao.org \
&& apk add --no-cache git

VOLUME /build/src
WORKDIR /build
COPY ./build.sh /build

ENTRYPOINT ["/bin/sh", "./build.sh"]