mirror of
https://github.com/handsomezhuzhu/handsomezhuzhu.github.io.git
synced 2026-02-20 11:50:14 +00:00
207 lines
5.3 KiB
YAML
207 lines
5.3 KiB
YAML
# name: Deploy Pages
|
||
|
||
# # 触发条件,push到main分支或者pull request到main分支
|
||
# on:
|
||
# push:
|
||
# branches: [main]
|
||
# pull_request:
|
||
# branches: [main]
|
||
|
||
# # 支持手动在工作流上触发
|
||
# workflow_dispatch:
|
||
|
||
# # 设置时区
|
||
# env:
|
||
# TZ: Asia/Shanghai
|
||
|
||
# # 权限设置
|
||
# permissions:
|
||
# # 允许读取仓库内容的权限。
|
||
# contents: read
|
||
# # 允许写入 GitHub Pages 的权限。
|
||
# pages: write
|
||
# # 允许写入 id-token 的权限。
|
||
# id-token: write
|
||
|
||
# # 并发控制配置
|
||
# concurrency:
|
||
# group: pages
|
||
# cancel-in-progress: false
|
||
|
||
# # 定义执行任务
|
||
# jobs:
|
||
# # 构建任务
|
||
# build:
|
||
|
||
# runs-on: ubuntu-latest
|
||
|
||
# # node v20 运行
|
||
# strategy:
|
||
# matrix:
|
||
# node-version: [20]
|
||
|
||
# steps:
|
||
# # 拉取代码
|
||
# - name: Checkout
|
||
# uses: actions/checkout@v4
|
||
# with:
|
||
# # 保留 Git 信息
|
||
# fetch-depth: 0
|
||
|
||
# # 设置使用 Node.js 版本
|
||
# - name: Use Node.js ${{ matrix.node-version }}
|
||
# uses: actions/setup-node@v4
|
||
# with:
|
||
# node-version: ${{ matrix.node-version }}
|
||
|
||
# # 使用 最新的 PNPM
|
||
# # 你也可以指定为具体的版本
|
||
# - uses: pnpm/action-setup@v4
|
||
# name: Install pnpm
|
||
# with:
|
||
# version: latest
|
||
# # version: 9
|
||
# run_install: false
|
||
|
||
# # 安装依赖
|
||
# - name: Install dependencies
|
||
# run: pnpm install --no-frozen-lockfile
|
||
# # 锁定依赖版本
|
||
# # run: pnpm install --frozen-lockfile
|
||
|
||
# # 构建项目
|
||
# - name: Build blog project
|
||
# run: |
|
||
# echo ${{ github.workspace }}
|
||
# pnpm build
|
||
|
||
# # 资源拷贝
|
||
# - name: Build with Jekyll
|
||
# uses: actions/jekyll-build-pages@v1
|
||
# with:
|
||
# source: ./docs/.vitepress/dist
|
||
# destination: ./_site
|
||
|
||
# # 上传 _site 的资源,用于后续部署
|
||
# - name: Upload artifact
|
||
# uses: actions/upload-pages-artifact@v3
|
||
|
||
# # 部署任务
|
||
# deploy:
|
||
# environment:
|
||
# name: github-pages
|
||
# url: ${{ steps.deployment.outputs.page_url }}
|
||
# runs-on: ubuntu-latest
|
||
# needs: build
|
||
# steps:
|
||
# - name: Deploy to GitHub Pages
|
||
# id: deployment
|
||
# uses: actions/deploy-pages@v4
|
||
name: Deploy to 1Panel & GitHub Pages
|
||
|
||
# ===========================
|
||
# 触发条件
|
||
# ===========================
|
||
on:
|
||
push:
|
||
branches: [main]
|
||
pull_request:
|
||
branches: [main]
|
||
workflow_dispatch:
|
||
|
||
# 设置时区
|
||
env:
|
||
TZ: Asia/Shanghai
|
||
|
||
# 权限设置
|
||
permissions:
|
||
contents: read
|
||
pages: write
|
||
id-token: write
|
||
|
||
concurrency:
|
||
group: pages
|
||
cancel-in-progress: false
|
||
|
||
jobs:
|
||
build:
|
||
runs-on: ubuntu-latest
|
||
strategy:
|
||
matrix:
|
||
node-version: [22]
|
||
|
||
steps:
|
||
# 1. 拉取代码
|
||
- name: Checkout
|
||
uses: actions/checkout@v4
|
||
with:
|
||
fetch-depth: 0
|
||
|
||
# 2. 设置 Node.js
|
||
- name: Use Node.js ${{ matrix.node-version }}
|
||
uses: actions/setup-node@v4
|
||
with:
|
||
node-version: ${{ matrix.node-version }}
|
||
|
||
# 3. 安装依赖 (npm)
|
||
- name: Install dependencies
|
||
run: npm install
|
||
|
||
# 4. 构建项目
|
||
- name: Build blog project
|
||
run: npm run build
|
||
|
||
# --------------------------------------------------
|
||
# 分支任务 A: 部署到 1Panel (路径已修改)
|
||
# --------------------------------------------------
|
||
- name: Deploy to 1Panel via SCP
|
||
uses: appleboy/scp-action@master
|
||
with:
|
||
host: ${{ secrets.HOST }}
|
||
username: ${{ secrets.USERNAME }}
|
||
password: ${{ secrets.PASSWORD }}
|
||
port: ${{ secrets.PORT }}
|
||
|
||
# 源文件 (保持不变)
|
||
source: "docs/.vitepress/dist/*"
|
||
|
||
# 【关键修改】目标路径改为 1Panel 指定的路径
|
||
# 注意:这里假设你在 1Panel 创建网站时,代号填的是 "blog"
|
||
target: "/opt/1panel/apps/openresty/openresty/www/sites/blog/index"
|
||
|
||
# 去掉路径前缀
|
||
strip_components: 3
|
||
|
||
- name: Fix 1Panel Permissions
|
||
uses: appleboy/ssh-action@master
|
||
with:
|
||
host: ${{ secrets.HOST }}
|
||
username: ${{ secrets.USERNAME }}
|
||
password: ${{ secrets.PASSWORD }}
|
||
port: ${{ secrets.PORT }}
|
||
script: |
|
||
# 【关键修改】修复新路径的权限
|
||
# 1Panel 容器通常使用 1000:1000 作为 www 用户
|
||
chown -R 1000:1000 /opt/1panel/apps/openresty/openresty/www/sites/blog/index
|
||
|
||
# --------------------------------------------------
|
||
# 准备分支任务 B: 为 GitHub Pages 上传构建产物
|
||
# --------------------------------------------------
|
||
- name: Upload artifact for GitHub Pages
|
||
uses: actions/upload-pages-artifact@v3
|
||
with:
|
||
path: docs/.vitepress/dist
|
||
|
||
# ==================================================
|
||
# 任务 2: 部署到 GitHub Pages
|
||
# ==================================================
|
||
deploy-gh-pages:
|
||
needs: build
|
||
environment:
|
||
name: github-pages
|
||
url: ${{ steps.deployment.outputs.page_url }}
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: Deploy to GitHub Pages
|
||
id: deployment
|
||
uses: actions/deploy-pages@v4 |