使用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:
    • 启动构建环境实例
    • 拉取代码
    • 编译、推送、部署

配置github actions流程:

  • 项目根目录touch.github/workflows/main.yml
  • 编写流程配置
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
      with:
        hugo-version: '0.59.1'
        extended: true
    # 执行hugo命令编译生成出静态页面资源
    - name: Build
      run: hugo --minify

    - name: Deploy
      env:
        # github 项目-> settings -> Secrets -> 添加`ACTIONS_DEPLOY_KEY`参数的ssh私钥
        ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
        # 服务器ip
        HOST: xxx.xxx.xxx.xxx
        USER: developer
      run: |
        # 构建实例中创建ssh相关文件
        SSH_PATH="$HOME/.ssh"
        mkdir -p $SSH_PATH
        touch "$SSH_PATH/known_hosts"
        echo "$ACTIONS_DEPLOY_KEY" > "$SSH_PATH/id_rsa"
        chmod 700 "$SSH_PATH"
        chmod 600 "$SSH_PATH/known_hosts"
        chmod 600 "$SSH_PATH/id_rsa"
        eval $(ssh-agent)
        ssh-add "$SSH_PATH/id_rsa"
        ssh-keyscan -t rsa $HOST >> "$SSH_PATH/known_hosts"
        # ssh -o StrictHostKeyChecking=no -i $SSH_PATH/id_rsa -A -tt $USER@$HOST ls

        # 打包scp到远端、并解压拷贝的目录路径下,这里相对简单可以自行再优化调整
        tar -zcvf qipajun.com.tar public
        scp -i $SSH_PATH/id_rsa -r qipajun.com.tar $USER@$HOST:/data/www/
        ssh -o StrictHostKeyChecking=no -i $SSH_PATH/id_rsa $USER@$HOST "cd /data/www/ && tar -zxvf qipajun.com.tar && cp -r alex_blog alex_blog_bak &&  cp -r public/* alex_blog/ && rm -rf qipajun.com.tar &&  echo deploy success "

  • 注意事项:
    • 构建时会根据配置启动构建实例,这里是runs-on: ubuntu-latest
    • 需在github项目设置中添加Secrets配置,添加ssh私钥信息,部署时和自己的服务器通信使用

测试部署

  • 项目提交后就会自动触发构建 至此就配置完成了自动构建、部署。直接git push即可实现自动编译、部署了。

是否使用github actions需按个人情况有待慎重考虑

  • 鉴于能够直接访问自己服务器,安全风险需考虑
  • 另外github actions随机启动实例国内网络不稳定,测试到此为止