Skip to content

N/A

N/A #400

Workflow file for this run

# Sample workflow for building and deploying an Astro site to GitHub Pages
#
# To get started with Astro see: https://docs.astro.build/en/getting-started/
#
name: Deploy Astro site to Pages
on:
# Runs on pushes targeting the default branch
push:
branches: ["master"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
env:
BUILD_PATH: "." # default value when not using subfolders
PRODUCTION_SITE_URL: "https://1panel.cn"
# BUILD_PATH: subfolder
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Detect package manager
id: detect-package-manager
run: |
if [ -f "${{ github.workspace }}/yarn.lock" ]; then
echo "manager=yarn" >> $GITHUB_OUTPUT
echo "command=install" >> $GITHUB_OUTPUT
echo "runner=yarn" >> $GITHUB_OUTPUT
echo "lockfile=yarn.lock" >> $GITHUB_OUTPUT
exit 0
elif [ -f "${{ github.workspace }}/pnpm-lock.yaml" ] || [ -f "${{ github.workspace }}/package.json" ]; then
echo "manager=pnpm" >> $GITHUB_OUTPUT
echo "command=install --frozen-lockfile" >> $GITHUB_OUTPUT
echo "runner=pnpm exec" >> $GITHUB_OUTPUT
echo "lockfile=pnpm-lock.yaml" >> $GITHUB_OUTPUT
exit 0
else
echo "Unable to determine package manager"
exit 1
fi
- name: Setup pnpm
if: steps.detect-package-manager.outputs.manager == 'pnpm'
uses: pnpm/action-setup@v6
with:
version: 11.10.0
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version: "24"
cache: ${{ steps.detect-package-manager.outputs.manager }}
cache-dependency-path: ${{ env.BUILD_PATH }}/${{ steps.detect-package-manager.outputs.lockfile }}
- name: Setup Pages
id: pages
uses: actions/configure-pages@v6
- name: Install dependencies
run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }}
working-directory: ${{ env.BUILD_PATH }}
- name: Build with Astro
run: |
${{ steps.detect-package-manager.outputs.runner }} astro build \
--site "${{ steps.pages.outputs.origin }}" \
--base "${{ steps.pages.outputs.base_path }}"
working-directory: ${{ env.BUILD_PATH }}
- name: Upload artifact
uses: actions/upload-pages-artifact@v5
with:
path: ${{ env.BUILD_PATH }}/dist
- name: Build production artifact for 1panel.cn
run: |
rm -rf dist
${{ steps.detect-package-manager.outputs.runner }} astro build \
--site "${{ env.PRODUCTION_SITE_URL }}" \
--base "./"
working-directory: ${{ env.BUILD_PATH }}
- name: Upload production artifact
uses: actions/upload-artifact@v7
with:
name: production-site-dist
path: ${{ env.BUILD_PATH }}/dist
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
needs: build
runs-on: ubuntu-latest
name: Deploy
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v5
sync-website-2026:
name: Sync to website-2026 1panel Directory
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout website-2026 repository
uses: actions/checkout@v6
with:
repository: fit2cloud-dev/website-2026
path: website-2026
ref: main
token: ${{ secrets.PERSONAL_GITHUB_TOKEN }}
persist-credentials: false
- name: Download build artifact
uses: actions/download-artifact@v8
with:
name: production-site-dist
path: dist
- name: Copy build output to website-2026/1panel
run: |
rm -rf website-2026/1panel
mkdir -p website-2026/1panel
cp -r dist/. website-2026/1panel/
- name: Configure Git
run: |
cd website-2026
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
- name: Create Pull Request to website-2026
uses: peter-evans/create-pull-request@v6
with:
token: ${{ secrets.PERSONAL_GITHUB_TOKEN }}
path: website-2026
commit-message: "chore: 更新 1panel 目录为最新构建内容"
branch: update-1panel-from-prod
title: "chore: 自动同步 1panel 目录内容"
body: |
通过自动化流程同步 1panel 目录内容至最新
来源: https://github.com/${{ github.repository }}
base: main