前情提要
【hexo系列】01.hexo环境搭建及github.io搭建 - ningan123
【hexo系列】02.hexo和obsidian实现笔记丝滑 - ningan123
问题
1.在上述实现的基础上,每次在本地更新完笔记之后,需要手动执行hexo clean && hexo g && hexo d
推送到github.io
网站(Github Pages)。
2.推送过去之后访问ningan123.github.io
的时候,并不能马上看到更新的内容。
Github Actions介绍
GitHub Actions 是 GitHub 推出的一项强大的自动化工具,它允许用户在 GitHub 仓库中创建、编辑和运行自动化脚本,这些脚本被称为工作流程(workflows)。这些工作流程可以响应 GitHub 上的各种事件,例如代码被推送、issue 被创建、pull request 被打开或定期调度任务等。
GitHub Actions 的工作流程(workflow)由 YAML 文件定义,这些文件放在仓库的 .github/workflows
目录下。每个工作流程文件描述了一系列的作业(jobs)和步骤(steps),定义了运行环境、触发条件、要执行的任务等。
背景
本地存在一个存放hexo博客的文件夹
github.io已经搭建
步骤
1. 新建私有仓库(自动化仓库)
先建一个私有仓库(blog),这个仓库存放的是编译前的文件,也就是你电脑本地的文件,这个仓库是拿来做自动化的
目前github上一共两个仓库
- 一个公有仓库存编译好的hexo(pages仓库,仓库名是
ningan123.github.io
)
- 一个私有仓库存本地电脑编译前的文件(自动化仓库,仓库名是
blog
)
2.绑定本地文件夹到github的私有仓库blog
先查看本地的文件夹是否已经被git管理
方法1:
1 2 3
| PS E:\SynologyDrive\blog> git remote -v fatal: not a git repository (or any of the parent directories): .git PS E:\SynologyDrive\blog>
|
方法2:
查看文件夹根目录下是否有.git文件夹,如果有,需要删除
文件夹根目录下添加.gitignore
文件
1 2 3 4 5 6 7 8 9 10 11 12 13
| .DS_Store Thumbs.db db.json *.log node_modules/ public/ .deploy*/ .deploy_git*/ .idea themes/butterfly/.git themes/3-hexo/.git themes/landscape/.git themes/fluid/.git
|
如果你的主题不是butterfly,那么最后一行请改为你使用的主题
我把我涉及到的几个主题都写上了
绑定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| git init
git config user.name ningan123 git config user.email xxx
git add . git commit -m "first commit"
git remote add origin https://github.com/用户名/自动化仓库名.git git remote add origin git@github.com:用户名/自动化仓库名.git
git remote add origin git@github.com:ningan123/blog.git
git push -u origin master git branch --set-upstream-to=origin/master master git pull
|
3.获取 Github token
Personal Access Tokens (Classic)
生成的token保存好,只会出现这一次,我之前已经生成过了,就不生成了
4.设置私有仓库的secret
5.设置workflow
在本地博客文件夹.github/workflows/下新建autodeploy.yml
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
| name: 自动部署
on: push: branches: - master release: types: - published
jobs: deploy: runs-on: ubuntu-latest steps: - name: 检查分支 uses: actions/checkout@v2 with: ref: master
- name: 安装 Node uses: actions/setup-node@v1 with: node-version: "16.x"
- name: 安装 Hexo run: | export TZ='Asia/Shanghai' npm install hexo-cli -g
- name: 缓存 Hexo id: cache-npm uses: actions/cache@v3 env: cache-name: cache-node-modules with: path: node_modules key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-build-${{ env.cache-name }}- ${{ runner.os }}-build- ${{ runner.os }}-
- name: 安装依赖 if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }} run: | npm install gulp-cli -g #全局安装gulp npm install --save
- name: 生成静态文件 run: | hexo clean hexo bangumi -u #bilibili番剧更新 hexo generate
- name: 部署到Github uses: JamesIves/github-pages-deploy-action@v4 with: token: ${{ secrets.GITHUBTOKEN }} repository-name: ningan123/ningan123.github.io branch: main folder: public commit-message: "${{ github.event.head_commit.message }} $(date +\"%Z %Y-%m-%d %A %H:%M:%S\") Updated By Github Actions"
|
1 2 3
| git add .\.github\workflows\autodeply.yaml git commit -m "add autodeply" git push
|
重新生成了token也不好使,后来换了一个autodeploy.yml,成功执行了,如下:
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 79 80 81 82 83 84 85
| name: 自动部署
on: push: branches: - master release: types: - published
jobs: deploy: runs-on: ubuntu-latest steps: - name: 检查分支 uses: actions/checkout@v2 with: ref: master
- name: 安装 Node uses: actions/setup-node@v1 with: node-version: "16.x"
- name: 安装 Hexo run: | export TZ='Asia/Shanghai' npm install hexo-cli -g
- name: 缓存 Hexo id: cache-npm uses: actions/cache@v3 env: cache-name: cache-node-modules with: path: node_modules key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-build-${{ env.cache-name }}- ${{ runner.os }}-build- ${{ runner.os }}-
- name: 安装依赖 if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }} run: | npm install gulp-cli -g #全局安装gulp npm install --save
- name: 生成静态文件 run: | hexo clean hexo bangumi -u #bilibili番剧更新 hexo generate
- name: deploy run: | export TZ='Asia/Shanghai' cd ./public git init git config --global user.name '${{ secrets.GITHUBUSERNAME }}' git config --global user.email '${{ secrets.GITHUBEMAIL }}' git add . git commit -m "${{ github.event.head_commit.message }} $(date +"%Z %Y-%m-%d %A %H:%M:%S") Updated By Github Actions" git push --force --quiet "https://${{ secrets.GITHUBUSERNAME }}:${{ secrets.GITHUBTOKEN }}@github.com/${{ secrets.GITHUBUSERNAME }}/${{ secrets.GITHUBUSERNAME }}.github.io.git" master:main # GitHub配置
|
github.io里面也即时推送过来la~
参考
Github Action自动化部署Hexo博客和Qexo管理后台 - 清~幽殇
♪(^∇^*)欢迎肥来!使用 Github Action 自动部署 | 安知鱼