本站点历史发布模式
早期的脚本模式
- 本地编写好 MD 文件
- 执行 hugo 命令, 构建 WEB静态文件
- scp 传输到目标主机上
将上述流程脚本化
前期-drone
前期采用 drone 进行的自动化编译和部署,参考另一篇单独介绍的文章。
drone无人机-当前站点的发布实践
当前-gitea-runner
我又又又又决定再学一学 ts 了,没办法,搞这个 action 始终绕不过去 js 这一套东西, 虽然单纯的只用 docker 也不是不可以。但是很多既有的 action 也就没法用了。会点 js 至少还能拿来改一改吧。
实际工作流文件
真私有化部署, 不涉及 github 的访问;
流程中存在的问题
- 没有使用 js 类型的 action,太可惜了,后面得补一补
- 拉取代码,拉取镜像,配置环境实现得都不太优雅
.gitea/workflows/work.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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# 工作流的名字
name: myblog-dev
on:
push:
branches: [ main ]
jobs:
# 任务名
hugo-task:
# 选择所运行的平台, 也就是哪个类型的 runner
runs-on: ubuntu-latest
# 运行 action 的环境
container:
# 不使用默认的 node:16 的基础容器镜像, 使用支持docker命令的act镜像
image: registry.services.wait/cwx/catthehacker/ubuntu:act-22.04
# volumes:
steps:
# 配置私有 CA 证书
- name: set ca
# 注意这个位置单独拉出来配置, 是因为多行字符串会被解析为多行命令导致, 算是个 bug
run: echo -e "${{ secrets.CWX_CA_PEM }}" >> /usr/local/share/ca-certificates/cwx.crt
# 配置一下后续运行的基础环境
- name: Set run env
run: |
update-ca-certificates
# git config --global http.sslVerify false
git config --global http.sslCAInfo /usr/local/share/ca-certificates/cwx.crt
git --version
# 克隆代码, 包括一份主题模板
- name: clone code
run: |
git clone https://chenwx:${{secrets.CHENWX_TOKEN}}@git.services.wait/chenwx/myblog.git .
git clone https://chenwx:${{secrets.CHENWX_TOKEN}}@git.services.wait/chenwx/hugo-theme-stack.git themes/hugo-theme-stack
# 登陆仓库和拉取后面需要的 docker 镜像, 其实应该合并的 set env 里面去; 调试暂留
# 目前存在个问题, 这个 镜像应该是不需要单独拉取一次的, 但报了认证错误
# 应该是这里配置 login 时所发生的层和 实际 pull 时的层不一样导致, 后面找时间调试一下再修改。
- name: login registry
run: |
echo "${{ secrets.HARBOR_PW }}" | docker login -u "${{ secrets.HARBOR_USER }}" --password-stdin registry.services.wait
docker pull registry.services.wait/cwx/actions-hugo:ubuntu-v0.118
docker pull registry.services.wait/cwx/ssh-scp-action:v1
# 这个镜像只是单纯的将 hugo 命令打包了,并配置 ENTRYPOINT ["hugo"]
- name: 编译-build
uses: docker://registry.services.wait/cwx/actions-hugo:ubuntu-v0.118
# 占个位置,看看有没有生成文件
- name: 测试-test
run: |
ls public/
# 也就是 scp 推送到目标路径
- name: 发布-deploy
uses: docker://registry.services.wait/cwx/ssh-scp-action:v1
with:
key: ${{ secrets.ED25519_KEY }}
host: 10.2.1.5
port: 22
user: wait
ssh_before: |
rm -rf /data/nfs_private/blog-web-data/blog/*
scp: |
public/* wait@10.2.1.5:/data/nfs_private/blog-web-data/blog/
|