Skip to content

Commit c9bbe7e

Browse files
authored
revert: restore release pipeline to stable version from Oct 10 (#65)
Revert pipeline changes from Oct 18 that introduced invalid Fastlane parameters. Reverted changes: - Remove invalid export_compliance_* parameters - Restore working beta lane configuration - Remove problematic internal/public_beta channel logic - Restore stable TestFlight distribution settings This restores the pipeline to the last known working version (commit 16fc965) before the problematic changes that broke TestFlight uploads.
1 parent fccf222 commit c9bbe7e

File tree

2 files changed

+50
-108
lines changed

2 files changed

+50
-108
lines changed

.github/workflows/release.yml

Lines changed: 10 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,6 @@ on:
1313
required: false
1414
default: false
1515
type: boolean
16-
release_channel:
17-
description: 'TestFlight release channel'
18-
required: false
19-
default: 'public_beta'
20-
type: choice
21-
options:
22-
- public_beta
23-
- internal
2416

2517
env:
2618
DEVELOPER_DIR: /Applications/Xcode.app/Contents/Developer
@@ -58,7 +50,6 @@ jobs:
5850
if [[ "${{ github.event.inputs.force_release }}" == "true" ]]; then
5951
echo "Tag $TAG_NAME exists but force_release is true"
6052
# Delete existing tag for force release
61-
git tag -d "$TAG_NAME" 2>/dev/null || true
6253
git push origin --delete "$TAG_NAME" 2>/dev/null || true
6354
echo "should_release=true" >> $GITHUB_OUTPUT
6455
else
@@ -96,7 +87,7 @@ jobs:
9687
name: Build and Release to TestFlight (Public Beta)
9788
needs: version-check
9889
if: needs.version-check.outputs.should_release == 'true'
99-
runs-on: macos-26
90+
runs-on: macos-latest
10091

10192
steps:
10293
- name: Checkout repository at tag
@@ -107,7 +98,7 @@ jobs:
10798
ref: ${{ needs.version-check.outputs.new_tag }}
10899

109100
- name: Select Xcode version
110-
run: sudo xcode-select -s /Applications/Xcode_26.0.app/Contents/Developer
101+
run: sudo xcode-select -s /Applications/Xcode_16.0.app/Contents/Developer
111102

112103
- name: Setup Ruby
113104
uses: ruby/setup-ruby@v1
@@ -117,7 +108,7 @@ jobs:
117108

118109
- name: Install Fastlane
119110
run: |
120-
gem install fastlane -v 2.228.0
111+
gem install fastlane -v 2.226.0
121112
gem install xcpretty
122113
123114
- name: Setup SSH for Match repository
@@ -291,7 +282,6 @@ jobs:
291282
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
292283
MATCH_GIT_URL: ${{ secrets.MATCH_GIT_URL }}
293284
TEAM_ID: ${{ secrets.TEAM_ID }}
294-
RELEASE_CHANNEL: ${{ github.event.inputs.release_channel || 'public_beta' }}
295285
run: |
296286
# Enable verbose output for debugging
297287
export FASTLANE_VERBOSE=true
@@ -300,26 +290,21 @@ jobs:
300290
export LC_ALL=en_US.UTF-8
301291
export LANG=en_US.UTF-8
302292
303-
# Run the beta lane with release channel parameter
304-
# Default to 'public_beta' for automatic releases (push to main)
305-
# Can be set to 'internal' for manual workflow_dispatch if needed
306-
fastlane beta channel:$RELEASE_CHANNEL
293+
# Run the beta lane (includes waiting for processing and public beta distribution)
294+
fastlane beta
307295
308296
- name: Create GitHub Release
309297
uses: softprops/action-gh-release@v1
310-
env:
311-
RELEASE_CHANNEL: ${{ github.event.inputs.release_channel || 'public_beta' }}
312298
with:
313299
tag_name: ${{ needs.version-check.outputs.new_tag }}
314300
name: Release ${{ needs.version-check.outputs.version }}
315301
body: |
316302
## 🚀 Version ${{ needs.version-check.outputs.version }}
317303
Build: ${{ needs.version-check.outputs.build }}
318304
319-
### TestFlight Distribution
320-
**Channel**: ${{ github.event.inputs.release_channel || 'public_beta' }}
321-
322-
${{ (github.event.inputs.release_channel || 'public_beta') == 'public_beta' && '📧 **Public Beta**: This build has been submitted to TestFlight for public beta testing. External testers will receive email notifications when the build is available after beta review approval.' || '👥 **Internal Testing**: This build is available to internal testers immediately after processing. No beta review required.' }}
305+
### TestFlight Public Beta
306+
This version has been automatically submitted to TestFlight for public beta testing.
307+
External testers will receive email notifications when the build is available.
323308
324309
### What's New
325310
- See [commit history](https://github.com/${{ github.repository }}/commits/${{ needs.version-check.outputs.new_tag }}) for changes
@@ -331,16 +316,8 @@ jobs:
331316

332317
- name: Post release notification
333318
if: success()
334-
env:
335-
RELEASE_CHANNEL: ${{ github.event.inputs.release_channel || 'public_beta' }}
336319
run: |
337-
CHANNEL_DISPLAY=$([ "$RELEASE_CHANNEL" = "public_beta" ] && echo "Public Beta" || echo "Internal Testing")
338-
echo "✅ Successfully released version ${{ needs.version-check.outputs.version }} to TestFlight $CHANNEL_DISPLAY!"
320+
echo "✅ Successfully released version ${{ needs.version-check.outputs.version }} to TestFlight Public Beta!"
339321
echo "🏷️ Tag: ${{ needs.version-check.outputs.new_tag }}"
340322
echo "🔢 Build: ${{ needs.version-check.outputs.build }}"
341-
echo "📦 Channel: $RELEASE_CHANNEL"
342-
if [ "$RELEASE_CHANNEL" = "public_beta" ]; then
343-
echo "📧 External testers will be notified after beta review approval"
344-
else
345-
echo "👥 Internal testers can access the build immediately after processing"
346-
fi
323+
echo "📧 External testers will be notified via email"

fastlane/Fastfile

Lines changed: 40 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,7 @@ platform :ios do
4242
provisioningProfiles: {
4343
"v2er.app" => "match AppStore v2er.app"
4444
},
45-
teamID: ENV["TEAM_ID"],
46-
ITSAppUsesNonExemptEncryption: false, # Add export compliance to IPA
47-
uploadBitcode: false,
48-
compileBitcode: false,
49-
uploadSymbols: true
45+
teamID: ENV["TEAM_ID"]
5046
},
5147
export_team_id: ENV["TEAM_ID"],
5248
xcargs: "-allowProvisioningUpdates CODE_SIGN_STYLE=Manual",
@@ -71,7 +67,7 @@ platform :ios do
7167
)
7268
end
7369

74-
desc "Distribute existing build to internal testers"
70+
desc "Distribute existing build to beta testers"
7571
lane :distribute_beta do |options|
7672
# Get App Store Connect API key
7773
api_key = get_api_key
@@ -80,42 +76,38 @@ platform :ios do
8076
build_number = options[:build_number]
8177

8278
begin
83-
# Distribute to internal testers only
79+
# Distribute to beta testers
8480
testflight(
8581
api_key: api_key,
8682
app_identifier: "v2er.app",
87-
skip_submission: true, # Skip beta review for internal testing
88-
distribute_external: false, # Internal testing only (not public beta)
83+
skip_submission: false,
84+
distribute_external: true, # Distribute to external testers (public beta)
85+
groups: ["Public Beta", "External Testers", "Beta Testers"], # Public beta groups
86+
notify_external_testers: true, # Send email notifications
87+
uses_non_exempt_encryption: false,
88+
submit_beta_review: true, # Automatically submit for Beta review
8989
wait_for_uploaded_build: true,
90-
groups: ["Github Actions Internal"], # Auto-distribute to Github Actions Internal group
91-
notify_external_testers: false, # No external notifications
92-
uses_non_exempt_encryption: false, # Mark as no encryption to skip export compliance review
93-
export_compliance_uses_encryption: false, # Explicitly state no encryption
94-
export_compliance_is_exempt: true # Exempt from export compliance
90+
beta_app_description: "V2er is an elegant third-party client for V2EX forum",
91+
beta_app_feedback_email: "support@v2er.app",
92+
demo_account_required: false,
93+
beta_app_review_info: {
94+
contact_email: "support@v2er.app",
95+
contact_first_name: "V2er",
96+
contact_last_name: "Support",
97+
contact_phone: "+86 13800138000",
98+
notes: "This is a third-party client app for V2EX forum. No special account needed for testing."
99+
}
95100
)
96101

97-
UI.success("✅ Successfully distributed build to internal testers (Github Actions Internal)!")
102+
UI.success("✅ Successfully distributed build to beta testers!")
98103
rescue => e
99104
UI.error("Failed to distribute: #{e.message}")
100105
UI.message("You may need to manually distribute the build in App Store Connect")
101106
end
102107
end
103108

104109
desc "Build and upload to TestFlight"
105-
desc "Parameters:"
106-
desc " channel: 'internal' (default) or 'public_beta'"
107-
lane :beta do |options|
108-
# Get release channel from options or environment variable
109-
# Default to 'internal' if not specified
110-
channel = options[:channel] || ENV['RELEASE_CHANNEL'] || 'internal'
111-
112-
UI.message("📦 Release channel: #{channel}")
113-
114-
# Validate channel parameter
115-
unless ['internal', 'public_beta'].include?(channel)
116-
UI.user_error!("Invalid channel: #{channel}. Must be 'internal' or 'public_beta'")
117-
end
118-
110+
lane :beta do
119111
# Validate that changelog exists for current version
120112
unless ChangelogHelper.validate_changelog_exists
121113
UI.user_error!("Please update CHANGELOG.md with an entry for the current version before releasing!")
@@ -174,58 +166,31 @@ platform :ios do
174166
# Extract changelog for the current version
175167
changelog_content = ChangelogHelper.extract_changelog(current_version)
176168

177-
# Configure TestFlight upload based on release channel
178-
is_public_beta = channel == 'public_beta'
179-
180-
upload_params = {
169+
# Upload to TestFlight
170+
upload_to_testflight(
181171
api_key: api_key,
182-
skip_submission: !is_public_beta, # Skip beta review for internal, submit for public beta
172+
skip_submission: false,
183173
skip_waiting_for_build_processing: false, # Wait for processing before distribution
184174
wait_processing_interval: 30, # Check every 30 seconds
185175
wait_processing_timeout_duration: 900, # Wait up to 15 minutes for processing
186-
distribute_external: is_public_beta, # Internal testing by default, external for public beta
176+
distribute_external: true, # Distribute to external testers (public beta)
187177
distribute_only: false, # Upload and distribute in one action
178+
groups: ["Public Beta", "External Testers", "Beta Testers"], # Public beta groups
188179
changelog: changelog_content, # Use changelog from CHANGELOG.md
189-
uses_non_exempt_encryption: false, # Mark as no encryption to skip export compliance review
190-
export_compliance_uses_encryption: false, # Explicitly state no encryption for export compliance
191-
export_compliance_platform: 'ios', # Specify platform for export compliance
192-
export_compliance_compliance_required: false, # No additional compliance documentation required
193-
export_compliance_app_type: nil, # Not applicable since we don't use encryption
194-
export_compliance_encryption_updated: false, # No encryption changes
195-
export_compliance_contains_third_party_cryptography: false, # No third-party cryptography
196-
export_compliance_is_exempt: true # Exempt from export compliance
197-
}
198-
199-
# Add channel-specific distribution parameters
200-
if is_public_beta
201-
upload_params.merge!({
202-
groups: ["Public Beta", "External Testers", "Beta Testers"], # Public beta groups
203-
notify_external_testers: true, # Send email notifications to external testers
204-
submit_beta_review: true, # Automatically submit for Beta review
205-
beta_app_description: "V2er is an elegant third-party client for V2EX forum",
206-
beta_app_feedback_email: "support@v2er.app",
207-
demo_account_required: false, # No demo account required
208-
beta_app_review_info: {
209-
contact_email: "support@v2er.app",
210-
contact_first_name: "V2er",
211-
contact_last_name: "Support",
212-
contact_phone: "+86 13800138000",
213-
notes: "This is a third-party client app for V2EX forum. No special account needed for testing."
214-
}
215-
})
216-
UI.message("📧 Public beta mode: Will notify external testers and submit for beta review")
217-
else
218-
# Internal testing mode - automatically distribute to internal testers
219-
# Uses "Github Actions Internal" group configured in App Store Connect
220-
upload_params.merge!({
221-
groups: ["Github Actions Internal"], # Auto-distribute to Github Actions Internal group
222-
notify_external_testers: false # No external notifications for internal testing
223-
})
224-
UI.message("👥 Internal testing mode: Will auto-distribute to Github Actions Internal group (no beta review required)")
225-
end
226-
227-
# Upload to TestFlight with automatic distribution
228-
upload_to_testflight(upload_params)
180+
notify_external_testers: true, # Send email notifications to external testers
181+
uses_non_exempt_encryption: false, # Required for automatic distribution
182+
submit_beta_review: true, # Automatically submit for Beta review
183+
beta_app_description: "V2er is an elegant third-party client for V2EX forum",
184+
beta_app_feedback_email: "support@v2er.app",
185+
demo_account_required: false, # No demo account required
186+
beta_app_review_info: {
187+
contact_email: "support@v2er.app",
188+
contact_first_name: "V2er",
189+
contact_last_name: "Support",
190+
contact_phone: "+86 13800138000",
191+
notes: "This is a third-party client app for V2EX forum. No special account needed for testing."
192+
}
193+
)
229194

230195
# Notify success
231196
notification(

0 commit comments

Comments
 (0)