跳至主要內容

Vuepress自动化部署

Tom Tan大约 4 分钟使用指南页面配置使用指南

(adsbygoogle = window.adsbygoogle || []).push({});

Vuepress自动化部署

前言

现状是每次撰写完文章之后, 本地构建, 然后把 docs/.vuepress/dist所有文件 复制到另外一个仓库里, 再push到github page上面, 一天一两次倒没有什么问题, 但每天都重复这样的操作就比较繁琐, 所以开始捣腾自动化部署.

项目的情况是这样的。

  • Github源码仓库 主要存放vuepress博客的源码。
  • Github Page仓库 主要存放vuepress构建出来的静态文件(html/js/css/img之类的), 这个仓库与域名绑定在一起的。

每次git push 代码 Github源码仓库 自动 触发 Github Action 构建完成之后 推送到 Github Page仓库.

大概流程如下:
自动化部署;

创建yml文件

在项目的 .github/workflows/ 路径下新建一个 vuepress-deploy.yml, 如果已存在其他名称的yml,就不需要新建了.

具体的代码如下:

name: Build and Deploy

on:
  push:
    branches:
      - main # 确保这是你正在使用的分支名称

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    permissions:
      contents: write  # 写的权限
    steps:
    - name: Checkout
      uses: actions/checkout@main

    - name: 设置 Node.js
      uses: actions/setup-node@v3
      with:
        node-version: 18 # node.js的版本号

    - name: vuepress-deploy
      uses: jenkey2011/vuepress-deploy@master
      env:
        ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} # Github Page仓库的访问token
        TARGET_REPO: 用户/仓库名
        TARGET_BRANCH: 分支名
        BUILD_SCRIPT: npm install && npm run docs:build # 这里安装依赖和构建
        BUILD_DIR: docs/.vuepress/dist   # 这个是构建的出来的具体路径
        COMMIT_MESSAGE:  Auto deploy by the Vuepress-deploy # 这个commit的说明, 这个看自己个人的喜好。

创建ACCESS_TOKEN

上面的内容所提到的ACCESS_TOKEN,因为要通过github action的命令去更改 Github Page仓库的内容, 需要用到token。

创建token

这个是你的帐号所有仓库的访问token, 具体操作步频是 点击 你的头像 -> Settings -> Developer settings -> Personal access tokens -> Generate new token (Classic), 具体看下面步骤.

步骤1 点击头像
步骤1;

步骤2 点击人个信息的Settings
步骤2

步骤3 点左边最下面的 Developer settings
步骤3

步骤4 点击 token(classic)
步骤4

步骤5 点击 Generate new token, 然后点击Generate new token(classic)
步骤5

步骤6 钩选 workflow 和 write:packages, 最后点击 Generate token
步骤6

生成token后, 复制保存好, 一会用到。

创建仓库secrets

在需要设置的仓库下,点击 Settings -> Secrets and variables -> Actions -> New repository secret, 具体看下面步骤

步骤1 点击仓库的Settings
步骤1

步骤2 点击Secrets and variables的Actions
步骤2

步骤3 点击New repository secret
步骤3

步骤4 name输入框填写与vuepress-deploy.yml的变量名保持一致,也就是ACCESS_TOKEN。 Secret入输框填写刚才生成的token, 最后点击Add secret。
步骤4

最终效果

Github action 列表
GithubAction

下面这个是失败的例子, 具体是什么异常的信息, 需要点进去查看.
GithubAction

部署异常

收集一些Github actions部署出现的异常信息和解决方案, 持续更新...

Token没填写或者没传递

Github action出现以下这种异常, 有两种可能性 1.是token字段没填对. 2.token为空.

remote: Permission to username/xxx.git denied to username.
fatal: unable to access '***github.com/username/xxx.git/': The requested URL returned error: 403

Token错误

Github action出现以下这种异常, 可能是token填错了, 一般是ghp_开头的.

remote: Invalid username or password.
fatal: Authentication failed for '***github.com/username/xxx.git/'

发布成功后网站404

好不容易把Github action调成功之后, 发现网站变成404了, 找不到网址, 什么情况? 查看Github Page仓库是有文件的, 也是最新的。但细心一看少了一个CNAME文件, 这个文件里边内容是网站的网址, 比如: book.itomtan.comopen in new window

GithubAction

解决方案一
就是在vuepress-deploy.yml最后一行加上 CNAME: 你的域名, 重新提交即可。

    - name: vuepress-deploy
      uses: jenkey2011/vuepress-deploy@master
      env:
        .....
        .....
        CNAME: 你的域名

解决方案二
在这个 docs/.vuepress/public 路径下, 新建一个 CNAME 文件, 内容是你的网站域名,我的是 book.itomtan.comopen in new window, 建完之后, 重新提交即可。

(adsbygoogle = window.adsbygoogle || []).push({});
上次编辑于:
贡献者: Tom Tan