新的博客系统准备使用hugo, 更想专注于写, 而不是写完每次都敲命令部署, 接下来搞下自动化部署.
另外blog要实现国内外分流进行加速, 国外去访问github page, 国内访问cdn, 或者自己的云服务器上(双十一撸的一直在吃灰)
1. github page 自动部署
1.1 gh-pages 分支
github 项目新建 gh-pages 分支后, 会自动部署github page上, 所以利用这个特性, 把生成的静态文件提交到 gh-pages
分支上.
- 创建
gh-pages
分支
1 | # 初始化gh-pages branch |
- deploy.sh
1 | !/bin/sh |
每次写完blog, 运行一下脚本即可
1.2 github action 配置
第一种方案, 提交文章后还要执行一次脚本, 通过github action, 可以做到提交文章自动部署, 即CI/CD
hugo主题
hugo的主题, 尽量保证是git submodule维护的
1
git submodule add https://github.com/g1eny0ung/hugo-theme-dream.git themes/dream
look一下
1
2
3
4
5cat .gitmodules
[submodule "themes"]
path = themes/dream
url = https://github.com/g1eny0ung/hugo-theme-dream.git编写github action
去项目的
Actions
增加自己的workflow内容如下:
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
31name: github pages
on:
push:
branches:
- master # 这里是提交到master分支就立即触发job
pull_request:
jobs:
deploy:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
with:
submodules: true # Fetch Hugo themes (true OR recursive)
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: '0.83.1'
- name: Build
run: hugo --minify
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }} # 这里不用动, 默认就好
publish_dir: ./public # 注意是hugo的public文件夹
cname: www.realhttp.com # cname
2. 云服务器自动部署
2.1 国内外分流
首先先设置国内外分流, 就要求同一个域名, 不同的线路指向不同的地址: 如下图
境内我指向了我的云服务器, 境外我指向了github page
, 国外github已经帮我们处理好了, 接下来需要处理一下国内的访问.
2.2 国内nginx配置
国内访问域名已经实现了访问云服务器, 这时候需要配置nginx访问到相应的静态资源.
1 | server { |
静态资源放在了/var/www/hugo/
下, 接下来需要通过github action
自动把生成的静态资源部署到云服务器该文件夹内.
2.3 github action配置
因为需要部署到云服务, 所以需要github通过私钥有访问服务器的权限, 需要在项目里加上私钥和服务器ip.
在项目->Settings->Secrets, 添加相应的变量
- github action 配置如下
1 | name: github pages |
在项目的Actions
下可以看到相应的执行状态: