# 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