使用Github Action自动部署HEXO博客
絮絮叨叨
GitHub 支持 Action进行CI操作已经很多年了。似乎是从2020年就已经开始支持,从那时开始就打算使用GitHub Action来自动化部署我的博客。
用GitHub Action 有很多好处,只管在编辑器中编写markdown格式的博客原稿就好了,不再需要在本地部署node以及hexo的那一大堆依赖,很容易就可以在不同的地方写博客。换句话说,让写博客更纯粹,只需关注写的内容即可。
但是由于近来几年更新少,所以就一直没搞这套操作。趁着国庆的时间,好好的看了一些关于Github Action的资料,准备把这个CI给用起来。相信搞完之后,以后提交博客文章就可以在Action界面看到CI的执行状态。就像在公司提交代码时一样~
行动起来
简明扼要的开始记录折腾步骤
先去用户设置创建一个token
-
进入设置
-
左下角进入 Developer setting
-
到Token classic 里面去生成一个新的token
-
填写自己的token名,然后勾选仓库和workflow的权限,然后点生成token
-
接着就复制token,存好到一个地方,比如在微信文件助手里面给自己发一下
-
去hexo源码仓,就是我们提交post文章的仓里,创建一个secrets
-
到仓库的Action页面查看
CI界面还可以看到所有workflow的执行记录,非常奈斯
如果出现了错误,可以直观的在错误日志里面看到错误的信息,以便于后续修改CI脚本或者其他的内容
效果
成功部署之后可以在被部署的仓库看到提交的记录
最终的Action脚本
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| name: CI
on: push: branches: - main
env: GIT_USER: 写你自己的 GIT_EMAIL: 写你自己的 THEME_REPO: 写你自己的源码仓地址 THEME_BRANCH: main DEPLOY_REPO: 写你自己的HEXO public仓地址,是名字带 .github.io 的仓 DEPLOY_BRANCH: main
jobs: build: permissions: contents: read pages: write name: Build on node ${{ matrix.node_version }} and ${{ matrix.os }} runs-on: ubuntu-latest strategy: matrix: os: [ubuntu-latest] node_version: [20.x]
steps: - name: Checkout uses: actions/checkout@v4
- name: Checkout theme repo uses: actions/checkout@v4 with: repository: ${{ env.THEME_REPO }} ref: ${{ env.THEME_BRANCH }} path: theme_build
- name: Use Node.js ${{ matrix.node_version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node_version }}
- name: Install Hexo dependencies run: | cd ./theme_build pwd ls -l yarn npm install hexo-util hexo-cli hexo-deployer-git -g - name: Deploy hexo run: | cd ./theme_build hexo clean hexo g ls
- name: Checkout deploy repo uses: actions/checkout@v4 with: repository: ${{ env.DEPLOY_REPO }} ref: ${{ env.DEPLOY_BRANCH }} path: .deploy_git
- name: Copy hexo public to Deployed Repo run: | cp -r ./theme_build/public/* .deploy_git/ ls .deploy_git/
- name: Deploy to GitHub Pages uses: peaceiris/actions-gh-pages@v3 with: personal_token: ${{ secrets.DELOPY_TOKEN }} publish_dir: .deploy_git external_repository: ${{env.DEPLOY_REPO}} publish_branch: ${{ env.DEPLOY_BRANCH }} commit_message: "Auto Delopy by CI"
|
总结
爽!!!就一个字
在CI里面,我加了很多乱七八糟的打印和各种垃圾东西,还有这个Action的yaml参考了很多很多的文章,打开的标签页实在太多,已经找不到参考的是谁的了。只能说,感谢各位大神的无私分享,让我东拼西凑出一个Action,感谢