b43601b4fd
- 新增 scripts/ci/provision-{mac,windows}.sh:幂等预置,按 Flutter 版本
stamp 短路,pipeline 首跑自动 precache + 预热缓存,运行时不再下载 engine
- scripts/ci/_env.sh:抽出共用镜像 env,compile 脚本统一 source
- deploy.yml:build-macos needs build-linux-web,同一 mac runner 串行
执行,避免排队超时;各 build job 加 Provision 前置步骤
- 删除 .gitea/workflows/ci.yml
- backup.yml:暂停定时备份(保留 workflow_dispatch 手动触发)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
43 lines
1.4 KiB
Bash
43 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
# provision-windows.sh — idempotent provisioning for the Windows host runner.
|
|
#
|
|
# Pre-warms what compile-windows.sh would download at runtime: Flutter Windows
|
|
# engine artifacts and pub packages. Short-circuits via a stamp file keyed to
|
|
# the installed Flutter version, so repeat runs return immediately.
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(dirname "$0")"
|
|
# shellcheck source=scripts/ci/_env.sh
|
|
. "${SCRIPT_DIR}/_env.sh"
|
|
|
|
STAMP_DIR="${HOME}/.cache/jiu-ci"
|
|
STAMP="${STAMP_DIR}/provisioned-windows"
|
|
CUR="${STAMP_DIR}/.flutter-version-win.cur"
|
|
mkdir -p "$STAMP_DIR"
|
|
|
|
# --- detection ---
|
|
if ! command -v flutter >/dev/null 2>&1; then
|
|
echo "ERROR: flutter not found on PATH. Install Flutter on this runner first." >&2
|
|
exit 1
|
|
fi
|
|
flutter --version --machine > "$CUR" 2>/dev/null || flutter --version > "$CUR" 2>&1 || true
|
|
|
|
if [ -s "$STAMP" ] && cmp -s "$STAMP" "$CUR"; then
|
|
echo "==> provision-windows: already provisioned (Flutter unchanged), skipping."
|
|
exit 0
|
|
fi
|
|
|
|
echo "==> provision-windows: not provisioned (or Flutter changed) — running."
|
|
|
|
# --- warm Flutter Windows engine + pub deps ---
|
|
echo "==> precache Flutter engine (windows)"
|
|
flutter precache --windows
|
|
|
|
echo "==> flutter pub get (client)"
|
|
(cd "${SCRIPT_DIR}/../../client" && flutter pub get)
|
|
|
|
# --- mark provisioned ---
|
|
cp "$CUR" "$STAMP"
|
|
echo "==> provision-windows: done."
|
|
flutter --version | head -1
|