add:添加 phira-web-mointor 子模块 #93
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: "Deploy on Push" | |
| on: | |
| push: | |
| branches: | |
| - frontend-remake | |
| workflow_dispatch: | |
| jobs: | |
| build-and-deploy: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v2 | |
| with: | |
| version: 9 | |
| - name: Setup Node.js | |
| id: setup-node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20.x' | |
| cache: 'pnpm' | |
| check-latest: true | |
| # - name: Setup Java for TWA | |
| # uses: actions/setup-java@v3 | |
| # with: | |
| # distribution: 'temurin' | |
| # java-version: '17' | |
| # - name: Install bubblewrap CLI | |
| # run: npm install -g @bubblewrap/cli | |
| - name: Setup Rust for HSNPM | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: stable | |
| targets: x86_64-unknown-linux-gnu | |
| - name: Verify installation | |
| run: | | |
| node --version | |
| npm --version | |
| pnpm --version | |
| java --version | |
| bubblewrap --version || echo "bubblewrap 未安装" | |
| - name: Get pnpm store directory | |
| run: echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_ENV | |
| - name: Setup pnpm cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: ${{ env.STORE_PATH }} | |
| key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pnpm-store- | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Configure WebPush VAPID keys | |
| env: | |
| VAPID_PUBLIC_KEY: ${{ secrets.VAPID_PUBLIC_KEY }} | |
| VAPID_PRIVATE_KEY: ${{ secrets.VAPID_PRIVATE_KEY }} | |
| run: | | |
| echo "🔑 配置 WebPush VAPID 密钥..." | |
| echo "使用 GitHub Secrets 中的 VAPID 密钥(如果已配置)" | |
| chmod +x ./scripts/setup-webpush.sh | |
| ./scripts/setup-webpush.sh | |
| echo "✅ WebPush 配置完成" | |
| - name: Build SSG version with SEO files | |
| run: pnpm run build:ssg | |
| - name: Build HSNPM notification service | |
| run: | | |
| echo "🔨 构建 HSNPM 通知服务..." | |
| cd HSNPM | |
| cargo build --release | |
| echo "✅ HSNPM 构建完成" | |
| ls -la target/release/ | |
| - name: Verify build output | |
| run: | | |
| echo "构建输出目录内容:" | |
| ls -la dist/ | |
| echo "" | |
| echo "检查SEO文件:" | |
| [ -f dist/sitemap.xml ] && echo "✅ sitemap.xml 存在" || echo "❌ sitemap.xml 不存在" | |
| [ -f dist/robots.txt ] && echo "✅ robots.txt 存在" || echo "❌ robots.txt 不存在" | |
| # - name: Build TWA Android APK (Auto Version) | |
| # env: | |
| # TWA_KEYSTORE_BASE64: ${{ secrets.TWA_KEYSTORE_BASE64 }} | |
| # TWA_KEYSTORE_PASSWORD: ${{ secrets.TWA_KEYSTORE_PASSWORD }} | |
| # TWA_KEY_ALIAS: ${{ secrets.TWA_KEY_ALIAS }} | |
| # TWA_KEY_PASSWORD: ${{ secrets.TWA_KEY_PASSWORD }} | |
| # TWA_SHA256_FINGERPRINT: ${{ secrets.TWA_SHA256_FINGERPRINT }} | |
| # # Bubblewrap 非交互式构建环境变量 | |
| # BUBBLEWRAP_KEYSTORE_PASSWORD: ${{ secrets.TWA_KEYSTORE_PASSWORD }} | |
| # BUBBLEWRAP_KEY_PASSWORD: ${{ secrets.TWA_KEY_PASSWORD }} | |
| # run: | | |
| # echo "🚀 开始自动化构建 TWA Android APK..." | |
| # # 检查是否安装了 Java 和 bubblewrap | |
| # if command -v java &> /dev/null && npm list -g @bubblewrap/cli &> /dev/null; then | |
| # echo "环境就绪,开始构建 TWA APK..." | |
| # echo "🔑 使用环境变量: BUBBLEWRAP_KEYSTORE_PASSWORD 和 BUBBLEWRAP_KEY_PASSWORD" | |
| # chmod +x ./scripts/build-twa-auto.sh | |
| # ./scripts/build-twa-auto.sh | |
| # | |
| # # 检查构建结果 | |
| # if [ -d "dist/apps" ] && [ "$(ls -A dist/apps 2>/dev/null)" ]; then | |
| # echo "✅ TWA APK 构建成功" | |
| # ls -la dist/apps/ | |
| # else | |
| # echo "⚠️ TWA 构建可能未生成 APK 文件" | |
| # fi | |
| # else | |
| # echo "跳过 TWA 构建:缺少 Java 或 bubblewrap" | |
| # echo "要启用 TWA 构建,请在工作流中安装:" | |
| # echo " - Java 11+" | |
| # echo " - npm install -g @bubblewrap/cli" | |
| # fi | |
| # - name: Update Download Configuration | |
| # env: | |
| # GITHUB_RUN_NUMBER: ${{ github.run_number }} | |
| # run: | | |
| # echo "🔄 更新下载配置文件..." | |
| # chmod +x ./scripts/update-download-config.js | |
| # node ./scripts/update-download-config.js | |
| # | |
| # # 验证配置文件已更新 | |
| # echo "📋 验证配置文件:" | |
| # cat ./public/config/download.config.json | grep -A 5 "hsnphira-android" | |
| # | |
| # # 检查版本文件 | |
| # if [ -f "./public/config/twa-version.json" ]; then | |
| # echo "✅ TWA 版本文件已生成" | |
| # cat ./public/config/twa-version.json | |
| # fi | |
| # | |
| # # 将更新后的配置文件复制到构建目录 | |
| # echo "📂 复制配置文件到构建目录..." | |
| # if [ -d "dist/config" ]; then | |
| # cp -r ./public/config/*.json dist/config/ | |
| # echo "✅ 配置文件已复制到 dist/config/" | |
| # else | |
| # echo "⚠️ dist/config 目录不存在,跳过复制" | |
| # fi | |
| # | |
| # # 复制数字资产链接文件 | |
| # if [ -f "./public/.well-known/assetlinks.json" ]; then | |
| # mkdir -p dist/.well-known | |
| # cp ./public/.well-known/assetlinks.json dist/.well-known/ | |
| # echo "✅ 数字资产链接文件已复制" | |
| # fi | |
| # 安装 sshpass(用于密码认证) | |
| - name: Install sshpass | |
| run: sudo apt-get update && sudo apt-get install -y sshpass | |
| - name: Add server to known hosts | |
| run: | | |
| mkdir -p ~/.ssh | |
| ssh-keyscan -H ${{ secrets.SERVER_HOST }} >> ~/.ssh/known_hosts | |
| - name: Deploy to server | |
| env: | |
| SSH_PASSWORD: ${{ secrets.SSH_PRIVATE_KEY }} | |
| run: | | |
| echo "开始部署到服务器..." | |
| chmod +x ./scripts/deploy-to-server.sh | |
| ./scripts/deploy-to-server.sh \ | |
| "${{ secrets.DEPLOY_USER }}" \ | |
| "${{ secrets.SERVER_HOST }}" \ | |
| "$SSH_PASSWORD" \ | |
| "/www/wwwroot/phira.htadiy.cc" | |
| - name: Verify deployment | |
| env: | |
| SSH_PASSWORD: ${{ secrets.SSH_PRIVATE_KEY }} | |
| run: | | |
| echo "验证部署..." | |
| chmod +x ./scripts/verify-deployment.sh | |
| ./scripts/verify-deployment.sh \ | |
| "${{ secrets.DEPLOY_USER }}" \ | |
| "${{ secrets.SERVER_HOST }}" \ | |
| "$SSH_PASSWORD" \ | |
| "/www/wwwroot/phira.htadiy.cc" |