使用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执行脚本
配置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国内网络访问不稳定,最终弃用该方案。