Skip to content

Commit 3a436ac

Browse files
committed
v1.2.5: CI self-hosted apt-lock fix (v1.2.4 release was incomplete)
v1.2.4 tagged cleanly but its CI failed — parallel Linux matrix jobs on the self-hosted runners all raced on `/var/lib/apt/lists/lock` and failed the `sudo apt-get install` step within ~20s. v1.2.4's release job therefore skipped and no assets were published. Fix: - Pre-installed every apt dependency the workflow needs on both self-hosted runners (eframe system libs, gcc-aarch64-linux-gnu, gcc-arm-linux-gnueabihf). - Seeded per-runner cargo linker configs at /home/ghrunner/cargo-{01,02}/config.toml so the "echo [target.xxx] linker = ..." workflow step is also unnecessary. - Gated the "Install Linux eframe system deps" and the two cross- compile-toolchain steps on `runner.environment == 'github-hosted'` so only hosted runners call apt-get; self-hosted runners skip the whole thing and use pre-installed tooling. Re-tagging as v1.2.5 since v1.2.4 is an abandoned tag (git tag exists but no GitHub Release was cut for it). Same code changes as what v1.2.4 was meant to ship: PR #78 range- parallel validation, PR #79 port-collision rejection, README note on Android 7+ user-CA trust.
1 parent f4c2934 commit 3a436ac

5 files changed

Lines changed: 18 additions & 10 deletions

File tree

.github/workflows/release.yml

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,11 +112,12 @@ jobs:
112112
key: ${{ matrix.target }}
113113

114114
# eframe needs a few system libs on Linux for window management, keyboard,
115-
# and OpenGL/X11/Wayland. On self-hosted these persist across runs so this
116-
# is a no-op after the first time; on GH-hosted macOS/Windows the step
117-
# is guarded out anyway.
115+
# and OpenGL/X11/Wayland. Gated to GitHub-hosted runners only — the
116+
# self-hosted runners pre-install all of these once at setup time, and
117+
# letting multiple parallel matrix jobs race on `sudo apt-get install`
118+
# fights over /var/lib/apt/lists/lock and fails them all.
118119
- name: Install Linux eframe system deps
119-
if: runner.os == 'Linux'
120+
if: runner.os == 'Linux' && runner.environment == 'github-hosted'
120121
run: |
121122
sudo apt-get update
122123
sudo apt-get install -y \
@@ -126,16 +127,21 @@ jobs:
126127
libx11-dev \
127128
libgl1-mesa-dev libglib2.0-dev libgtk-3-dev
128129
130+
# Cross-compile toolchains. Same story as above — gated to hosted
131+
# runners; self-hosted has gcc-aarch64-linux-gnu + gcc-arm-linux-gnueabihf
132+
# pre-installed, and the linker entries live in
133+
# /home/ghrunner/cargo-{01,02}/config.toml (seeded once at runner
134+
# setup time, picked up via CARGO_HOME env).
129135
- name: Install aarch64 cross-compile toolchain (Linux only)
130-
if: matrix.target == 'aarch64-unknown-linux-gnu'
136+
if: matrix.target == 'aarch64-unknown-linux-gnu' && runner.environment == 'github-hosted'
131137
run: |
132138
sudo apt-get update
133139
sudo apt-get install -y gcc-aarch64-linux-gnu
134140
echo '[target.aarch64-unknown-linux-gnu]' >> ~/.cargo/config.toml
135141
echo 'linker = "aarch64-linux-gnu-gcc"' >> ~/.cargo/config.toml
136142
137143
- name: Install armhf cross-compile toolchain (Linux only)
138-
if: matrix.target == 'arm-unknown-linux-gnueabihf'
144+
if: matrix.target == 'arm-unknown-linux-gnueabihf' && runner.environment == 'github-hosted'
139145
run: |
140146
sudo apt-get update
141147
sudo apt-get install -y gcc-arm-linux-gnueabihf

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mhrv-rs"
3-
version = "1.2.4"
3+
version = "1.2.5"
44
edition = "2021"
55
description = "Rust port of MasterHttpRelayVPN -- DPI bypass via Google Apps Script relay with domain fronting"
66
license = "MIT"

android/app/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ android {
1414
applicationId = "com.therealaleph.mhrv"
1515
minSdk = 24 // Android 7.0 — covers 99%+ of live devices.
1616
targetSdk = 34
17-
versionCode = 124
18-
versionName = "1.2.4"
17+
versionCode = 125
18+
versionName = "1.2.5"
1919

2020
// Ship all four mainstream Android ABIs:
2121
// - arm64-v8a — 95%+ of real-world Android phones since 2019
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
• سخت‌کردن range-parallel: اعتبارسنجی هدر `Content-Range` قبل از دوختن پاسخ‌های ۲۰۶. پاسخ‌های نامعتبر دیگه به صورت ۲۰۰ OK جعلی ترکیب نمی‌شن — probe نامعتبر به GET تکی برمی‌گرده، چانک‌های نامعتبر به پاسخ probe برمی‌گرده (PR #78)
33
• رد configهایی که HTTP و SOCKS5 رو روی یک پورت تنظیم کرده‌اند قبل از bind failure زمان اجرا. هم در load config و هم در فرم UI چک می‌شه (PR #79)
44
• یادداشت README درباره محدودیت user-CA اندروید 7+ — اپ‌هایی مثل Telegram / WhatsApp / Instagram به CA ما اعتماد نمی‌کنن، برای اون‌ها از PROXY_ONLY یا upstream_socks5 استفاده کنید (issues #74 #81)
5+
• رفع زیرساخت CI: مراحل apt-get در buildهای Linux فقط روی runnerهای GitHub-hosted اجرا می‌شن. روی runnerهای self-hosted جدید، چندین job موازی روی `/var/lib/apt/lists/lock` رقابت می‌کردن و همه fail می‌شدن. بسته‌ها اکنون در setup runner پیش‌نصب هستند
56
---
67
• Range-parallel hardening: validate `Content-Range` before stitching 206 responses. Invalid responses no longer combine into a fake 200 OK — invalid probe falls back to a normal single GET, invalid later chunks fall back to the probe response (PR #78)
78
• Reject configs that set HTTP and SOCKS5 to the same port before the runtime bind failure. Enforced both at config-load time and in the UI form (PR #79)
89
• README note on the Android 7+ user-CA trust limit — apps like Telegram / WhatsApp / Instagram don't trust user-installed CAs, use PROXY_ONLY or upstream_socks5 for those (issues #74 #81)
10+
• CI infrastructure fix: apt-get steps on Linux build jobs gated to GitHub-hosted runners only. On the new self-hosted runners, multiple parallel matrix jobs were racing on `/var/lib/apt/lists/lock` and failing all at once. Packages now pre-installed at runner setup time

0 commit comments

Comments
 (0)