使用Github Actions构建部署博客

使用github actions构建部署博客

博客之前使用markdown写完后,本地写了个php脚步读取md文件,push到WordPress接口发布,不太优雅。主要是最近感觉小屏幕风格样式不太好看,换了个大屏自适应主题。

所以博客做了一些调整:

  • 博客改成基于hugo,markdown文件管理方便,只需负责渲染生成静态页面部署即可
  • 之前博客markdown文件文章参数补全适配hugo模板重新推送渲染
  • 新增github actions构建部署,提交代码触发hook直接构建、部署极其方便,尝试了一下github actions自动构建、发布

使用github actions构建部署博客

github actions构建部署博客流程:

  • 提交代码触发hook
    • 触发action job:
      • 拉取代码
      • 编译
      • 上传release
      • 调用nginx api
    • nginx api path执行脚本
      • 下载最新release
      • 解压缩、部署

配置github actions流程:

  • 项目根目录touch.github/workflows/main.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
name: blog-build-deploy

on:
push:
branches: [ master ]

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
with:
submodules: true
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2.2.2
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
with:
hugo-version: '0.59.1'
extended: true
# 执行hugo命令编译生成出静态页面资源
- name: Build
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
run: hugo --minify && tar -zcf ${GITHUB_REF_NAME}-${GITHUB_SHA::8}.tar public && ls
# 上传release
- name: Upload Release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ./*.tar
tag: ${{ github.ref }}-${{ github.sha }}
overwrite: true
file_glob: true
make_latest: true
# 调用api触发部署脚本
# ...略

  • 部署脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash

#### global env
GITHUB_TOKEN="****"
REPO_API="https://api.github.com/repos/qianbaidu/qipajun.com/releases/latest"

#### 获取最新版本下载地址
downloadUrl=` curl -XGET -H "Authorization: Bearer ${GITHUB_TOKEN}" ${REPO_API} | grep "browser_download_url" |cut -f4 -d "\""`
apiDownloadUrl=` curl -XGET -H "Authorization: Bearer ${GITHUB_TOKEN}" ${REPO_API} | grep "releases/assets/" |cut -f4 -d "\""`

echo "DownloadUrl :$apiDownloadUrl"
echo "apiDownloadUrl :$downloadUrl"

#### 使用字符串替换功能进行替换
authDownLoadUrl=${apiDownloadUrl//"api.github.com"/"${GITHUB_TOKEN}:@api.github.com"}

echo "start download release $authDownLoadUrl"

wget -q --auth-no-challenge --header='Accept:application/octet-stream' \
$authDownLoadUrl # -O release.tar

#### 解压、部署
...略

测试部署

  • 项目提交后就会自动触发构建

    至此就配置完成了自动构建、部署。直接git push即可实现自动编译、部署了。

  • 鉴于github release国内网络访问不稳定,最终弃用该方案。