mirror of
https://github.com/therealaleph/MasterHttpRelayVPN-RUST.git
synced 2026-05-18 05:44:35 +03:00
chore: bump versions to 1.7.11 + drop i686 + harden release artifact download
v1.7.10 release run shipped no assets due to two CI failures stacked: 1. The i686-pc-windows-msvc job (added in v1.7.7 for Win7 support per #318) failed because Rust 1.77.2 — the last stable that produces Win7-loadable binaries — can't parse modern transitive crate manifests (`time` 0.3.47 in this case). Pinning transitives across the dep tree at every MSRV bump in our deps isn't sustainable, so the target is removed from the release matrix. Win7 32-bit users self-build per #318's instructions. 2. The `release` job hit `actions/download-artifact@v4`'s 5-retries- exhausted error on multiple artifacts. Same flake we worked around in #288 for `commit-releases`. The `release` and `telegram` jobs now use `gh run download` wrapped in a 3-attempt retry loop, mirror- ing the working pattern. v1.7.11 is the first full release after v1.7.9; ships #337 (Apps Script gzip-decoded range probe) and #344 (Android Paste button) that were tagged in v1.7.10 but never published as assets. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -77,18 +77,17 @@ jobs:
|
||||
- target: x86_64-pc-windows-gnu
|
||||
os: windows-latest
|
||||
name: mhrv-rs-windows-amd64
|
||||
- target: i686-pc-windows-msvc
|
||||
os: windows-latest
|
||||
name: mhrv-rs-windows-i686
|
||||
# Pin Rust 1.77.2 specifically for this target. Rust 1.78
|
||||
# (May 2024) raised the Windows MSRV from Win7 to Win10 by
|
||||
# switching std::time to GetSystemTimePreciseAsFileTime, a
|
||||
# kernel32 export that doesn't exist on Win7. The whole
|
||||
# reason this target ships is to support legacy Win7 32-bit
|
||||
# boxes (#272), so a stock-stable build defeats the purpose.
|
||||
# 1.77.2 is the last stable that produces a Win7-loadable
|
||||
# binary; other targets stay on @stable. (Fixes #318.)
|
||||
rust_toolchain: "1.77.2"
|
||||
# i686-pc-windows-msvc target was attempted in v1.7.7-v1.7.10
|
||||
# to support Windows 7 32-bit users (#272, #318). Removed in
|
||||
# v1.7.11 because keeping it on Rust 1.77.2 (last Win7-stable)
|
||||
# is fundamentally fragile: every transitive crate that bumps
|
||||
# its MSRV (e.g. `time` 0.3.47 needs Cargo manifest features
|
||||
# only available in Rust 1.78+) breaks the build, and pinning
|
||||
# transitives is brittle across releases. Win7 users should
|
||||
# self-build per the README; the project no longer ships a
|
||||
# prebuilt i686 Win7 binary. Replaced by the existing
|
||||
# x86_64-pc-windows-gnu (windows-amd64) which covers ~99% of
|
||||
# active Windows installs (incl. all WoA64 emulation).
|
||||
- target: x86_64-unknown-linux-musl
|
||||
os: [self-hosted, linux, x64, mhrv-build]
|
||||
name: mhrv-rs-linux-musl-amd64
|
||||
@@ -112,12 +111,7 @@ jobs:
|
||||
# mipsel-softfloat is best-effort: the Rust tier-3 target occasionally
|
||||
# regresses. Letting it fail keeps the main release going so
|
||||
# desktop/Android users aren't blocked by MT7621 router support.
|
||||
# i686-pc-windows-msvc is similarly best-effort — pinned to Rust
|
||||
# 1.77.2 for Win7 compat (#318), so a future dep MSRV bump above
|
||||
# 1.77 will fail this one target. Letting it skip keeps the rest
|
||||
# of the release unblocked; we'd then choose between dropping the
|
||||
# target or moving to the tier-3 win7-msvc target with build-std.
|
||||
continue-on-error: ${{ matrix.mipsel_softfloat == true || matrix.target == 'i686-pc-windows-msvc' }}
|
||||
continue-on-error: ${{ matrix.mipsel_softfloat == true }}
|
||||
|
||||
steps:
|
||||
# Heal any root-owned leftovers from a previous mipsel docker
|
||||
@@ -165,21 +159,6 @@ jobs:
|
||||
toolchain: ${{ matrix.rust_toolchain || 'stable' }}
|
||||
targets: ${{ matrix.target }}
|
||||
|
||||
# Cargo.lock from main is generated by stable Rust (1.78+ writes
|
||||
# version=4 lockfiles). Rust 1.77 only understands version=3, so
|
||||
# the i686 build with the pinned 1.77.2 toolchain bails with
|
||||
# "failed to parse lock file at: Cargo.lock" before it ever
|
||||
# touches our code. Drop the committed lockfile only on the pinned
|
||||
# job — cargo will regenerate it with version=3 against the same
|
||||
# Cargo.toml. We don't ship a `Cargo.lock` for binary reproducibility
|
||||
# contracts, so regenerating per-build is safe.
|
||||
- name: Regenerate Cargo.lock for older toolchain (Win7 i686 only)
|
||||
if: matrix.rust_toolchain == '1.77.2'
|
||||
shell: bash
|
||||
run: |
|
||||
rm -f Cargo.lock
|
||||
cargo +${{ matrix.rust_toolchain }} generate-lockfile
|
||||
|
||||
# Cache target/ + cargo registry across runs — this is the big
|
||||
# self-hosted speedup. Without it, actions/checkout@v4's default
|
||||
# `git clean -ffdx` wipes target/ between runs and every build is
|
||||
@@ -619,10 +598,33 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: dist
|
||||
merge-multiple: true
|
||||
# `actions/download-artifact@v4` has been intermittently flaking on
|
||||
# this workflow with "5 retries exhausted" on a single artifact (~10
|
||||
# of 13). Wrap it in a manual retry — usually the second attempt
|
||||
# succeeds, the third nails any laggards. We use `gh run download`
|
||||
# against the current run so we don't depend on the release page
|
||||
# existing yet (it doesn't until the softprops step below runs).
|
||||
- name: Download all build artifacts (with retries)
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
mkdir -p dist
|
||||
for attempt in 1 2 3; do
|
||||
if gh run download "${GITHUB_RUN_ID}" --dir dist --repo "${GITHUB_REPOSITORY}"; then
|
||||
echo "downloaded all artifacts on attempt $attempt"
|
||||
# `gh run download` puts each artifact in its own subdir;
|
||||
# flatten so downstream steps that expect dist/<file> work
|
||||
# the same as `merge-multiple: true` did.
|
||||
find dist -type f -mindepth 2 -exec mv -f {} dist/ \;
|
||||
find dist -type d -empty -delete
|
||||
ls -la dist/
|
||||
exit 0
|
||||
fi
|
||||
echo "download attempt $attempt failed; retrying in 30s..."
|
||||
sleep 30
|
||||
done
|
||||
echo "::error::failed to download artifacts after 3 attempts"
|
||||
exit 1
|
||||
|
||||
# Compose the GitHub release body from `docs/changelog/v<ver>.md`
|
||||
# so the Releases page tells humans what actually changed —
|
||||
@@ -859,10 +861,27 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: mhrv-rs-android-universal
|
||||
path: apk
|
||||
# Same retry pattern as the `release` job above — `actions/download-artifact@v4`
|
||||
# has been flaking on this workflow with 5-retries-exhausted errors.
|
||||
- name: Download universal APK (with retries)
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
mkdir -p apk
|
||||
for attempt in 1 2 3; do
|
||||
if gh run download "${GITHUB_RUN_ID}" \
|
||||
--name mhrv-rs-android-universal \
|
||||
--dir apk \
|
||||
--repo "${GITHUB_REPOSITORY}"; then
|
||||
echo "downloaded universal APK on attempt $attempt"
|
||||
ls -la apk/
|
||||
exit 0
|
||||
fi
|
||||
echo "download attempt $attempt failed; retrying in 30s..."
|
||||
sleep 30
|
||||
done
|
||||
echo "::error::failed to download universal APK after 3 attempts"
|
||||
exit 1
|
||||
|
||||
- name: Post to Telegram
|
||||
env:
|
||||
|
||||
Reference in New Issue
Block a user