记一次Github Actions自动化部署实践 🏆 掘金技术征文|双节特别篇

331 阅读1分钟

写在前面的话,事情应该发生在去年我换电脑的时候,因为博客使用hexo搭建的,所以源代码也就都遗留在了本地,每次发布的时候只提交generator之后剩余的静态资源文件。

但是换完电脑忘记拷贝源代码了,所以给自己埋的坑就是原来写的博客源文件全部遗失。不过没关系,正好我有重头开始的准备。

这不,Github Action出现了,从根本上解决了我的痛点。

认知储备

什么是Github Actions

alt

直接点击传送门,看看阮一峰大佬的Github Actions 入门教程;

git公钥、私钥的理解

git的公钥与私钥好比钥匙与锁的关系,一个公钥对应一个私钥。

如何生成?

$ ssh-keygen -t rsa -C 'your email'

会有两个文件,一个文件是xxx.pub是公钥,xxx是私钥与之对应。

具体解释,参见 服务器上的 Git - 生成 SSH 公钥

怎么理解Hexo博客自动部署?

简单来讲就是借助Github Actions所提供的虚拟机环境,读取博客源仓库所携带的私钥,写入虚拟机环境的~/.ssh/id_rsa,保证正常push可以有权限进行。而对应的公钥则是保留在目标仓库里面。

其实核心操作还是Hexo提供的deploy commond;

当执行 hexo deploy 时,Hexo 会将 public 目录中的文件和目录推送至 _config.yml 中指定的远端仓库和分支中,并且完全覆盖该分支下的已有内容。

参见hexo官方文档-部署

开始部署

文章假设你已经准备好了两个仓库blog(应该设置为私有仓库,毕竟一些隐私密码都会存在这里)andxxx.github.io。前者用于存放hexo博客源代码,后者用于自动部署的仓库。

绑定公钥与私钥,公钥----->xxx.github.io私钥----->blog

下图应该详细阐述了怎么绑定公钥与私钥~

编写Github Actions workflow file

name: Deploy Blog

on: [push] # 当有新push时运行

jobs:
  build-and-deploy: # 创建job

    runs-on: ubuntu-latest # 在最新版的Ubuntu系统下运行

    steps:
    - name: Checkout # 将仓库内master分支的内容下载到工作目录
      uses: actions/checkout@v1 # 脚本来自 https://github.com/actions/checkout

    - name: Use Node.js 10.x # 配置Node环境
      uses: actions/setup-node@v1 # 配置脚本来自 https://github.com/actions/setup-node
      with:
        node-version: "10.x"

    - name: Setup Hexo Env
      env:
        ACTION_DEPLOY_KEY: ${{ secrets.HEXO_DEPLOY_KEY }} # 拿到仓库配置的私钥:HEXO_DEPLOY_KEY
      run: |
        # set up private key for push code
        mkdir -p ~/.ssh/
        echo "$ACTION_DEPLOY_KEY" > ~/.ssh/id_rsa # 配置秘钥
        chmod 700 ~/.ssh
        chmod 600 ~/.ssh/id_rsa
        ssh-keyscan github.com >> ~/.ssh/known_hosts
        # set git config
        git config --global user.name "your name"
        git config --global user.email "your email"
        # install dependencies
        npm i -g hexo-cli # 安装hexo
        npm i
    - name: Hexo Deploy
      run: |
        # deploy and automatic push code
        hexo generate && hexo deploy # 执行部署程序

温馨提示: 别懵了啊,这个文件是在blog仓库下建立的。

alt

The End

最后,来看看我们的成果吧~

alt

alt

有没有视觉疲劳呢?来放松一下吧~

alt

我是书生,一个穷书生~ 博客地址:bigdreamer.cc GitHub地址: github.com/bigbigDream…