Hexo博客在部署的时候,随着文章越来越多,编译的时间也会越来越长,而通过Github Action,我们可以在完成博客编写和修改之后直接将改动push到远程仓库,让其自动完成编译和部署
创建存放源码的私有仓库
首先,需要创建一个用来存放Hexo博客源码的私有仓库
之后我们需要将源码push到这里
采用私有仓库的原因是以下的操作会使用token,如果token被盗用则盗用者可以任意操作你的git仓库
获取Token
Github Token
在github的Settings中选择 Developer Settings -> Personal access tokens -> generate new token,token名字任意,勾选上repo项
快速访问
确定生成后,将token复制下来保存好
官方提示:Make sure to copy your new personal access token now. You won’t be able to see it again!
就是说这个只显示一次,如果你丢失了这个token,那么你得重新再生成一个
Gitee Token
头像(右上角) -> 设置 -> 私人令牌 -> 生成新令牌
快速访问
同样需要保存好这个token
配置deploy项
打开站点配置文件_config.yml,对deploy进行修改
修改格式如下
1 2 3 4 5 6
| deploy: - type: git repo: gitHub: https://[GithubUsername]:[GithubToken]@github.com/[GithubUsername]/[GithubBlogRepo].git gitee: https://[GiteeUsername]:[GiteeToken]@gitee.com/[GiteeUsername]/[GiteeBlogRepo].git branch: master
|
配置Github Action
在博客的根目录新建.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
| # 当有改动推送到master分支时,启动Action name: 自动部署
on: push: branches: - master #2020年10月后github新建仓库默认分支改为main,注意更改
release: types: - published
jobs: deploy: runs-on: ubuntu-latest steps: - name: 检查分支 uses: actions/checkout@v2 with: ref: master #2020年10月后github新建仓库默认分支改为main,注意更改
- name: 安装 Node uses: actions/setup-node@v1 with: node-version: "12.x"
- name: 安装 Hexo run: | export TZ='Asia/Shanghai' npm install hexo-cli -g
- name: 缓存 Hexo uses: actions/cache@v1 id: cache with: path: node_modules key: ${{runner.OS}}-${{hashFiles('**/package-lock.json')}}
- name: 安装依赖 if: steps.cache.outputs.cache-hit != 'true' run: | npm install --save
- name: 生成静态文件 run: | hexo clean hexo generate
- name: 部署 run: | git config --global user.name "[GithubUsername]" git config --global user.email "[GithubEmail]" git clone git@github.com:[GithubUsername]/[GithubBlogRepo].git .deploy_git # =====注意.deploy_git前面有个空格===== # clone 静态文件仓库,防止 Hexo 推送时覆盖整个静态文件仓库,只推送有更改的文件 hexo deploy
|
配置远程仓库和分支
在.gitignore中输入以下内容
1 2 3 4 5 6 7 8 9 10
| .DS_Store Thumbs.db db.json *.log node_modules/ public/ .deploy*/ .deploy_git*/ .idea themes/butterfly/.git
|
然后提交源码到私有仓库
指令如下
1 2 3 4 5 6 7 8 9 10
| git remote rm origin git remote add origin git@github.com:[GithubUsername]/[SourceRepo].git git checkout -b master
git add . git commit -m "github action update" git push origin master
|
遇到的一些奇怪错误
上传完成之后打开仓库的action,发现已经开始跑action了,但是我这里部署失败了
检查了各个仓库的拼写,重新生成了token都没有解决这个问题
所以我把部署分开写,然后检查在哪个环节出的问题
发现是clone这句出了问题,问了一下Akilar,得到的答复是
于是我注释了这句,最后的文件为
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
| # 当有改动推送到master分支时,启动Action name: 自动部署
on: push: branches: - main #2020年10月后github新建仓库默认分支改为main,注意更改
release: types: - published
jobs: deploy: runs-on: ubuntu-latest steps: - name: 检查分支 uses: actions/checkout@v2 with: ref: main #2020年10月后github新建仓库默认分支改为main,注意更改
- name: 安装 Node uses: actions/setup-node@v1 with: node-version: "12.x"
- name: 安装 Hexo run: | export TZ='Asia/Shanghai' npm install hexo-cli -g - name: 缓存 Hexo uses: actions/cache@v1 id: cache with: path: node_modules key: ${{runner.OS}}-${{hashFiles('**/package-lock.json')}}
- name: 安装依赖 if: steps.cache.outputs.cache-hit != 'true' run: | npm install --save - name: 生成静态文件 run: | hexo clean hexo generate - name: 用户名 run: | git config --global user.name "forever97" - name: 邮箱 run: | git config --global user.email "857426255@qq.com" #- name: 克隆静态文件仓库 #run: | #git clone git@github.com:forever97/forever97.github.io.git .deploy_git # =====注意.deploy_git前面有个空格===== # clone 静态文件仓库,防止 Hexo 推送时覆盖整个静态文件仓库,只推送有更改的文件 - name: 部署 run: | hexo deploy
|