Files
blog/source/_posts/2025.08/use-github-to-deploy-on-server.md
2025-10-04 18:42:40 +08:00

139 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 使用GitHub推送Hexo到服务器
categories: 建站手札
cover: https://pic.biss.click/i/2025/10/04/ucjlpf.png
series: webcustom
tags: 网站
abbrlink: ce1ec3fe
summary: >-
使用GitHub Actions自动部署Hexo到服务器的步骤如下 1. **在本地安装git**确保你的计算机上已经安装了Git。 2.
**配置git用户信息**在终端或Git Bash中配置你的用户名和邮箱 ```bash git config --global user.name
"yourname" git config --global user.email "youremail@example.com" ``` 使用 `git
config --list` 命令查看当前所有的配置。 3.
**在GitHub上创建账号**如果你还没有GitHub账号需要先在GitHub上注册一个。 4. **创建SSH Key**在本地生成SSH
Key并将公钥添加到GitHub账号中 ```bash ssh-keygen -t rsa -C "youremail@example.com" ```
按照提示操作,最后会在 `~/.ssh` 目录下生成 `id_rsa`
date: 2025-08-18 17:10:18
---
1panel没有宝塔的webhook功能之前一直使用在服务器上建立裸仓库直接推送到服务器的方法。现在找到一种新的方法。
# 建立GitHub仓库
因为服务器部署在香港可以直连GitHub国内可以使用gitee或者GitHub镜像加速。
1. 在本地安装git
2. 打开git bash配置用户名和邮箱
```bash
git config --global user.name "yourname"
git config --global user.email "youremail"
```
可以使用 git config --list查看当前所有的配置
3. 在github上创建自己的账号在自己的电脑和服务器上
4. 创建SSH Key
a:打开Git Bash输入pwd查看当前路径
b.输入`ssh-keygen -t rsa C “youremail@example.com”`
(输入完毕后程序同时要求输入一个密语字符串(passphrase)空表示没有密语。接着会让输入2次口令(password)空表示没有口令。3次回车即可完成当前步骤)
<center>
<img src="https://pic.biss.click/i/2025/08/18/924058.webp" alt="924058.webp">
</center>
5. 在GitHub上传自己的公钥
<center><img src="https://pic.biss.click/i/2025/08/18/946620.webp" alt="946620.webp"></center>
6. 新建一个私有仓库
# 上传文件到仓库
在自己hexo根目录下使用`powershell`,输入`git init`然后git push到之前自己新建的仓库。
# 创建Action
## 创建Action
```yml
name: 自动部署
on:
push:
branches:
- main
release:
types:
- published
workflow_dispatch:
env:
TZ: Asia/Shanghai
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: 检查分支
uses: actions/checkout@v3
with:
ref: main
- name: 缓存项目 npm 包
id: cache-node-modules
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-nodeModules-${{ hashFiles('package-lock.json') }}-${{ hashFiles('package.json') }}
restore-keys: |
${{ runner.os }}-nodeModules-
- name: 安装 Node
uses: actions/setup-node@v3
with:
node-version: "20.x"
- name: 安装 Hexo
run: |
npm install hexo-cli --global
- name: 安装依赖
if: steps.cache-node-modules.outputs.cache-hit != 'true'
run: |
npm install
- name: 清理文件树
run: |
npm run clean
- name: 生成静态文件并压缩
run: |
npm run build
- name: 部署
run: |
cd ./public
git init
git config user.name "${{ github.actor }}"
git config user.email "${{ github.actor }}@users.noreply.github.com"
git add .
git commit -m "${{ github.event.head_commit.message }}··[$(date +"%Z %Y-%m-%d %A %H:%M:%S")]"
git push --force --quiet "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git" master:page
- name: 服务器执行拉取命令
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.SERVER_IP }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
passphrase: ${{ secrets.PASSPHRASE }}
port: ${{ secrets.PORT }}
script: |
cd /opt/1panel/apps/openresty/openresty/www/sites/blog.liushen.fun/index/
git config --global --add safe.directory "$(pwd)"
git fetch --all --depth=1
git reset --hard origin/main
git pull --depth=1
echo "✅ 已拉取 page 分支最新内容"
```
## 环境变量
此次添加变量较多,有:`SERVER_IP``USERNAME``PASSPHRASE``KEY``PORT`五个变量,如下:
`SERVER_IP`服务器IP
`USERNAME`SSH链接用户名一般为root
`PASSPHRASE`:密钥密码,用来提升强度用
`KEY`:密钥(私钥)
`PORT`SSH登录端口一般为22
# 测试
运行一下这个Action无报错即可。