Skip to content

Commit 431ed09

Browse files
committed
chore: stop publishing Experimental app
PR2 of the phased Experimental → Official migration (design doc + NATIVE-1118). CI is no longer building or publishing the Experimental variant. The Official publish pipeline is unchanged in behaviour; this just rips out the parallel experimental arm from every workflow, composite action, and fastlane lane it touched. Workflows - Delete .github/workflows/build-android.yml and build-ios.yml (the parameterised workflows whose only remaining caller was the experimental path; Official already had build-official-{android,ios}.yml). - Remove android-build-experimental-store / ios-build-experimental-store from build-pr.yml and build-develop.yml. - Drop `type` workflow input from build-official-{android,ios}.yml and stop passing GOOGLE_SERVICES_IOS_EXPERIMENTAL / BUGSNAG_KEY to the iOS composite. Composite actions - build-android: drop type/KEYSTORE_EXPERIMENTAL_*/BUGSNAG_KEY inputs and the experimental arms in keystore decode, gradle.properties, gradle bundle, and bugsnag upload. Only the Official AAB upload step remains. - build-ios: drop type/BUGSNAG_KEY/GOOGLE_SERVICES_IOS_EXPERIMENTAL, drop the experimental fastlane invocation and all `inputs.type == 'experimental'` artifact uploads. Keep the PlistBuddy `Set IS_OFFICIAL YES` block until PR3 removes the key from the source Info.plists. - upload-{android,internal-android,ios}: drop type input, the experimental download branches, and the `Rocket.Chat Experimental` PR-comment label. Fastlane - ios/fastlane/Fastfile: delete build_experimental and build_experimental_simulator; collapse `beta` to a no-options Official lane (chat.rocket.ios + BUGSNAG_KEY_OFFICIAL). Keep build_official and its `prepare_ios_official.sh` call — PR3 deletes both in lockstep with the pbxproj rewrite. - android/fastlane/Fastfile: delete experimental_production; collapse `beta` and `internal_app_sharing` to no-options Official lanes (chat.rocket.android). Verified by `grep -rn experimental|Experimental|EXPERIMENTAL .github/ ios/fastlane/Fastfile android/fastlane/Fastfile` returning zero, and by YAML/Ruby parse on every modified file. Out-of-band steps (App Store Connect archive, Play Console internal entry, GH Environments + Secrets cleanup) are tracked separately in the design doc and are not part of this PR. https://rocketchat.atlassian.net/browse/NATIVE-1118
1 parent 66571ed commit 431ed09

14 files changed

Lines changed: 73 additions & 575 deletions

File tree

.github/actions/build-android/action.yml

Lines changed: 12 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,11 @@
11
name: 'Build Android'
22
description: 'Builds Android app AAB and uploads manifest and AAB'
33
inputs:
4-
type:
5-
description: 'Build type: official or experimental'
6-
required: true
74
BUILD_VERSION:
85
description: 'Build version for build'
96
required: true
10-
BUGSNAG_KEY:
11-
description: 'Bugsnag API key for build'
12-
required: true
13-
KEYSTORE_EXPERIMENTAL_BASE64:
14-
description: 'Base64 encoded keystore for experimental build'
15-
required: true
16-
KEYSTORE_EXPERIMENTAL:
17-
description: 'Keystore file name for experimental build'
18-
required: true
19-
KEYSTORE_EXPERIMENTAL_PASSWORD:
20-
description: 'Keystore password for experimental build'
21-
required: true
22-
KEYSTORE_EXPERIMENTAL_ALIAS:
23-
description: 'Keystore alias for experimental build'
24-
required: true
257
GOOGLE_SERVICES_ANDROID:
26-
description: 'Google services JSON for experimental build'
8+
description: 'Google services JSON'
279
required: true
2810
BUGSNAG_KEY_OFFICIAL:
2911
description: 'Bugsnag API key for official build'
@@ -63,16 +45,11 @@ runs:
6345
key: gradle-${{ hashFiles('android/**.gradle*', 'android/**/gradle-wrapper.properties') }}
6446
restore-keys: |
6547
gradle-
66-
48+
6749
- name: Decode Keystore
6850
working-directory: android/app
6951
run: |
70-
if [[ "${{ inputs.type }}" == "experimental" ]]; then
71-
echo "${{ inputs.KEYSTORE_EXPERIMENTAL_BASE64 }}" | base64 -d > "${{ inputs.KEYSTORE_EXPERIMENTAL }}"
72-
fi
73-
if [[ "${{ inputs.type }}" == "official" ]]; then
74-
echo "${{ inputs.KEYSTORE_OFFICIAL_BASE64 }}" | base64 -d > "${{ inputs.KEYSTORE_OFFICIAL }}"
75-
fi
52+
echo "${{ inputs.KEYSTORE_OFFICIAL_BASE64 }}" | base64 -d > "${{ inputs.KEYSTORE_OFFICIAL }}"
7653
shell: bash
7754

7855
- name: Set gradle.properties
@@ -86,24 +63,12 @@ runs:
8663
echo -e "newArchEnabled=true" >> ./gradle.properties
8764
echo -e "hermesEnabled=true" >> ./gradle.properties
8865
echo -e "VERSIONCODE=${{ inputs.BUILD_VERSION }}" >> ./gradle.properties
89-
90-
if [[ "${{ inputs.type }}" == "experimental" ]]; then
91-
echo -e "APPLICATION_ID=chat.rocket.reactnative" >> ./gradle.properties
92-
echo -e "BugsnagAPIKey=${{ inputs.BUGSNAG_KEY }}" >> ./gradle.properties
93-
echo -e "KEYSTORE=${{ inputs.KEYSTORE_EXPERIMENTAL }}" >> ./gradle.properties
94-
echo -e 'KEYSTORE_PASSWORD=${{ inputs.KEYSTORE_EXPERIMENTAL_PASSWORD }}' >> ./gradle.properties
95-
echo -e "KEY_ALIAS=${{ inputs.KEYSTORE_EXPERIMENTAL_ALIAS }}" >> ./gradle.properties
96-
echo -e 'KEY_PASSWORD=${{ inputs.KEYSTORE_EXPERIMENTAL_PASSWORD }}' >> ./gradle.properties
97-
fi
98-
99-
if [[ "${{ inputs.type }}" == "official" ]]; then
100-
echo -e "APPLICATION_ID=chat.rocket.android" >> ./gradle.properties
101-
echo -e "BugsnagAPIKey=${{ inputs.BUGSNAG_KEY_OFFICIAL }}" >> ./gradle.properties
102-
echo -e "KEYSTORE=${{ inputs.KEYSTORE_OFFICIAL }}" >> ./gradle.properties
103-
echo -e 'KEYSTORE_PASSWORD=${{ inputs.KEYSTORE_OFFICIAL_PASSWORD }}' >> ./gradle.properties
104-
echo -e "KEY_ALIAS=${{ inputs.KEYSTORE_OFFICIAL_ALIAS }}" >> ./gradle.properties
105-
echo -e 'KEY_PASSWORD=${{ inputs.KEYSTORE_OFFICIAL_PASSWORD }}' >> ./gradle.properties
106-
fi
66+
echo -e "APPLICATION_ID=chat.rocket.android" >> ./gradle.properties
67+
echo -e "BugsnagAPIKey=${{ inputs.BUGSNAG_KEY_OFFICIAL }}" >> ./gradle.properties
68+
echo -e "KEYSTORE=${{ inputs.KEYSTORE_OFFICIAL }}" >> ./gradle.properties
69+
echo -e 'KEYSTORE_PASSWORD=${{ inputs.KEYSTORE_OFFICIAL_PASSWORD }}' >> ./gradle.properties
70+
echo -e "KEY_ALIAS=${{ inputs.KEYSTORE_OFFICIAL_ALIAS }}" >> ./gradle.properties
71+
echo -e 'KEY_PASSWORD=${{ inputs.KEYSTORE_OFFICIAL_PASSWORD }}' >> ./gradle.properties
10772
shell: bash
10873

10974
- name: Set Google Services JSON
@@ -116,36 +81,16 @@ runs:
11681

11782
- name: Build Android Release AAB
11883
working-directory: android
119-
run: |
120-
if [[ "${{ inputs.type }}" == "experimental" ]]; then
121-
./gradlew bundleExperimentalRelease
122-
fi
123-
if [[ "${{ inputs.type }}" == "official" ]]; then
124-
./gradlew bundleOfficialRelease
125-
fi
84+
run: ./gradlew bundleOfficialRelease
12685
shell: bash
12786

12887
- name: Upload sourcemaps/NDK symbols to Bugsnag
12988
run: |
130-
if [[ "${{ inputs.type }}" == "official" ]]; then
131-
pnpm bugsnag:upload-android --variant officialRelease --app-manifest android/app/build/intermediates/merged_manifests/officialRelease/processOfficialReleaseManifest/AndroidManifest.xml
132-
pnpm exec bugsnag-cli upload android-aab android/app/build/outputs/bundle/officialRelease/app-official-release.aab
133-
fi
134-
if [[ "${{ inputs.type }}" == "experimental" ]]; then
135-
pnpm bugsnag:upload-android --variant experimentalRelease --app-manifest android/app/build/intermediates/merged_manifests/experimentalRelease/processExperimentalReleaseManifest/AndroidManifest.xml
136-
pnpm exec bugsnag-cli upload android-aab android/app/build/outputs/bundle/experimentalRelease/app-experimental-release.aab
137-
fi
89+
pnpm bugsnag:upload-android --variant officialRelease --app-manifest android/app/build/intermediates/merged_manifests/officialRelease/processOfficialReleaseManifest/AndroidManifest.xml
90+
pnpm exec bugsnag-cli upload android-aab android/app/build/outputs/bundle/officialRelease/app-official-release.aab
13891
shell: bash
13992

140-
- name: Upload Experimental AAB
141-
if: ${{ inputs.type == 'experimental' }}
142-
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
143-
with:
144-
name: android-aab-experimental
145-
path: android/app/build/outputs/bundle/experimentalRelease/app-experimental-release.aab
146-
14793
- name: Upload Official AAB
148-
if: ${{ inputs.type == 'official' }}
14994
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
15095
with:
15196
name: android-aab-official
Lines changed: 7 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,12 @@
11
name: 'Build iOS'
22
description: 'Build iOS app'
33
inputs:
4-
type:
5-
description: 'Build type: official or experimental'
6-
required: true
74
BUILD_VERSION:
85
description: 'Build version'
96
required: true
107
APP_STORE_CONNECT_API_KEY_BASE64:
118
description: 'Base64 encoded App Store Connect API Key'
129
required: true
13-
BUGSNAG_KEY:
14-
description: 'Bugsnag API Key'
15-
required: true
1610
MATCH_KEYCHAIN_NAME:
1711
description: 'Match Keychain Name'
1812
required: true
@@ -37,9 +31,6 @@ inputs:
3731
GOOGLE_SERVICES_IOS:
3832
description: 'Google service file for official version'
3933
required: true
40-
GOOGLE_SERVICES_IOS_EXPERIMENTAL:
41-
description: 'Google service file for experimental version'
42-
required: true
4334

4435
runs:
4536
using: "composite"
@@ -85,43 +76,24 @@ runs:
8576
working-directory: ios
8677
run: |
8778
agvtool new-version -all ${{ inputs.BUILD_VERSION }}
88-
if [[ ${{ inputs.type }} == "official" ]]; then
89-
/usr/libexec/PlistBuddy -c "Set :bugsnag:apiKey ${{ inputs.BUGSNAG_KEY_OFFICIAL }}" ./RocketChatRN/Info.plist
90-
/usr/libexec/PlistBuddy -c "Set :bugsnag:apiKey ${{ inputs.BUGSNAG_KEY_OFFICIAL }}" ./ShareRocketChatRN/Info.plist
91-
/usr/libexec/PlistBuddy -c "Set IS_OFFICIAL YES" ./RocketChatRN/Info.plist
92-
/usr/libexec/PlistBuddy -c "Set IS_OFFICIAL YES" ./ShareRocketChatRN/Info.plist
93-
/usr/libexec/PlistBuddy -c "Set IS_OFFICIAL YES" ./NotificationService/Info.plist
94-
fi
95-
if [[ ${{ inputs.type }} == "experimental" ]]; then
96-
/usr/libexec/PlistBuddy -c "Set :bugsnag:apiKey ${{ inputs.BUGSNAG_KEY }}" ./RocketChatRN/Info.plist
97-
/usr/libexec/PlistBuddy -c "Set :bugsnag:apiKey ${{ inputs.BUGSNAG_KEY }}" ./ShareRocketChatRN/Info.plist
98-
/usr/libexec/PlistBuddy -c "Set IS_OFFICIAL NO" ./RocketChatRN/Info.plist
99-
/usr/libexec/PlistBuddy -c "Set IS_OFFICIAL NO" ./ShareRocketChatRN/Info.plist
100-
/usr/libexec/PlistBuddy -c "Set IS_OFFICIAL NO" ./NotificationService/Info.plist
101-
fi
79+
/usr/libexec/PlistBuddy -c "Set :bugsnag:apiKey ${{ inputs.BUGSNAG_KEY_OFFICIAL }}" ./RocketChatRN/Info.plist
80+
/usr/libexec/PlistBuddy -c "Set :bugsnag:apiKey ${{ inputs.BUGSNAG_KEY_OFFICIAL }}" ./ShareRocketChatRN/Info.plist
81+
/usr/libexec/PlistBuddy -c "Set IS_OFFICIAL YES" ./RocketChatRN/Info.plist
82+
/usr/libexec/PlistBuddy -c "Set IS_OFFICIAL YES" ./ShareRocketChatRN/Info.plist
83+
/usr/libexec/PlistBuddy -c "Set IS_OFFICIAL YES" ./NotificationService/Info.plist
10284
shell: bash
10385

10486
- name: Set Google Services
10587
working-directory: ios
10688
run: |
10789
if [[ $APP_STORE_CONNECT_API_KEY_BASE64 ]]; then
108-
if [[ ${{ inputs.type }} == "official" ]]; then
109-
echo ${{ inputs.GOOGLE_SERVICES_IOS }} | base64 --decode > GoogleService-Info.plist
110-
else
111-
echo ${{ inputs.GOOGLE_SERVICES_IOS_EXPERIMENTAL }} | base64 --decode > GoogleService-Info.plist
112-
fi
90+
echo ${{ inputs.GOOGLE_SERVICES_IOS }} | base64 --decode > GoogleService-Info.plist
11391
fi
11492
shell: bash
11593

11694
- name: Build iOS app
11795
working-directory: ios
118-
run: |
119-
if [[ ${{ inputs.type }} == "official" ]]; then
120-
bundle exec fastlane ios build_official
121-
fi
122-
if [[ ${{ inputs.type }} == "experimental" ]]; then
123-
bundle exec fastlane ios build_experimental
124-
fi
96+
run: bundle exec fastlane ios build_official
12597
env:
12698
MATCH_KEYCHAIN_NAME: ${{ inputs.MATCH_KEYCHAIN_NAME }}
12799
MATCH_KEYCHAIN_PASSWORD: ${{ inputs.MATCH_KEYCHAIN_PASSWORD }}
@@ -133,42 +105,18 @@ runs:
133105

134106
- name: Upload IPA artifact
135107
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
136-
if: ${{ inputs.type == 'experimental' }}
137-
with:
138-
name: ios-build-experimental
139-
path: ios/Rocket.Chat.ipa
140-
141-
- name: Upload IPA artifact
142-
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
143-
if: ${{ inputs.type == 'official' }}
144108
with:
145109
name: ios-build-official
146110
path: ios/Rocket.Chat.ipa
147111

148112
- name: Upload Rocket.Chat.app.dSYM.zip
149113
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
150-
if: ${{ inputs.type == 'experimental' }}
151-
with:
152-
name: ios-build-experimental-dSYM
153-
path: ios/Rocket.Chat.app.dSYM.zip
154-
155-
- name: Upload Rocket.Chat.app.dSYM.zip
156-
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
157-
if: ${{ inputs.type == 'official' }}
158114
with:
159115
name: ios-build-official-dSYM
160116
path: ios/Rocket.Chat.app.dSYM.zip
161117

162118
- name: Upload RocketChatRN/Info.plist
163119
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
164-
if: ${{ inputs.type == 'experimental' }}
165-
with:
166-
name: ios-build-experimental-info-plist
167-
path: ios/RocketChatRN/Info.plist
168-
169-
- name: Upload RocketChatRN/Info.plist
170-
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
171-
if: ${{ inputs.type == 'official' }}
172120
with:
173121
name: ios-build-official-info-plist
174122
path: ios/RocketChatRN/Info.plist

.github/actions/upload-android/action.yml

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
name: 'Upload Android'
22
description: 'Downloads AAB + Manifest, uploads to Play Store'
33
inputs:
4-
type:
5-
description: 'Build type: official or experimental'
6-
required: true
74
FASTLANE_GOOGLE_SERVICE_ACCOUNT:
85
description: 'Google service account key for upload'
96
required: true
@@ -17,19 +14,11 @@ inputs:
1714
description: 'Trigger for build'
1815
required: true
1916
default: pr
20-
17+
2118
runs:
2219
using: "composite"
2320
steps:
24-
- name: Download Experimental AAB
25-
if: ${{ inputs.type == 'experimental' }}
26-
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
27-
with:
28-
name: android-aab-experimental
29-
path: android/app/build/outputs/bundle/experimentalRelease/
30-
3121
- name: Download Official AAB
32-
if: ${{ inputs.type == 'official' }}
3322
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
3423
with:
3524
name: android-aab-official
@@ -72,34 +61,24 @@ runs:
7261
working-directory: android
7362
run: |
7463
if [[ ${{ inputs.trigger }} == "pr" ]]; then
75-
bundle exec fastlane android beta official:${{ inputs.type == 'official' }}
64+
bundle exec fastlane android beta
7665
fi
77-
if [[ ${{ inputs.trigger }} == "develop" ]] && [[ ${{ inputs.type }} == 'experimental' ]]; then
78-
bundle exec fastlane android experimental_production
79-
fi
80-
if [[ ${{ inputs.trigger }} == "develop" ]] && [[ ${{ inputs.type }} == 'official' ]]; then
66+
if [[ ${{ inputs.trigger }} == "develop" ]]; then
8167
bundle exec fastlane android official_open_testing
8268
fi
8369
shell: bash
84-
70+
8571
- name: Leave a comment on PR
8672
if: ${{ inputs.trigger == 'pr' }}
8773
env:
8874
GH_TOKEN: ${{ inputs.GITHUB_TOKEN }}
8975
PR_NUMBER: ${{ github.event.pull_request.number }}
90-
BUILD_TYPE: ${{ inputs.type }}
9176
BUILD_VERSION: ${{ inputs.BUILD_VERSION }}
9277
run: |
93-
if [[ "$BUILD_TYPE" == "official" ]]; then
94-
app_name="Rocket.Chat"
95-
else
96-
app_name="Rocket.Chat Experimental"
97-
fi
98-
9978
gradle_file="android/app/build.gradle"
10079
VERSION_NAME=$(grep versionName $gradle_file | head -n 1 | sed -E 's/.*versionName[[:space:]]+"([^"]+)".*/\1/')
10180
102-
version_info="$app_name $VERSION_NAME.$BUILD_VERSION"
81+
version_info="Rocket.Chat $VERSION_NAME.$BUILD_VERSION"
10382
10483
message="**Android Build Available**"$'\n\n'"$version_info"
10584

.github/actions/upload-internal-android/action.yml

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
name: 'Upload Android'
22
description: 'Downloads AAB + Manifest, uploads to Play Store'
33
inputs:
4-
type:
5-
description: 'Build type: official or experimental'
6-
required: true
74
FASTLANE_GOOGLE_SERVICE_ACCOUNT:
85
description: 'Google service account key for upload'
96
required: true
@@ -21,15 +18,7 @@ inputs:
2118
runs:
2219
using: "composite"
2320
steps:
24-
- name: Download Experimental AAB
25-
if: ${{ inputs.type == 'experimental' }}
26-
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
27-
with:
28-
name: android-aab-experimental
29-
path: android/app/build/outputs/bundle/experimentalRelease/
30-
3121
- name: Download Official AAB
32-
if: ${{ inputs.type == 'official' }}
3322
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
3423
with:
3524
name: android-aab-official
@@ -52,7 +41,7 @@ runs:
5241
working-directory: android
5342
run: |
5443
set -o pipefail
55-
output=$(bundle exec fastlane android internal_app_sharing official:${{ inputs.type == 'official' }} 2>&1 | sed -r "s/\x1B\[[0-9;]*[mK]//g")
44+
output=$(bundle exec fastlane android internal_app_sharing 2>&1 | sed -r "s/\x1B\[[0-9;]*[mK]//g")
5645
5746
echo "$output"
5847
@@ -78,21 +67,14 @@ runs:
7867
env:
7968
GH_TOKEN: ${{ inputs.GITHUB_TOKEN }}
8069
PR_NUMBER: ${{ github.event.pull_request.number }}
81-
BUILD_TYPE: ${{ inputs.type }}
8270
BUILD_VERSION: ${{ inputs.BUILD_VERSION }}
8371
run: |
8472
if [[ -z "$INTERNAL_SHARING_URL" ]]; then
8573
echo "No internal sharing URL found in env"
8674
exit 1
8775
fi
8876
89-
if [[ "$BUILD_TYPE" == "official" ]]; then
90-
app_name="Rocket.Chat"
91-
else
92-
app_name="Rocket.Chat Experimental"
93-
fi
94-
95-
version_info="$app_name $VERSION_NAME.$BUILD_VERSION"
77+
version_info="Rocket.Chat $VERSION_NAME.$BUILD_VERSION"
9678
9779
message="**Android Build Available**"$'\n\n'"$version_info"$'\n\n'"Internal App Sharing: $INTERNAL_SHARING_URL"
9880

0 commit comments

Comments
 (0)