Files

207 lines
5.3 KiB
YAML
Raw Permalink 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.

# 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