BPB Panel在Cloudflare page上部署并实时更新!
BPB-Worke-Panel最新版更新工作流
新文件目录进行大的更改!现重新做了githhub action.(工作流来自互联网,本人只进行了简单修改,文章下有出处)
准备工作
Github帐号;cloudflare账号;域名(收费或免费域名)
Github部署
1. 新建github仓库:把BPB panel项目代码同步到仓库。
2. 配置github Actions: 在仓库目录下创建.github/workflows文件夹,并创建up.yml文件。2025.4.25更新可使用!
可随官方自动更新的工作流,可在CF上部署:
name: Auto Update Worker
on:
push:
branches:
- main
schedule:
- cron: "0 1 * * *" # 每天凌晨1点运行
workflow_dispatch:
inputs:
force_update:
description: '是否强制更新(忽略版本检查)'
required: false
default: 'false'
permissions:
contents: write
jobs:
update:
runs-on: ubuntu-latest
env: # 定义在这里更清晰
REPO_OWNER: "bia-pain-bache"
REPO_NAME: "BPB-Worker-Panel"
TARGET_FILE: "worker.zip"
outputs: # 定义作业输出,如果其他作业需要知道版本
new_version: ${{ steps.check_update_step.outputs.new_version }}
updated: ${{ steps.check_update_step.outputs.updated }}
steps:
- name: 检出仓库
uses: actions/checkout@v4
- name: 检查并更新 Worker
id: check_update_step # 给步骤设置 ID
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -eo pipefail # 增加脚本健壮性
# 日志函数
log() { echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1"; }
log "开始检查更新..."
echo "updated=false" >> $GITHUB_OUTPUT # 默认未更新
echo "new_version=" >> $GITHUB_OUTPUT # 默认无新版本
# 获取本地版本
LOCAL_VERSION=$(cat version.txt 2>/dev/null || echo "0.0.0") # 提供一个默认值以便比较
log "本地版本: ${LOCAL_VERSION}"
# 获取最新 Release (使用 /latest 端点)
LATEST_RELEASE_URL="https://api.github.com/repos/${{ env.REPO_OWNER }}/${{ env.REPO_NAME }}/releases/latest"
log "获取最新 Release 信息 از: $LATEST_RELEASE_URL"
RESPONSE=$(curl -s --retry 3 -L \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"$LATEST_RELEASE_URL")
if [ $? -ne 0 ]; then
log "ERROR: 无法访问 GitHub API ($LATEST_RELEASE_URL)"
exit 1
fi
# 检查响应是否包含错误信息
if echo "$RESPONSE" | jq -e '.message' > /dev/null; then
log "ERROR: GitHub API 返回错误: $(echo "$RESPONSE" | jq -r '.message')"
if echo "$RESPONSE" | jq -e '.documentation_url' > /dev/null; then
log "Docs: $(echo "$RESPONSE" | jq -r '.documentation_url')"
fi
exit 1
fi
REMOTE_VERSION=$(echo "$RESPONSE" | jq -r '.tag_name')
DOWNLOAD_URL=$(echo "$RESPONSE" | jq -r '.assets[] | select(.name == "'"$TARGET_FILE"'") | .browser_download_url')
if [ -z "$REMOTE_VERSION" ] || [ "$REMOTE_VERSION" == "null" ]; then
log "ERROR: 无法从 API 响应中获取 tag_name"
log "API Response: $RESPONSE"
exit 1
fi
log "最新版本: $REMOTE_VERSION"
if [ -z "$DOWNLOAD_URL" ] || [ "$DOWNLOAD_URL" == "null" ]; then
log "ERROR: 未在最新 Release ($REMOTE_VERSION) 中找到目标文件 '$TARGET_FILE'"
log "API Response: $RESPONSE"
exit 1
fi
# 判断是否需要更新
FORCE_UPDATE="${{ github.event.inputs.force_update || 'false' }}"
log "强制更新: $FORCE_UPDATE"
if [ "$LOCAL_VERSION" = "$REMOTE_VERSION" ] && [ "$FORCE_UPDATE" != "true" ]; then
log "已是最新版本 ($LOCAL_VERSION),无需更新"
echo "new_version=$LOCAL_VERSION" >> $GITHUB_OUTPUT # 仍然输出当前版本
exit 0
fi
log "检测到新版本或强制更新。本地: $LOCAL_VERSION, 最新: $REMOTE_VERSION"
log "下载 $TARGET_FILE 从 $DOWNLOAD_URL ..."
wget --quiet -O "$TARGET_FILE" "$DOWNLOAD_URL"
log "解压 $TARGET_FILE..."
unzip -o "$TARGET_FILE" # -o 覆盖已存在文件,不询问
log "清理下载的压缩包 $TARGET_FILE..."
rm "$TARGET_FILE"
log "更新本地 version.txt 文件为 $REMOTE_VERSION..."
echo "$REMOTE_VERSION" > version.txt
log "更新完成,新版本: $REMOTE_VERSION"
echo "updated=true" >> $GITHUB_OUTPUT
echo "new_version=$REMOTE_VERSION" >> $GITHUB_OUTPUT
- name: 提交更改
if: steps.check_update_step.outputs.updated == 'true' # 仅在实际更新时提交
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "🔄 自动同步 Worker 版本: ${{ steps.check_update_step.outputs.new_version }}"
commit_author: "github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>" # 推荐使用官方 bot ID 邮箱
# file_pattern: "worker.js worker.min.js version.txt" # 如果解压后文件是固定的,可以指定,以防意外提交其他文件
(Gihub Action来源:Hans汉斯)
Cloudflare 部署
•创建pages:点击workers和pages,选择pages部署。连接github仓库,选择新建的项目仓库,然后点击部署。
•绑定自定义域名:以防止page分配的域名被屏蔽。
•设置变量:UUID,PROXY_IP, TR_PASS
•绑定KV命名空间:名称随便但不能含有bpb等敏感词
•重试部署pages
BPB面板设置
•部署成功后,打开浏览器输入:https://[自定义域名]或者你的项目地址,后面加上/panel检查是否能正常访问BPB面板.
•修改BPB面板密码
•配置BPB面板参数
评论