Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
211 changes: 173 additions & 38 deletions .github/workflows/build_test.yml
Original file line number Diff line number Diff line change
@@ -1,53 +1,180 @@
name: Build test
name: CI

on:
push:
branches:
- main
branches: [main, spm-migration]
pull_request:

jobs:
test_iOS:
name: Test iOS on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest]
# ──────────────────────────────────────────────
analyze_test:
name: Analyze & Test (all packages)
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: stable
- run: flutter pub get
- run: cd example/ios; pod update WechatOpenSDK-XCFramework; cd ../..
- run: cd example; flutter build ios --no-codesign

test_iOS_No_Pay:
name: Test iOS no_pay on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest]

- name: Install Melos
run: dart pub global activate melos 7.5.1

- name: Bootstrap
run: melos bootstrap

- name: Verify symlinks
run: |
test -L packages/fluwx_no_pay/lib || (echo "❌ fluwx_no_pay/lib symlink missing" && exit 1)
test -L packages/fluwx/ios/fluwx/Sources/fluwx || (echo "❌ fluwx iOS Sources symlink missing" && exit 1)
test -L packages/fluwx_no_pay/ios/fluwx_no_pay/Sources/fluwx_no_pay || (echo "❌ fluwx_no_pay iOS Sources symlink missing" && exit 1)
test -L packages/fluwx/android/src/main/kotlin || (echo "❌ fluwx Android kotlin symlink missing" && exit 1)
test -L packages/fluwx_no_pay/android/src/main/kotlin || (echo "❌ fluwx_no_pay Android kotlin symlink missing" && exit 1)
test -L packages/fluwx/ohos || (echo "❌ fluwx/ohos symlink missing" && exit 1)
test -L packages/fluwx_no_pay/ohos || (echo "❌ fluwx_no_pay/ohos symlink missing" && exit 1)
echo "✅ 所有 symlink 完好"

- name: Analyze
run: melos exec -- flutter analyze

- name: Test
run: melos exec -- flutter test

# ──────────────────────────────────────────────
ios_fluwx:
name: iOS build — fluwx (with pay, SPM)
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: stable
- run: flutter pub get
- run: |
cd example
sed -i.bak0 's/# no_pay: true/ no_pay: true/' pubspec.yaml
cat pubspec.yaml
flutter build ios --no-codesign

test_android:
name: Test android on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]

- name: Enable SPM
run: flutter config --enable-swift-package-manager

- name: Install Melos
run: dart pub global activate melos 7.5.1

- name: Bootstrap
run: melos bootstrap

- name: Build fluwx example (SPM)
run: |
cd packages/fluwx/example
flutter pub get
flutter build ios --no-codesign

# ──────────────────────────────────────────────
ios_fluwx_no_pay:
name: iOS build — fluwx_no_pay (no pay, SPM)
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: stable

- name: Enable SPM
run: flutter config --enable-swift-package-manager

- name: Install Melos
run: dart pub global activate melos 7.5.1

- name: Bootstrap
run: melos bootstrap

- name: Build fluwx_no_pay example (SPM)
run: |
cd packages/fluwx_no_pay/example
flutter pub get
flutter build ios --no-codesign

- name: Verify — no WechatOpenSDK symbols in binary
run: |
ARCHIVE=$(find ~/Library/Developer/Xcode/DerivedData \
-name "libfluwx_no_pay.a" 2>/dev/null | head -1)
OBJECTS=$(find ~/Library/Developer/Xcode/DerivedData \
-path "*/fluwx_no_pay.build/*.o" 2>/dev/null | head -1)
TARGET="${ARCHIVE:-$OBJECTS}"
if [ -z "$TARGET" ]; then
echo "⚠️ 未找到编译产物,跳过符号检查"
exit 0
fi
echo "检查目标: $TARGET"

SYMBOLS=$(nm -gjU "$TARGET" 2>/dev/null || nm "$TARGET" 2>/dev/null | awk '{print $NF}')

if printf '%s\n' "$SYMBOLS" | grep -Fxq "_OBJC_CLASS_\$_PayResp" \
|| printf '%s\n' "$SYMBOLS" | grep -Fxq "_OBJC_CLASS_\$_WXNontaxPayResp" \
|| printf '%s\n' "$SYMBOLS" | grep -Fxq "_OBJC_CLASS_\$_WXPayInsuranceResp"; then
echo "❌ fluwx_no_pay binary 中发现支付相关符号!合规检查失败"
printf '%s\n' "$SYMBOLS" | grep -Fx \
-e "_OBJC_CLASS_\$_PayResp" \
-e "_OBJC_CLASS_\$_WXNontaxPayResp" \
-e "_OBJC_CLASS_\$_WXPayInsuranceResp" | head -20
exit 1
fi
echo "✅ Binary 无支付相关符号,合规通过"

# ──────────────────────────────────────────────
ios_fluwx_pod:
name: iOS build — fluwx (CocoaPods)
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: stable

- name: Disable SPM
run: flutter config --no-enable-swift-package-manager

- name: Install Melos
run: dart pub global activate melos 7.5.1

- name: Bootstrap
run: melos bootstrap

- name: Build fluwx example (CocoaPods)
run: |
cd packages/fluwx/example
flutter pub get
flutter build ios --no-codesign

# ──────────────────────────────────────────────
ios_fluwx_no_pay_pod:
name: iOS build — fluwx_no_pay (no pay, CocoaPods)
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: stable

- name: Disable SPM
run: flutter config --no-enable-swift-package-manager

- name: Install Melos
run: dart pub global activate melos 7.5.1

- name: Bootstrap
run: melos bootstrap

- name: Build fluwx_no_pay example (CocoaPods)
run: |
cd packages/fluwx_no_pay/example
flutter pub get
cd ios
pod repo update
pod install
cd ..
flutter build ios --no-codesign
# ──────────────────────────────────────────────
android:
name: Android build (fluwx)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
Expand All @@ -56,6 +183,14 @@ jobs:
- uses: subosito/flutter-action@v2
with:
channel: stable
- run: flutter doctor
- run: flutter pub get
- run: cd example; flutter build apk --debug

- name: Install Melos
run: dart pub global activate melos 7.5.1

- name: Bootstrap
run: melos bootstrap

- name: Build Android APK (fluwx example)
run: |
cd packages/fluwx/example
flutter build apk --debug
38 changes: 32 additions & 6 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,37 @@ jobs:
publish:
environment: 'pub.dev'
permissions:
id-token: write # Required for authentication using OIDC
id-token: write # OIDC 认证
runs-on: ubuntu-latest
steps:
- name: 📚 Git Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- uses: ./.github/actions/publish_flutter_package
- uses: actions/checkout@v4

- uses: dart-lang/setup-dart@v1

- name: Install Melos
run: dart pub global activate melos 7.5.1

- name: Bootstrap
run: melos bootstrap

- name: Verify version sync
run: dart tools/sync_version.dart --check

- name: Verify symlinks
run: |
test -L packages/fluwx_no_pay/lib || (echo "❌ fluwx_no_pay/lib symlink missing" && exit 1)
test -L packages/fluwx/ios/fluwx/Sources/fluwx || (echo "❌ fluwx iOS Sources symlink missing" && exit 1)
test -L packages/fluwx_no_pay/ios/fluwx_no_pay/Sources/fluwx_no_pay || (echo "❌ fluwx_no_pay iOS Sources symlink missing" && exit 1)
test -L packages/fluwx/android/src/main/kotlin || (echo "❌ fluwx Android kotlin symlink missing" && exit 1)
test -L packages/fluwx_no_pay/android/src/main/kotlin || (echo "❌ fluwx_no_pay Android kotlin symlink missing" && exit 1)
test -L packages/fluwx/ohos || (echo "❌ fluwx/ohos symlink missing" && exit 1)
test -L packages/fluwx_no_pay/ohos || (echo "❌ fluwx_no_pay/ohos symlink missing" && exit 1)
echo "✅ 所有 symlink 完好"

- name: Setup pub credentials
run: |
mkdir -p ~/.config/dart
echo '${{ secrets.PUB_CREDENTIALS }}' > ~/.config/dart/pub-credentials.json

- name: Publish (fluwx first, then fluwx_no_pay)
run: melos publish --no-dry-run --yes
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# 6.0.0-preview.4
* iOS迁移到Swift Package Manager
* fluwx_no_pay又成为独立的包

# 6.0.0-preview.3
* 修复iOS编译错误

Expand Down
Loading
Loading