Github Actions 自动部署 Hexo - wuuconix's blog
背景
昨天尝试了Cloudflare的pages功能,它可以识别一个vue工程文件,然后自动build,最后自动部署给你一个域名来访问,智能地令人害怕。
于是我想,如果github也能实现类似的操作该有多好,毕竟我github上还存着不少的vue项目。
这让我想起了7att1ce给我推荐过很多次的github actions。在参考了 GitHub Actions 入门教程 - 阮一峰的网络日志 (ruanyifeng.com)后,我了解到github actions有一个商店 Marketplace,就在github菜单栏里。
于是我搜索关键词Vue,找到了一个十分不错的acion Vue to Github Pages · Actions · GitHub Marketplace,最终我把SeTu Index Project 直接部署到了github pages上。项目地址:wuuconix/setu: Setu Index Project (github.com)。
在实现了vue项目的自动部署后,我便想着把博客也给自动部署了。
过程
首先我同样在 商店里搜索 关键词 hexo,选取了其中最高star的acion进行了尝试,但是失败了。action的过程没有报错,但是没有上传到github.io这个pages项目里。
然后我尝试了hexo官方的github actions部署教程,发现它是把build的产物放在了源仓库里的 另一个分支里面,而github pages的开通需要仓库为public,但是博客源文件我是不想让人看见的,因为我有两篇需要密码才能看的加密文章。所以这也失败了。
最后,我学习了github action的相关语法,在参考了几个文章后,自己写了一个action,代码如下。
123456789101112131415161718192021222324252627282930313233343536 | name: Deploy # Actions 显示的名字,随意设置on: [push] # 监听到 push 事件后触发jobs: build: runs-on: ubuntu-latest steps: - name: Checkout # 拉取当前执行 Actions 仓库的指定分支 uses: actions/checkout@v2 with: ref: main - name: Setup Node # 使用node 14 uses: actions/setup-node@v2 with: node-version: "14" - name: NPM INSTALL #安装依赖 run: | npm install hexo-cli -g npm install - name: Add KEY #这里需要提供一个ssh私钥,用你平时常用机器里的 ~/.ssh/id_rsa即可 env: SSH_PRIVATE: ${{ secrets.SSH_PRIVATE }} run: | mkdir -p ~/.ssh/ echo "$SSH_PRIVATE" > ~/.ssh/id_rsa chmod 700 -R ~/.ssh ssh-keyscan github.com >> ~/.ssh/known_hosts git config --global user.email "输入你的邮箱" git config --global user.name "输入你的github名字" - name: Hexo Deploy # hexo deploy 会自动build然后上传到github.io项目中 run: | hexo clean hexo deploy |
---|
它的主要工作步骤是
- 利用 actions/checkout@v2 拉取本项目的main分支到 action虚拟机。
- 利用 actions/setup-node@v2 在虚机里配置 node 14的环境。
- 利用npm全局安装hexo脚手架,然后 npm install安装博客的依赖。
- 把一个私钥给虚机(因为之后的hexo deploy)设计到对仓库的上传,我这里直接把 wsl里的 ~/.ssh/id_rsa 放到 博客源码仓库的 secrets.SSH_PRIVATE了。 这样就能保证虚机能够正常更新pages仓库。
- 调用hexo deploy
结果截图
- 本地git push
- 博客源码仓库 发现push请求,开始build,只花了40秒就完成了。
- pages仓库接收到变化,pages自动执行更新操作(所以github pages 自带了一个action)
战术总结
现在博客直接放 github,测试了一下访问速度,感觉和放阿里云上没有区别。
而且以后本地也不用hexo g了,直接hexo s预览,预览感觉ok了,直接git push,actions会自动帮你build 和 更新pages。
十分舒适!
相关文章
- 基于ArgoCD的GitOps转型实战经验
- GitOps: Kubernetes CI/CD 的缺失环节
- Linux网络编程-TCP客户端如何获取要连接的服务端IP?
- 嵌入式Qt-表格使用测试
- PHP常见的几种数据结构
- php-fpm 是如何处理php 请求的
- [linux]执行pip安装的程序:command not found
- [linux]查看linux下端口占用
- [linux]scp指令
- [linux笔记]理清linux安装程序用到的(configure, make, make install)
- [git]git忽略文件
- linux根目录下文件夹概览
- php 生产kafka 不生效问题
- PHP二维数组取差集
- php 拉取 gz 文件进行解压后保存到自己的服务器
- go包管理代理网址无法访问
- go 连接redis
- mongo 笔记
- 2022-12-29:nsq是go语言写的消息队列。请问k3s部署nsq,yaml如何写?
- 不背锅运维:上篇:Go并发编程