GitHub Action自动部署博客
更新
因为Gitee Pages停止服务,所以本文删掉了Gitee Pages的部署步骤
参考
- *使用Github Action实现全自动部署 | Akilarの糖果屋
- *使用 Github Action 自动部署 | 安知鱼 (anheyu.com)
- yanglbme/gitee-pages-action: 🤖 无须人为干预,由 GitHub Action 自动部署 Gitee Pages
- Yikun/hub-mirror-action: 一个Github Action,用于在Github和Gitee之间同步代码
- GitHub部署vuepress报错The deploy step encountered an..The process /usr/bin/git failed with exit code 128
- JamesIves/github-pages-deploy-action: 🚀
- GitHub Actions 如何使用缓存 - Sea's Blog
- actions/cache: Cache dependencies and build outputs in GitHub Actions
在此之前,默认你可以正常上传和下载仓库的文件
部署前准备
TOKEN_GITHUB
:GitHub的token
(私人令牌的密钥只会显示一次,如果忘了,那只能重新创建了)打开GitHub Token的方法:点击
自己的Github头像 --> Settings --> Developer settings --> Personal access tokens --> Tokens(classic) --> Generate new token --> Generate new token(classic)
Note
那里是自己Token的名字,名字可以随便取Expiration
是自己令牌的有效期,选择No expiration
永不过期下面的
Select scopes
那里选择repo
以及其子项,然后在选择workflow
一切完成之后点击最下面的
Generate token
即可生成自己的 GitHub Token,记住GitHub Token只会显示一次,请务必要记住,否则自能重新生成GIT_NAME
:自己Git名称 ,在设置SSH密钥时使用的Git名称GIT_EMAIL
:自己的Git邮箱,在设置SSH密钥时使用的Git邮箱
❗❗❗
以上的这些信息要部署到自己的GitHub Action仓库中,所以建议将这些信息存放在
txt文本
中,方便整理添加❗❗❗
创建两个GitHub仓库
Action仓库:用来执行
GitHub Action
(推荐私有,这样安全一点)Pages仓库:用来存放部署好的静态文件(设置公开,否则无法使用GitHub Pages)
GitHub Action权限设置:打开刚刚创建的仓库,打开
Settings --> Actions --> General
,找到Workflow permissions
选项,选择Read and write permissions
,以及Allow GitHub Actions to create and approve pull requests
,然后在点击下面的Save
按钮设置秘密文件:将上面准备的
TOKEN_GITHUB
,TOKEN_GITEE
,GIT_NAME
,GIT_EMAIL
,GITEE_PASSWORD
添加到GitHub Action仓库中添加方法在
Settings --> Secrets and variables --> Actions
中,找到Repository secrets
选项,点击New repository secret
添加名字就为上面对应的五个名字
TOKEN_GITHUB
,TOKEN_GITEE
,GIT_NAME
,GIT_EMAIL
,GITEE_PASSWORD
编写GitHub Action脚本
创建文件夹
.github
,然后在.github
里面创建文件夹workflows
,在workflows
中创建文件xxx.yml
,yml
文件的名字可以随便取,然后编写yml
文件注意
yml
语句要对齐
name: Deploy GitHub Pages
# 触发条件:在 push 到 master 分支后
on:
push:
branches: [main, master]
workflow_dispatch:
# 任务
jobs:
build:
# 服务器环境:最新版 Ubuntu
runs-on: ubuntu-latest
steps:
# 生成hexo文件
- name: 检查分支
uses: actions/checkout@v2
with:
ref: main
- name: 安装 Node
uses: actions/setup-node@v1
with:
node-version: "16.x"
- name: 安装 Hexo
run: |
export TZ='Asia/Shanghai'
npm install hexo-cli -g
# 因为部署hexo博客需要下载hexo框架
# 这一步骤就是缓存下载好的hexo框架,下次在部署博客就不需要在重新下载hexo框架了
- 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: |
#如果你设置的有glup,则启用下面这行代码
#npm install gulp-cli -g
npm install --save
- name: 生成静态文件
run: |
hexo clean
hexo generate
#如果你设置的有glup,则启用下面这行代码
#gulp
# 也可以使用别人写好的更新插件,比如JamesIves/github-pages-deploy-action@v4
# 但是该插件有时候会出现上传不成功的问题
# 所以通过git更新要稳定一点
- name: 部署到GitHub
run: |
cd public
git init
git config --global user.name '${{ secrets.GIT_NAME }}'
git config --global user.email '${{ secrets.GIT_EMAIL }}'
git add .
git commit -m "${{ github.event.head_commit.message }} Updated By Github Actions"
git remote add origin https://github用户名:${{ secrets.TOKEN_GITHUB }}@github.com/github用户名/Pages仓库名.git
git branch -m main
git push -f origin main
❗❗❗
如果你不知道
gulp
插件的用法,建议去看看这篇博客使用gulp压缩博客静态资源 | Akilarの糖果屋如果你觉得麻烦,可以不下载
gulp
插件,删掉关于gulp
的语句即可如果你的根目录中没有
gulp
的执行文件(也就是gulpfile.js
),那么GitHub Action运行gulp
时则会报错,这点须知(我已经把关于gulp的代码注释掉了,自己按需启用)❗❗❗
注意 ❗❗❗
GitHub Pages
如果之前没有部署过,则需要自己手动部署一次,记得要在设置里面启动GitHub Pages
部署GitHub Action
❗❗❗将博客根目录下的 .git
文件夹和 themes/自己的主题文件夹
下的 .git
文件夹删掉❗❗❗
将自己的 .github
文件夹放在自己博客的根目录下,在使用git
将所有文件及文件夹上传到仓库1中,GitHub检测到 .github
会自动执行里面的脚本
Git
上传代码:
git init
git add *
git commit -m "github action"
# GitHub地址改为上面创建的仓库1地址
git remote add origin git@github.com:xxx.git
git branch -M main
git push -f origin main
打开仓库1,点击 Actions
查看 GitHub Action
的运行情况
GitHub Action
运行完成之后会显示一个绿色的 ✅ ,则表示运行成功
如果是红色的❌,则表示部署失败,则点击进去查看报错情况,然后根据报错情况自己百度,我上面推荐的那些博客说的也比较细致,推荐去看看,主要是第一篇和第二篇,或许能解决你的问题