Files
blog/source/_posts/2025/2025.08/use-github-to-deploy-on-server.md
2026-02-07 19:17:19 +08:00

134 lines
4.9 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/image/e0a08509-dea4-4af7-bafa-c81ca9d1cf8d.webp
series: webcustom
tags: 网站
abbrlink: ce1ec3fe
summary: >-
这篇文章介绍了如何使用GitHub推送Hexo到服务器包括建立GitHub仓库、上传文件、创建Action以及配置环境变量等步骤。首先文章提供了在香港直连GitHub的方法并指导如何在本地安装git、配置用户名和邮箱、创建SSH
Key并在GitHub上上传公钥。接着文章详细说明了如何在自己的hexo根目录下初始化git仓库并使用PowerShell将文件推送到新建的私有仓库。此外文章还创建了一个Action用于自动化部署过程包括检查分支、缓存项目、安装Node和Hexo、安装依赖、清理文件树、生成静态文件并压缩、部署到服务器等环节。最后文章列出了需要配置的环境变量如服务器IP、用户名、密钥密码、私钥和SSH登录端口并强调了测试的重要性以确保整个部署流程无报错。
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无报错即可。