平常写blog都在一台电脑上操作,先写完markdown文件,使用hexo的命令 hexo g 生成静态网页,再使用hexo d 发布到github网页仓库上,然后还要将本地blog工程上传到github博客备份仓库。虽然这些步骤已经简化到一个脚本中了。每次只要执行这个脚本就能完成所有流程。但是每次都得在电脑上编写,或者换一台电脑还得重新搭建环境,还是觉得不太方便。就将目光瞄向了github的自动化流程 workflows功能。
自动化流程是命令驱动的,相当于可以在一台虚拟计算机上执行任何允许的操作。查了一下,发现自动化部署是一个早都实现的功能。只需要在blog备份仓库上增加一个流程控制文件 ./github/workflows/deploy.yml
name: Deploy hexo blog on: push: branches: - main jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [20.x] steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'npm' - name: Configuration environment env: HEXO_DEPLOY_PRI: ${{secrets.HEXO_DEPLOY_PRI}} run: | sudo timedatectl set-timezone "Asia/Shanghai" mkdir -p ~/.ssh/ echo "$HEXO_DEPLOY_PRI" | tr -d '\r' > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-keyscan github.com >> ~/.ssh/known_hosts git config --global user.name "sunow" git config --global user.email "sunow@163.com" - name: Install dependencies run: | npm i -g hexo-cli npm ci - name: Deploy hexo run: | hexo clean hexo d -g
当然还是需要在blog备份仓库设置私钥,在blog发布仓库设置公钥。
这样每次提交一个文件,到post目录,就能触发自动化部署流程,彻底丢开环境的束缚。
技术使人变懒,能自动的绝不手动。这是一个搞技术的对技术的起码尊重。
文章的开头需要手动填写date和updated字段,这样自动化部署就不会出现排序混乱的问题了。