Appearance
使用Vuepress配合GitHub的Actions搭建自动化构建部署博客
准备内容
Vuepressv2 : https://v2.vuepress.vuejs.org/zh/
GitHub 仓库(私有、公有皆可):https://github.com/
GitHub Actions 自动构建配置文件(用来自动化部署网站):https://docs.github.com/cn/actions
GitHub Actions ssh-deploy
:https://github.com/easingthemes/ssh-deploy
腾讯云服务器(其他服务商皆可):https://cloud.tencent.com/
整体流程
- 使用 Vuepressv2 构建网站
- 把构建的网站内容推送到仓库
- 推送操作触发 Actions 自动化构建把编译后的网站静态文件通过
ssh
传输到指定服务器的网站目录 - 网站正常访问
搭建流程
创建目录 demo-docs
并进入该目录
sh
mkdir demo-docscd demo-docs```
初始化 `demo-docs` 目录
```sh
git initnpm init```
将 `Vuepressv2 ` 添加到本地依赖
```sh
npm install -D vuepress@next```
在 `package.json` 添加一下脚本代码
```json
{
"scripts": {
"docs:dev": "vuepress dev docs",
"docs:build": "vuepress build docs"
}
}
完整的 package.json
文件内容如下
json
{
"name": "mk-teach-docs",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"docs:dev": "vuepress dev docs",
"docs:build": "vuepress build docs"
},
"author": "",
"devDependencies": {
"vuepress": "^2.0.0-beta.30"
}
}
将默认的临时目录和缓存目录添加到 .gitignore
文件中
sh
echo 'node_modules' >> .gitignoreecho '.temp' >> .gitignoreecho '.cache' >> .gitignore```
创建第一篇文档
```sh
mkdir docsecho '# Hello VuePress' > docs/README.md```
在本地启动服务器来开发你的文档网站
```sh
npm run docs:dev```
VuePress 会在 [http://localhost:8080在新窗口打开](http://localhost:8080/) 启动一个热重载的开发服务器。当你修改你的 Markdown 文件时,浏览器中的内容也会自动更新。
![](https://images.mankvis.com/article/2023/06/28/20230628133213.png)
本地网站顺利现实成功,接下来把网站部署到服务器上,在根目录创建 `.github` 文件夹,接着在 `.github` 目录里面创建 `workflows` 文件夹
```sh
mkdir .githubcd .githubmkdir workflows```
创建 `Actions 的 配置文件`
```sh
touch deploy.yml```
` deploy.yml` 内容如下
```yaml
# 这是一个基本的工作流程,可帮助您开始使用 Actions
name: build
# 控制操作何时运行
on:
# 在推送或拉取请求事件上触发工作流,但仅针对主分支
push:
branches: [ main ]
# 允许您从“操作”选项卡手动运行此工作流
workflow_dispatch:
# 工作流运行由一个或多个可以顺序或并行运行的作业组成
jobs:
# 此工作流包含一个名为“构建和部署”的作业
build-and-deploy:
# 作业将在其上运行的系统类型
runs-on: ubuntu-latest
# 步骤表示将作为作业的一部分执行的一系列任务
steps:
# 在 $GITHUB_WORKSPACE 下签出您的存储库,以便您的工作可以访问它
- name: Checkout
uses: actions/checkout@v2
# 安装 node 环境
- name: Setup Node.js Environment
uses: actions/setup-node@master
# 构建项目
- name: Buld Project
run: |
npm install
npm run docs:build
# 发布内容到服务器,这里直接使用现成的轮子 easingthemes/ssh-deploy@@main- name: Deploy to Server
uses: easingthemes/ssh-deploy@main
env:
SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}
ARGS: "-rltgoDzvO --delete"
SOURCE: "docs/.vuepress/dist/"
REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
REMOTE_USER: ${{ secrets.REMOTE_USER }}
TARGET: ${{ secrets.REMOTE_TARGET }}
EXCLUDE: "/dist/, /node_modules/"
以上关于 secrets
变量的设置方式如下:
打开 GitHub 仓库
,选择 Settings
,点击按钮 New repository secret
分别添加各个参数,具体详细看文档https://github.com/easingthemes/ssh-deploy
把代码推送到 GitHub main
分支
sh
git add .git commit -m "init"git push origin main
打开 GitHub 仓库
页面,点击 Actions
可以看到已经在执行自动化构建部署了
自动构建部署成功,登录到服务器看到编译的 静态资源文件
已经被传输到指定文件夹,接下来即可访问网站。
踩坑
- SERVER_SSH_KEY 注意是
ssh私钥
,还要把公钥
放到authorized_keys
中 - 如果按照
1
操作无误还是提示无权限,就注意报错日志中是否有.user.ini
文件(宝塔用户注意),删除掉.user.ini
即可。删除命令如下
sh
chattr -i .user.inirm .user.ini