发布 0.2.0:安装包放官网,Homebrew 通过 gentpan/tap 安装
- 版本号改为 0.2.0(构建号 2),更新日志标记为 0.2.0 · 2026-09-13 - release.sh 生成的 cask 指向 getopenstats.com/download;新增 publish_release.sh:上传 DMG、校验线上文件、提交 cask 到 homebrew-tap - 官网部署排除 /download/;官网下载按钮与 README 安装说明改为官网下载与 brew 命令
This commit is contained in:
1 parent
3b3fd577da
commit
bdb55e602d
9 files changed
+105
-48
No files matched your search
@@ -24,8 +24,9 @@ echo "内容指纹 v=$STAMP"
|
||||
|
||||
# 目录归部署用户所有,Caddy 只需读取
|
||||
"${SSH[@]}" "$HOST" "sudo mkdir -p $ROOT && sudo chown -R \$(id -un):\$(id -gn) $ROOT"
|
||||
# geoip/ 由服务器上的定时任务生成,不在 web/ 里——排除掉,否则 --delete 会把数据库删了
|
||||
rsync -az --delete --exclude /geoip/ -e "${SSH[*]}" web/ "$HOST:$ROOT/"
|
||||
# geoip/ 由服务器上的定时任务生成,download/ 是 publish_release.sh 上传的安装包,都不在 web/ 里——
|
||||
# 排除掉,否则 --delete 会把它们删了
|
||||
rsync -az --delete --exclude /geoip/ --exclude /download/ -e "${SSH[*]}" web/ "$HOST:$ROOT/"
|
||||
"${SSH[@]}" "$HOST" "sudo chmod -R a+rX $ROOT"
|
||||
echo "已同步到 $HOST:$ROOT"
|
||||
|
||||
|
||||
Executable
+48
@@ -0,0 +1,48 @@
|
||||
#!/bin/bash
|
||||
# 发布已公证的版本:DMG 上传到官网 /download/,cask 提交到 gentpan/homebrew-tap,并校验线上文件。
|
||||
#
|
||||
# ./Scripts/release.sh # 先打包、公证
|
||||
# ./Scripts/publish_release.sh # 再发布
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
HOST="${SITE_HOST:-debian@15.204.80.137}"
|
||||
KEY="${SITE_KEY:-$HOME/.ssh/gentpan.pem}"
|
||||
ROOT="${SITE_ROOT:-/var/www/getopenstats.com}"
|
||||
TAP="${TAP:-gentpan/homebrew-tap}"
|
||||
VERSION="$(sed -nE 's/^ *MARKETING_VERSION: *"?([0-9.]+)"?.*/\1/p' project.yml | head -1)"
|
||||
DMG="dist/OpenStats-${VERSION}.dmg"
|
||||
CASK="dist/openstats.rb"
|
||||
SSH=(ssh -i "$KEY" -o BatchMode=yes "$HOST")
|
||||
|
||||
[ -f "$DMG" ] && [ -f "$CASK" ] || { echo "缺少 $DMG 或 $CASK,先运行 ./Scripts/release.sh" >&2; exit 1; }
|
||||
grep -q "version \"${VERSION}\"" "$CASK" || { echo "$CASK 的版本不是 ${VERSION}" >&2; exit 1; }
|
||||
xcrun stapler validate "$DMG" >/dev/null || { echo "$DMG 没有装订公证票据" >&2; exit 1; }
|
||||
SHA="$(shasum -a 256 "$DMG" | cut -d' ' -f1)"
|
||||
grep -q "$SHA" "$CASK" || { echo "$CASK 里的 sha256 与 DMG 不一致" >&2; exit 1; }
|
||||
|
||||
# 上传:先传临时名再改名,下载中途不会拿到半个文件
|
||||
"${SSH[@]}" "sudo install -d -o \$(id -un) -m 755 $ROOT/download"
|
||||
scp -i "$KEY" -o BatchMode=yes "$DMG" "$HOST:$ROOT/download/.OpenStats-${VERSION}.dmg.part"
|
||||
"${SSH[@]}" "mv -f $ROOT/download/.OpenStats-${VERSION}.dmg.part $ROOT/download/OpenStats-${VERSION}.dmg && chmod 644 $ROOT/download/OpenStats-${VERSION}.dmg"
|
||||
|
||||
URL="https://getopenstats.com/download/OpenStats-${VERSION}.dmg"
|
||||
ONLINE="$(curl -fsSL --max-time 300 "$URL" | shasum -a 256 | cut -d' ' -f1)"
|
||||
[ "$ONLINE" = "$SHA" ] || { echo "线上 DMG 校验不一致:$ONLINE" >&2; exit 1; }
|
||||
echo "✅ $URL"
|
||||
|
||||
# Homebrew tap
|
||||
WORK="$(mktemp -d)"
|
||||
trap 'rm -rf "$WORK"' EXIT
|
||||
gh repo clone "$TAP" "$WORK/tap" -- --quiet
|
||||
mkdir -p "$WORK/tap/Casks"
|
||||
cp "$CASK" "$WORK/tap/Casks/openstats.rb"
|
||||
if git -C "$WORK/tap" diff --quiet -- Casks/openstats.rb && git -C "$WORK/tap" ls-files --error-unmatch Casks/openstats.rb >/dev/null 2>&1; then
|
||||
echo "✅ $TAP 已是 ${VERSION}"
|
||||
else
|
||||
git -C "$WORK/tap" add Casks/openstats.rb
|
||||
git -C "$WORK/tap" commit -q -m "openstats ${VERSION}"
|
||||
git -C "$WORK/tap" push -q
|
||||
echo "✅ 已提交 Casks/openstats.rb 到 $TAP"
|
||||
fi
|
||||
echo "安装:brew install --cask gentpan/tap/openstats"
|
||||
+4
-3
@@ -12,7 +12,8 @@
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
REPO="${REPO:-gentpan/OpenStats}"
|
||||
# 安装包放在官网(仓库是私有的,GitHub Release 无法匿名下载)
|
||||
DOWNLOAD_BASE="${DOWNLOAD_BASE:-https://getopenstats.com/download}"
|
||||
DIST="${DIST:-dist}"
|
||||
NOTARY_PROFILE="${NOTARY_PROFILE:-QuotaBar}"
|
||||
SIGN_ID="${SIGN_ID:-$(security find-identity -v -p codesigning 2>/dev/null \
|
||||
@@ -91,7 +92,7 @@ cask "openstats" do
|
||||
version "${VERSION}"
|
||||
sha256 "${SHA256}"
|
||||
|
||||
url "https://github.com/${REPO}/releases/download/v#{version}/OpenStats-#{version}.dmg"
|
||||
url "${DOWNLOAD_BASE}/OpenStats-#{version}.dmg"
|
||||
name "OpenStats"
|
||||
desc "Menu bar system monitor with fan control, keep-awake and cleanup"
|
||||
homepage "https://getopenstats.com"
|
||||
@@ -114,5 +115,5 @@ echo " Homebrew cask:${DIST}/openstats.rb"
|
||||
if [ "${SKIP_NOTARIZE:-0}" = "1" ]; then
|
||||
echo "⚠️ 未公证,仅供本机测试。"
|
||||
else
|
||||
echo "下一步:创建 GitHub Release v${VERSION} 并上传 DMG,再把 cask 提交到 gentpan/homebrew-tap。"
|
||||
echo "下一步:./Scripts/publish_release.sh 上传 DMG 到官网并更新 gentpan/homebrew-tap。"
|
||||
fi
|
||||
Reference in new issue
Block a user