分享一个简化静态网站部署的 CLI

前言

目前 1Panel 的静态网站仅支持手动上传资源,如果你的静态网站需要经常更新(比如使用各种静态网站/文档生成器),那么可能会比较麻烦。所以我开发了这个 CLI,主要用于配合 CD(如 GitHub Actions)使用,可以实现推送代码之后自动更新到 1Panel。

GitHub 地址:https://github.com/ruibaby/1Panel-rocket-cli


以下是详细的介绍文档:

1Panel Rocket CLI

一个用于将静态网站部署到 1Panel 面板的命令行工具。

功能特点

  • 将静态网站部署到 1Panel 服务器
  • 如果网站不存在,自动创建
  • 带有重试机制的文件上传
  • 用于选择现有网站的交互模式
  • 易于与 CI/CD 工作流集成

安装

# 使用 npm 全局安装
npm install -g 1panel-rocket-cli

# 或者使用 yarn
yarn global add 1panel-rocket-cli

# 或直接使用 npx
npx 1panel-rocket-cli -p ./dist -d example.com

基本用法

# 部署静态网站
1panel-rocket -p ./dist -d example.com

# 或使用简写命令
1p -p ./dist -d example.com

命令行选项

选项 简写 描述 环境变量
–baseUrl -e 1Panel API 的基础 URL ONEPANEL_BASE_URL
–apiKey -a 1Panel API 的 API 密钥 ONEPANEL_API_KEY
–path -p 静态网站构建目录的路径 -
–domain -d 网站的域名 -
–yes -y 跳过所有提示并使用默认值 -

使用示例

# 使用环境变量
export ONEPANEL_BASE_URL="http://your.1panel.com"
export ONEPANEL_API_KEY="your_api_key"
1panel-rocket -p ./dist -d example.com

# 使用命令行参数
1panel-rocket -e "http://your.1panel.com" -a "your_api_key" -p ./dist -d example.com

# 交互式模式(不指定域名)
1panel-rocket -e "http://your.1panel.com" -a "your_api_key" -p ./dist
# 系统将提示您从 1Panel 服务器中选择一个网站

配置选项

忽略文件

默认情况下,以下文件和目录将被忽略,不会上传:

  • node_modules/
  • .git/
  • .vscode/
  • .env
  • .env.local

GitHub Actions 集成

您可以轻松地将 1Panel Rocket CLI 与 GitHub Actions 集成,以自动部署您的静态网站。

工作流示例

在您的代码仓库中创建 .github/workflows/deploy.yml 文件:

name: Build and Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      
      - name: Setup pnpm
        uses: pnpm/action-setup@v3
        with:
          version: 10
      
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'pnpm'
      
      - name: Install dependencies
        run: pnpm install
      
      - name: Build
        run: pnpm build
      
      - name: Deploy to 1Panel
        env:
          ONEPANEL_BASE_URL: ${{ secrets.ONEPANEL_BASE_URL }}
          ONEPANEL_API_KEY: ${{ secrets.ONEPANEL_API_KEY }}
        run: |
          npx 1panel-rocket-cli -p ./dist -d example.com

配置密钥

确保在您的 GitHub 仓库中添加这些密钥:

  1. 进入您的仓库 → Settings → Secrets and variables → Actions
  2. 添加以下密钥:
    • ONEPANEL_BASE_URL:您的 1Panel 服务器的 URL
    • ONEPANEL_API_KEY:您的 1Panel API 密钥

开发

设置环境

# 克隆仓库
git clone https://github.com/ruibaby/1panel-rocket-cli.git
cd 1panel-rocket-cli

# 安装依赖
npm install

本地开发

# 链接包到本地
npm link

# 在开发模式下运行
1panel-rocket -p ./dist -d example.com

许可证

MIT

1 个赞