diff --git a/.gitea/workflows/test-ios.yml b/.gitea/workflows/test-ios.yml new file mode 100644 index 0000000..9dbc456 --- /dev/null +++ b/.gitea/workflows/test-ios.yml @@ -0,0 +1,36 @@ +name: Test iOS Build + +# 手动触发,只跑 iOS 构建 + 上传 TestFlight,用于验证签名链路(证书/Profile/API Key) +# 是否正常,无需打 tag 发版。默认版本 v0.0.1(build 号最低=1,不与正式发版冲突)。 +on: + workflow_dispatch: + inputs: + version: + description: '测试版本号(build 号由此推导,默认 v0.0.1 不与正式版冲突)' + required: true + type: string + default: 'v0.0.1' + +jobs: + build-ios: + runs-on: mac + env: + PUB_HOSTED_URL: https://pub.flutter-io.cn + FLUTTER_STORAGE_BASE_URL: https://storage.flutter-io.cn + + steps: + - uses: actions/checkout@v4 + + - name: Provision (idempotent — auto-runs if host not initialized) + run: sh scripts/ci/provision-mac.sh + + - name: Compile & upload to TestFlight (Flutter iOS) + env: + IOS_DIST_CERT_P12_BASE64: ${{ secrets.IOS_DIST_CERT_P12_BASE64 }} + IOS_DIST_CERT_PASSWORD: ${{ secrets.IOS_DIST_CERT_PASSWORD }} + IOS_PROVISIONING_PROFILE_BASE64: ${{ secrets.IOS_PROVISIONING_PROFILE_BASE64 }} + IOS_TEAM_ID: ${{ secrets.IOS_TEAM_ID }} + APPSTORE_API_KEY_ID: ${{ secrets.APPSTORE_API_KEY_ID }} + APPSTORE_API_ISSUER_ID: ${{ secrets.APPSTORE_API_ISSUER_ID }} + APPSTORE_API_KEY_P8_BASE64: ${{ secrets.APPSTORE_API_KEY_P8_BASE64 }} + run: sh scripts/ci/compile-ios.sh "${{ inputs.version }}" diff --git a/.gitignore b/.gitignore index 83a536a..219f753 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,6 @@ backend/issue # Claude 私有文件 .claude/commands/ .claude/worktrees/ + +# iOS 证书私钥(绝不入库) +.ios-certs/