react-native-nami-sdk 3.2.10 → 3.3.0-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/.prettierrc +4 -0
  2. package/README.md +9 -9
  3. package/android/README.md +3 -2
  4. package/android/build.gradle +27 -19
  5. package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  6. package/android/gradlew +0 -0
  7. package/android/src/main/AndroidManifest.xml +1 -1
  8. package/android/src/main/java/com/namiml/reactnative/Constants.kt +3 -0
  9. package/android/src/main/java/com/namiml/reactnative/NamiBridgeModule.kt +91 -0
  10. package/android/src/main/java/com/namiml/reactnative/NamiBridgePackage.java +140 -0
  11. package/android/src/main/java/com/{nami/reactlibrary → namiml/reactnative}/NamiCampaignManagerBridge.kt +26 -32
  12. package/android/src/main/java/com/{nami/reactlibrary → namiml/reactnative}/NamiCustomerManagerBridge.kt +14 -6
  13. package/android/src/main/java/com/{nami/reactlibrary/NamiEntitlementManagerBridgeModule.kt → namiml/reactnative/NamiEntitlementManagerBridge.kt} +18 -8
  14. package/android/src/main/java/com/namiml/reactnative/NamiFlowManagerBridge.kt +67 -0
  15. package/android/src/main/java/com/namiml/reactnative/NamiPaywallManagerBridgeModule.kt +196 -0
  16. package/android/src/main/java/com/namiml/reactnative/NamiPurchaseManagerBridge.kt +114 -0
  17. package/android/src/main/java/com/{nami/reactlibrary → namiml/reactnative}/NamiUtil.kt +26 -23
  18. package/{index.d.ts → dist/index.d.ts} +1 -2
  19. package/dist/specs/NativeNami.d.ts +15 -0
  20. package/dist/specs/NativeNamiCampaignManager.d.ts +82 -0
  21. package/dist/specs/NativeNamiCustomerManager.d.ts +29 -0
  22. package/dist/specs/NativeNamiEntitlementManager.d.ts +45 -0
  23. package/dist/specs/NativeNamiFlowManager.d.ts +8 -0
  24. package/dist/specs/NativeNamiPaywallManager.d.ts +71 -0
  25. package/dist/specs/NativeNamiPurchaseManager.d.ts +28 -0
  26. package/dist/src/Nami.d.ts +5 -0
  27. package/dist/src/NamiCampaignManager.d.ts +29 -0
  28. package/{src → dist/src}/NamiCustomerManager.d.ts +11 -13
  29. package/dist/src/NamiEntitlementManager.d.ts +13 -0
  30. package/dist/src/NamiFlowManager.d.ts +11 -0
  31. package/dist/src/NamiPaywallManager.d.ts +30 -0
  32. package/dist/src/NamiPurchaseManager.d.ts +17 -0
  33. package/dist/src/transformers.d.ts +3 -0
  34. package/{src → dist/src}/types.d.ts +41 -11
  35. package/dist/src/version.d.ts +5 -0
  36. package/index.ts +1 -2
  37. package/ios/Nami.m +8 -88
  38. package/ios/Nami.swift +85 -0
  39. package/ios/NamiCampaignManagerBridge.m +3 -3
  40. package/ios/NamiCampaignManagerBridge.swift +53 -64
  41. package/ios/NamiCustomerManager.m +2 -2
  42. package/ios/NamiCustomerManager.swift +13 -3
  43. package/ios/NamiEntitlementManagerBridge.m +2 -3
  44. package/ios/NamiEntitlementManagerBridge.swift +48 -39
  45. package/ios/NamiFlowManagerBridge.m +20 -0
  46. package/ios/NamiFlowManagerBridge.swift +57 -0
  47. package/ios/NamiPaywallManagerBridge.m +3 -3
  48. package/ios/NamiPaywallManagerBridge.swift +16 -6
  49. package/ios/NamiPurchaseManagerBridge.m +3 -2
  50. package/ios/NamiPurchaseManagerBridge.swift +15 -10
  51. package/ios/RNNami-Bridging-Header.h +1 -3
  52. package/package.json +20 -8
  53. package/react-native-config.js +9 -0
  54. package/react-native-nami-sdk.podspec +11 -3
  55. package/scripts/generate-version.ts +18 -0
  56. package/specs/NativeNami.ts +16 -0
  57. package/specs/NativeNamiCampaignManager.ts +94 -0
  58. package/specs/NativeNamiCustomerManager.ts +37 -0
  59. package/specs/NativeNamiEntitlementManager.ts +54 -0
  60. package/specs/NativeNamiFlowManager.ts +12 -0
  61. package/specs/NativeNamiPaywallManager.ts +85 -0
  62. package/specs/NativeNamiPurchaseManager.ts +33 -0
  63. package/src/Nami.ts +28 -18
  64. package/src/NamiCampaignManager.ts +57 -53
  65. package/src/NamiCustomerManager.ts +68 -58
  66. package/src/NamiEntitlementManager.ts +49 -36
  67. package/src/NamiFlowManager.ts +56 -0
  68. package/src/NamiPaywallManager.ts +84 -139
  69. package/src/NamiPurchaseManager.ts +69 -70
  70. package/src/transformers.ts +21 -0
  71. package/src/types.ts +39 -7
  72. package/src/version.ts +5 -0
  73. package/tsconfig.json +24 -22
  74. package/.eslintignore +0 -3
  75. package/.eslintrc.js +0 -52
  76. package/.github/workflows/CI.yaml +0 -335
  77. package/.github/workflows/app_prod.yaml +0 -357
  78. package/.github/workflows/app_stg.yaml +0 -362
  79. package/.github/workflows/build.yml +0 -70
  80. package/.pre-commit-config.yaml +0 -24
  81. package/.prettierrc.js +0 -7
  82. package/android/.project +0 -17
  83. package/android/.settings/org.eclipse.buildship.core.prefs +0 -13
  84. package/android/src/main/java/com/nami/reactlibrary/Constants.kt +0 -3
  85. package/android/src/main/java/com/nami/reactlibrary/NamiBridgeModule.kt +0 -141
  86. package/android/src/main/java/com/nami/reactlibrary/NamiBridgePackage.java +0 -50
  87. package/android/src/main/java/com/nami/reactlibrary/NamiMLManagerBridgeModule.kt +0 -58
  88. package/android/src/main/java/com/nami/reactlibrary/NamiManagerBridge.kt +0 -26
  89. package/android/src/main/java/com/nami/reactlibrary/NamiPaywallManagerBridgeModule.kt +0 -258
  90. package/android/src/main/java/com/nami/reactlibrary/NamiPurchaseManagerBridge.kt +0 -108
  91. package/build-utils/get_version_code.py +0 -140
  92. package/build-utils/preflight.py +0 -46
  93. package/ios/NamiMLManagerBridge.m +0 -93
  94. package/ios/NamiManager.m +0 -18
  95. package/ios/NamiManager.swift +0 -30
  96. package/ios/RNNami.h +0 -10
  97. package/ios/RNNami.m +0 -13
  98. package/ios/RNNami.xcodeproj/project.pbxproj +0 -365
  99. package/ios/RNNami.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  100. package/ios/RNNami.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  101. package/ios/RNNami.xcodeproj/xcshareddata/xcschemes/RNNami.xcscheme +0 -67
  102. package/ios/RNNami.xcworkspace/contents.xcworkspacedata +0 -7
  103. package/ios/RNNami.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  104. package/src/Nami.d.ts +0 -8
  105. package/src/NamiCampaignManager.d.ts +0 -18
  106. package/src/NamiEntitlementManager.d.ts +0 -15
  107. package/src/NamiMLManager.d.ts +0 -7
  108. package/src/NamiMLManager.ts +0 -13
  109. package/src/NamiManager.d.ts +0 -5
  110. package/src/NamiManager.ts +0 -14
  111. package/src/NamiPaywallManager.d.ts +0 -34
  112. package/src/NamiPurchaseManager.d.ts +0 -20
@@ -1,335 +0,0 @@
1
- name: CI PR Checks
2
-
3
- on: pull_request
4
-
5
- jobs:
6
- eslint:
7
- name: ESLint
8
- permissions:
9
- actions: write
10
- contents: write
11
- id-token: write
12
- runs-on: ubuntu-latest
13
- steps:
14
- - uses: actions/setup-node@v3
15
- with:
16
- node-version: "18"
17
-
18
- - name: 'Checkout ${{ inputs.ref }}'
19
- uses: actions/checkout@v3
20
- with:
21
- path: source
22
- ref: '${{ inputs.ref }}'
23
-
24
- - name: Install dependencies
25
- run: yarn --frozen-lockfile --prefer-offline
26
- working-directory: source/
27
-
28
- - name: Linter
29
- run: |
30
- npx eslint . --ext .js,.jsx,.ts,.tsx
31
- working-directory: source/
32
- tsc:
33
- name: Generate Declaration Files
34
- permissions:
35
- actions: write
36
- contents: write
37
- id-token: write
38
- runs-on: ubuntu-latest
39
- steps:
40
- - uses: actions/setup-node@v3
41
- with:
42
- node-version: "18"
43
-
44
- - name: 'Checkout ${{ inputs.ref }}'
45
- uses: actions/checkout@v3
46
- with:
47
- path: source
48
- ref: '${{ inputs.ref }}'
49
-
50
- - name: Install dependencies
51
- run: yarn --frozen-lockfile --prefer-offline
52
- working-directory: source/
53
-
54
- - name: Generate .d files
55
- run: |
56
- npx tsc
57
- working-directory: source/
58
- eslintapps:
59
- name: ESLint Sample Apps
60
- permissions:
61
- actions: write
62
- contents: write
63
- id-token: write
64
- runs-on: ubuntu-latest
65
- steps:
66
- - uses: actions/setup-node@v3
67
- with:
68
- node-version: "18"
69
-
70
- - name: 'Checkout ${{ inputs.ref }}'
71
- uses: actions/checkout@v3
72
- with:
73
- path: source
74
- ref: '${{ inputs.ref }}'
75
-
76
- - name: Install Basic app dependencies
77
- run: yarn --frozen-lockfile --prefer-offline
78
- working-directory: source/examples/Basic
79
-
80
- - name: Linter Basic
81
- run: |
82
- npx eslint . --ext .js,.jsx,.ts,.tsx
83
- working-directory: source/examples/Basic
84
-
85
- - name: Install TestNamiTV app dependencies
86
- run: yarn --frozen-lockfile --prefer-offline
87
- working-directory: source/examples/TestNamiTV
88
-
89
- - name: Linter TestNamiTV
90
- run: |
91
- npx eslint . --ext .js,.jsx,.ts,.tsx
92
- working-directory: source/examples/TestNamiTV
93
- e2e-ios:
94
- runs-on: macos-13
95
- env:
96
- DETOX_CONFIGURATION: ios.sim.release
97
-
98
- steps:
99
- - uses: actions/setup-node@v3
100
- with:
101
- node-version: 18
102
-
103
- - name: 'Checkout ${{ inputs.ref }}'
104
- uses: actions/checkout@v3
105
- with:
106
- path: source
107
- ref: '${{ inputs.ref }}'
108
-
109
- - name: Cache node_modules
110
- uses: actions/cache@v3
111
- id: cache
112
- with:
113
- path: source/examples/Basic/node_modules
114
- key: node-modules-${{ hashFiles('**/yarn.lock') }}
115
-
116
- - name: Install Yarn Dependencies
117
- run: yarn install
118
- working-directory: source/examples/Basic
119
-
120
- - name: Install macOS dependencies
121
- run: |
122
- brew tap wix/brew
123
- brew install applesimutils
124
- sudo gem install cocoapods
125
- gem install CFPropertyList
126
- env:
127
- # Speed up build could be updated 0/1 for full install
128
- HOMEBREW_NO_AUTO_UPDATE: 1
129
- HOMEBREW_NO_INSTALL_CLEANUP: 1
130
-
131
- - name: Update App Platform ID
132
- working-directory: source/examples/Basic/config/
133
- run: |
134
- sed -i '' -e "s/APPLE_PROD_APP_PLATFORM_ID/$BASIC_APPLE_PROD_APP_PLATFORM_ID/" index.ts
135
- env:
136
- BASIC_APPLE_PROD_APP_PLATFORM_ID: '${{ secrets.APPLE_PROD_APP_PLATFORM_ID }}'
137
-
138
- # - name: Cache Pods
139
- # uses: actions/cache@v3
140
- # id: podcache
141
- # with:
142
- # path: source/examples/Basic/ios
143
- # key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
144
- # restore-keys: |
145
- # ${{ runner.os }}-pods-
146
-
147
- - name: Clean node_modules tree
148
- run: rm -rf node_modules/react-native-nami-sdk/examples
149
- working-directory: source/examples/Basic
150
-
151
- - name: Install iOS pods
152
- run: RCT_NEW_ARCH_ENABLED=0 SWIFT_VERSION=5 pod install --repo-update
153
- working-directory: source/examples/Basic/ios
154
-
155
- - name: Rebuild cache detox
156
- run: yarn detox rebuild-framework-cache
157
- working-directory: source/examples/Basic
158
-
159
- - name: Cache Detox build
160
- id: cache-detox-build
161
- uses: actions/cache@v3
162
- with:
163
- path: source/examples/Basic/ios/Pods
164
- key: ${{ runner.os }}-detox-build
165
- restore-keys: |
166
- ${{ runner.os }}-detox-build
167
-
168
- - name: Detox build
169
- run: yarn detox build --configuration ${{ env.DETOX_CONFIGURATION }}
170
- working-directory: source/examples/Basic
171
-
172
- - name: Detox test
173
- run: |
174
- yarn start &
175
- METRO_BUNDLER_PID=$!
176
- yarn detox test --configuration ${{ env.DETOX_CONFIGURATION }} e2e/ios --cleanup --headless --record-logs all
177
- DETOX_EXIT_CODE=$?
178
- kill $METRO_BUNDLER_PID
179
- exit $DETOX_EXIT_CODE
180
- working-directory: source/examples/Basic
181
-
182
- - name: Upload artifacts
183
- if: failure()
184
- uses: actions/upload-artifact@v4
185
- with:
186
- name: detox-artifacts
187
- path: artifacts
188
- e2e-android:
189
- runs-on: macos-13
190
- env:
191
- DETOX_CONFIGURATION: android.emu.release
192
-
193
- steps:
194
- - name: Checkout repository
195
- uses: actions/checkout@v3
196
- with:
197
- path: source
198
- ref: '${{ inputs.ref }}'
199
-
200
- - name: Setup Node.js
201
- uses: actions/setup-node@v3
202
- with:
203
- node-version: "18"
204
-
205
- - name: Cache node_modules
206
- uses: actions/cache@v3
207
- id: cache
208
- with:
209
- path: source/examples/Basic/node_modules
210
- key: node-modules-${{ hashFiles('**/yarn.lock') }}
211
-
212
- - name: Install Yarn dependencies
213
- run: yarn install
214
- working-directory: source/examples/Basic
215
-
216
- - name: Setup Java
217
- uses: actions/setup-java@v3
218
- with:
219
- cache: gradle
220
- distribution: temurin
221
- java-version: 17
222
-
223
- - name: Update App Platform ID
224
- working-directory: source/examples/Basic/config/
225
- run: |
226
- sed -i '' -e "s/ANDROID_PROD_APP_PLATFORM_ID/$BASIC_ANDROID_PROD_APP_PLATFORM_ID/" index.ts
227
- env:
228
- BASIC_ANDROID_PROD_APP_PLATFORM_ID: '${{ secrets.ANDROID_PROD_APP_PLATFORM_ID }}'
229
-
230
- - name: Rebuild cache detox
231
- run: yarn detox rebuild-framework-cache
232
- working-directory: source/examples/Basic
233
-
234
- - name: Cache Detox build
235
- id: cache-detox-build
236
- uses: actions/cache@v3
237
- with:
238
- path: source/examples/Basic/android/app/build
239
- key: ${{ runner.os }}-detox-build
240
- restore-keys: |
241
- ${{ runner.os }}-detox-build
242
-
243
- - name: Detox build
244
- run: |
245
- rm -rf node_modules/react-native-nami-sdk/examples
246
- yarn detox build --configuration ${{ env.DETOX_CONFIGURATION }}
247
- working-directory: source/examples/Basic
248
-
249
- - name: Create the Keystore
250
- run: |
251
- # import keystore from secrets
252
- echo $KEYSTORE_BASE64 | base64 -d > $RUNNER_TEMP/my_production.keystore
253
- env:
254
- KEYSTORE_BASE64: '${{ secrets.KEY_STORE_BASE64 }}'
255
-
256
- - name: Encode the keystore to base64
257
- id: encode_keystore
258
- run: |
259
- echo "SIGNINGKEYBASE64=$(openssl base64 < $RUNNER_TEMP/my_production.keystore | tr -d '\n')" >> $GITHUB_ENV
260
-
261
- - name: Sign APK
262
- id: sign_apk
263
- uses: r0adkll/sign-android-release@v1
264
- with:
265
- releaseDirectory: source/examples/Basic/android/app/build/outputs/apk/production/release
266
- signingKeyBase64: ${{ env.SIGNINGKEYBASE64 }}
267
- alias: ${{ secrets.KEY_ALIAS }}
268
- keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
269
- keyPassword: ${{ secrets.KEY_PASSWORD }}
270
- env:
271
- BUILD_TOOLS_VERSION: "34.0.0"
272
-
273
- - name: Sign AndroidTest APK for Detox
274
- id: sign_androidTest_apk
275
- uses: r0adkll/sign-android-release@v1
276
- with:
277
- releaseDirectory: source/examples/Basic/android/app/build/outputs/apk/androidTest/production/release/
278
- signingKeyBase64: ${{ env.SIGNINGKEYBASE64 }}
279
- alias: ${{ secrets.KEY_ALIAS }}
280
- keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
281
- keyPassword: ${{ secrets.KEY_PASSWORD }}
282
- env:
283
- BUILD_TOOLS_VERSION: "34.0.0"
284
-
285
- - name: Get device name
286
- id: device
287
- run: node -e "console.log('AVD_NAME=' + require('./.detoxrc').devices.emulator.device.avdName)" >> $GITHUB_OUTPUT
288
- working-directory: source/examples/Basic
289
-
290
- # - name: Cache AVD snapshot
291
- # uses: actions/cache@v3
292
- # id: avd-cache
293
- # with:
294
- # path: |
295
- # ~/.android/avd/*
296
- # ~/.android/adb*
297
- # key: avd-30-aosp-atd
298
- #
299
- # - name: Create AVD and generate snapshot for caching
300
- # if: steps.avd-cache.outputs.cache-hit != 'true'
301
- # uses: reactivecircus/android-emulator-runner@v2
302
- # with:
303
- # target: aosp_atd
304
- # api-level: 30
305
- # arch: x86
306
- # channel: canary
307
- # profile: pixel
308
- # ram-size: 2048M
309
- # heapSize: 576M
310
- # # avd-name: ${{ steps.device.outputs.AVD_NAME }}
311
- # avd-name: Pixel_3a_API_30_AOSP
312
- # force-avd-creation: false
313
- # emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
314
- # disable-animations: false
315
- # script: echo "Generated AVD snapshot for caching"
316
- # working-directory: source/examples/Basic
317
-
318
- - name: Detox test
319
- uses: reactivecircus/android-emulator-runner@v2
320
- with:
321
- target: aosp_atd
322
- api-level: 30
323
- arch: x86
324
- channel: canary
325
- profile: pixel
326
- avd-name: Pixel_4_API_34
327
- script: yarn detox test --configuration ${{ env.DETOX_CONFIGURATION }} e2e/android --headless --record-logs all
328
- working-directory: source/examples/Basic
329
-
330
- - name: Upload artifacts
331
- if: failure()
332
- uses: actions/upload-artifact@v4
333
- with:
334
- name: detox-artifacts
335
- path: artifacts
@@ -1,357 +0,0 @@
1
- name: Generate Test React PROD
2
- env:
3
- DEVELOPER_DIR: /Applications/Xcode_15.0.1.app/Contents/Developer
4
- on:
5
- workflow_dispatch:
6
- inputs:
7
- ref:
8
- default: main
9
- description: "Git Tag, Branch or SHA to build"
10
- required: true
11
- secrets:
12
- BUILD_USER_PAT:
13
- required: true
14
-
15
- pull_request:
16
- types:
17
- - closed
18
- branches:
19
- - main
20
- secrets:
21
- BUILD_USER_PAT:
22
- required: true
23
-
24
- jobs:
25
- build-android-prod:
26
- name: Generate Play Store PROD
27
- permissions:
28
- actions: write
29
- contents: write
30
- id-token: write
31
- runs-on: ubuntu-latest
32
- steps:
33
- - uses: actions/setup-node@v3
34
- with:
35
- node-version: "18"
36
-
37
- - name: 'Checkout ${{ inputs.ref }}'
38
- uses: actions/checkout@v2
39
- with:
40
- path: source
41
- ref: '${{ inputs.ref }}'
42
-
43
- - name: Setup Java
44
- uses: actions/setup-java@v3
45
- with:
46
- cache: gradle
47
- distribution: temurin
48
- java-version: 17
49
-
50
- - name: Install Google API python client
51
- run: |
52
- pip install google-api-python-client
53
-
54
- - name: Get new version code
55
- run: |
56
- echo $GOOGLE_PLAY_SERVICE_ACCOUNT > $RUNNER_TEMP/.service_account
57
- python3 build-utils/get_version_code.py $RUNNER_TEMP/.service_account com.namiml.testreact.prod internal --quiet >> $RUNNER_TEMP/.new_version_code
58
- rm -f .service_account
59
- env:
60
- GOOGLE_PLAY_SERVICE_ACCOUNT: '${{ secrets.GOOGLE_PLAY_SERVICE_ACCOUNT }}'
61
- working-directory: source
62
-
63
- - name: Update version code
64
- working-directory: source/examples/Basic/android/app
65
- run: |
66
- NEW_VERSION_CODE=`cat $RUNNER_TEMP/.new_version_code`
67
- echo $NEW_VERSION_CODE
68
- sed -i "s/versionCode 1/versionCode $NEW_VERSION_CODE/" build.gradle
69
-
70
- - name: Create the Keystore
71
- run: |
72
- # import keystore from secrets
73
- echo $KEYSTORE_BASE64 | base64 -d > $RUNNER_TEMP/my_production.keystore
74
- env:
75
- KEYSTORE_BASE64: '${{ secrets.KEY_STORE_BASE64 }}'
76
-
77
- - name: Install test app dependencies
78
- run: |
79
- yarn install
80
- working-directory: source/examples/Basic
81
-
82
- - name: Update App Platform ID
83
- working-directory: source/examples/Basic/config/
84
- run: |
85
- sed -i "s/ANDROID_PROD_APP_PLATFORM_ID/$BASIC_ANDROID_PROD_APP_PLATFORM_ID/" index.ts
86
- env:
87
- BASIC_ANDROID_PROD_APP_PLATFORM_ID: '${{ secrets.ANDROID_PROD_APP_PLATFORM_ID }}'
88
-
89
- - name: Manually create the bundle
90
- run: |
91
- mkdir -p android/app/src/main/assets/
92
- npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle
93
- working-directory: source/examples/Basic
94
-
95
- - name: Build Android App Bundle
96
- run: |
97
- ./gradlew clean bundleProductionRelease
98
- working-directory: source/examples/Basic/android
99
-
100
- - name: Sign Android App Bundle
101
- run: |
102
- jarsigner -keystore $RUNNER_TEMP/my_production.keystore -storepass '${{ secrets.KEY_STORE_PASSWORD }}' -keypass '${{ secrets.KEY_PASSWORD }}' -sigalg SHA256withRSA -digestalg SHA-256 -signedjar build/outputs/bundle/productionRelease/app-production-release-signed.aab build/outputs/bundle/productionRelease/app-production-release.aab '${{ secrets.KEY_ALIAS }}'
103
- working-directory: source/examples/Basic/android/app
104
-
105
- - name: Uploading to test track
106
- uses: r0adkll/upload-google-play@v1.0.17
107
- with:
108
- packageName: 'com.namiml.testreact.prod'
109
- releaseFiles: source/examples/Basic/android/app/build/outputs/bundle/productionRelease/app-production-release-signed.aab
110
- serviceAccountJsonPlainText: '${{ secrets.GOOGLE_PLAY_SERVICE_ACCOUNT }}'
111
- status: completed
112
- track: internal
113
- build-ios-prod:
114
- name: Build TestNami iOS PROD
115
- permissions:
116
- actions: write
117
- contents: write
118
- id-token: write
119
- runs-on: macos-13
120
- timeout-minutes: 40
121
- steps:
122
- - uses: actions/setup-node@v3
123
- with:
124
- node-version: "18"
125
-
126
- - name: "Checkout ${{ inputs.ref }}"
127
- uses: actions/checkout@v2
128
- with:
129
- path: source
130
- ref: "${{ inputs.ref }}"
131
-
132
- - name: Checkout appstoreconnect-build-tools
133
- uses: actions/checkout@v2
134
- with:
135
- path: appstoreconnect-build-tools
136
- ref: main
137
- repository: namiml/appstoreconnect-build-tools
138
-
139
- - name: Set up Python
140
- uses: actions/setup-python@v1
141
- with:
142
- python-version: "3.10"
143
-
144
- - name: Get expected build number
145
- run: |
146
- pip3 install requests
147
- pip3 install pydantic==1.10.11
148
- pip3 install cryptography
149
- pip3 install PyJWT
150
- echo "1.0" > $RUNNER_TEMP/.current_version
151
- export CURRENT_VERSION=`cat $RUNNER_TEMP/.current_version`
152
- python3 get_next_build.py com.namiml.app.testreactnative --prerelease --version=$CURRENT_VERSION --platform=IOS > $RUNNER_TEMP/.next_build_number
153
- working-directory: appstoreconnect-build-tools
154
- env:
155
- APPSTORE_API_KEY_ID: "${{ secrets.APPSTORE_API_KEY_ID }}"
156
- APPSTORE_API_PRIVATE_KEY: "${{ secrets.APPSTORE_API_PRIVATE_KEY }}"
157
- APPSTORE_ISSUER_ID: "${{ secrets.APPSTORE_ISSUER_ID }}"
158
-
159
- - name: Install Apple Certificate
160
- uses: apple-actions/import-codesign-certs@v1
161
- with:
162
- p12-file-base64: "${{ secrets.IOS_P12_BASE64 }}"
163
- p12-password: "${{ secrets.IOS_CERTIFICATE_PASSWORD }}"
164
-
165
- - name: Install the provisioning profile
166
- run: |
167
- PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision
168
- echo -n "$PROVISIONING_CERTIFICATE_BASE64" | base64 --decode -o $PP_PATH
169
- mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
170
- cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles
171
- env:
172
- PROVISIONING_CERTIFICATE_BASE64: "${{ secrets.IOS_MOBILE_PROVISION_BASE64_TEST_REACT_PROD }}"
173
-
174
- - name: Store App Store Private Key
175
- run: |
176
- mkdir ~/.private_keys
177
- echo '${{ secrets.APPSTORE_API_PRIVATE_KEY }}' > ~/.private_keys/AuthKey_'${{ secrets.APPSTORE_API_KEY_ID }}'.p8
178
-
179
- - name: Update ExportOptions.plist
180
- run: |
181
- sed -i '' -e "s/APPSTORE_TEAM_ID/${{ secrets.APPSTORE_TEAM_ID }}/" ExportOptions.plist
182
- sed -i '' -e "s/APPSTORE_PROVISIONING_PROFILE_UUID/${{ secrets.APPSTORE_PROV_PROFILE_UUID_TEST_REACT_PROD }}/g" ExportOptions.plist
183
- working-directory: source/examples/Basic/ios
184
-
185
- - name: Adjust version & build number
186
- run: |-
187
- export CURRENT_VERSION=`cat $RUNNER_TEMP/.current_version`
188
- export BUILD_NUMBER=`cat $RUNNER_TEMP/.next_build_number`
189
- sed -i '' -e "s/CURRENT_PROJECT_VERSION = 1/CURRENT_PROJECT_VERSION = $BUILD_NUMBER/" ios/Basic.xcodeproj/project.pbxproj
190
- sed -i '' -e "s/MARKETING_VERSION = 1.0/MARKETING_VERSION = $CURRENT_VERSION/" ios/Basic.xcodeproj/project.pbxproj
191
- sed -i '' -e "s/<string>1<\/string>/<string>$BUILD_NUMBER<\/string>/" ios/Basic/Info.plist
192
- working-directory: source/examples/Basic
193
-
194
- - name: Install test app dependencies
195
- run: |
196
- yarn install
197
- working-directory: source/examples/Basic
198
-
199
- - name: Update App Platform ID
200
- working-directory: source/examples/Basic/config/
201
- run: |
202
- sed -i '' -e "s/APPLE_PROD_APP_PLATFORM_ID/$BASIC_APPLE_PROD_APP_PLATFORM_ID/" index.ts
203
- env:
204
- BASIC_APPLE_PROD_APP_PLATFORM_ID: '${{ secrets.APPLE_PROD_APP_PLATFORM_ID }}'
205
-
206
- - name: Install test iOS dependencies
207
- run: |
208
- pod install --repo-update
209
- working-directory: source/examples/Basic/ios
210
-
211
- - name: Build resolve Swift dependencies
212
- run: |
213
- xcodebuild -resolvePackageDependencies -workspace ios/Basic.xcworkspace -scheme BasicProduction -configuration Release
214
- working-directory: source/examples/Basic
215
-
216
- - name: Build xArchive
217
- run: |
218
- xcodebuild -workspace ios/Basic.xcworkspace -scheme BasicProduction -configuration Release DEVELOPMENT_TEAM='${{ secrets.APPSTORE_TEAM_ID }}' -sdk 'iphoneos' -destination 'generic/platform=iOS' -archivePath build-output/app-prod.xcarchive PROVISIONING_PROFILE='${{ secrets.APPSTORE_PROV_PROFILE_UUID_TEST_REACT_PROD }}' clean archive CODE_SIGN_IDENTITY='${{ secrets.CODE_SIGNING_IDENTITY }}'
219
- working-directory: source/examples/Basic
220
-
221
- - name: Export IPA
222
- run: |
223
- xcodebuild -exportArchive -archivePath build-output/app-prod.xcarchive -exportPath build-output/ios-prod -exportOptionsPlist ios/ExportOptions.plist
224
- working-directory: source/examples/Basic
225
-
226
- - name: Upload app to TestFlight
227
- run: |
228
- xcrun altool --upload-app --type ios --file build-output/ios-prod/BasicProduction.ipa --apiKey $APPSTORE_API_KEY_ID --apiIssuer $APPSTORE_ISSUER_ID
229
- working-directory: source/examples/Basic
230
- env:
231
- APPSTORE_API_KEY_ID: "${{ secrets.APPSTORE_API_KEY_ID }}"
232
- APPSTORE_ISSUER_ID: "${{ secrets.APPSTORE_ISSUER_ID }}"
233
- build-tvos-prod:
234
- name: Build TestNamiTV tvOS PROD
235
- permissions:
236
- actions: write
237
- contents: write
238
- id-token: write
239
- runs-on: macos-13
240
- timeout-minutes: 40
241
- steps:
242
- - uses: actions/setup-node@v3
243
- with:
244
- node-version: "18"
245
-
246
- - name: "Checkout ${{ inputs.ref }}"
247
- uses: actions/checkout@v2
248
- with:
249
- path: source
250
- ref: "${{ inputs.ref }}"
251
-
252
- - name: Checkout appstoreconnect-build-tools
253
- uses: actions/checkout@v2
254
- with:
255
- path: appstoreconnect-build-tools
256
- ref: main
257
- repository: namiml/appstoreconnect-build-tools
258
-
259
- - name: Set up Python
260
- uses: actions/setup-python@v1
261
- with:
262
- python-version: "3.10"
263
-
264
- - name: Get expected build number
265
- run: |
266
- pip3 install requests
267
- pip3 install pydantic==1.10.11
268
- pip3 install cryptography
269
- pip3 install PyJWT
270
- echo "1.0" > $RUNNER_TEMP/.current_version
271
- export CURRENT_VERSION=`cat $RUNNER_TEMP/.current_version`
272
- python3 get_next_build.py com.namiml.app.testreactnative --prerelease --platform=TV_OS > $RUNNER_TEMP/.next_build_number
273
- working-directory: appstoreconnect-build-tools
274
- env:
275
- APPSTORE_API_KEY_ID: "${{ secrets.APPSTORE_API_KEY_ID }}"
276
- APPSTORE_API_PRIVATE_KEY: "${{ secrets.APPSTORE_API_PRIVATE_KEY }}"
277
- APPSTORE_ISSUER_ID: "${{ secrets.APPSTORE_ISSUER_ID }}"
278
-
279
- - name: Install Apple Certificate
280
- uses: apple-actions/import-codesign-certs@v1
281
- with:
282
- p12-file-base64: "${{ secrets.IOS_P12_BASE64 }}"
283
- p12-password: "${{ secrets.IOS_CERTIFICATE_PASSWORD }}"
284
-
285
- - name: Install the provisioning profile
286
- run: |
287
- PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision
288
- echo -n "$PROVISIONING_CERTIFICATE_BASE64" | base64 --decode -o $PP_PATH
289
- mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
290
- cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles
291
- env:
292
- PROVISIONING_CERTIFICATE_BASE64: "${{ secrets.IOS_MOBILE_PROVISION_BASE64_TEST_REACT_TVOS_PROD }}"
293
-
294
- - name: Store App Store Private Key
295
- run: |
296
- mkdir ~/.private_keys
297
- echo '${{ secrets.APPSTORE_API_PRIVATE_KEY }}' > ~/.private_keys/AuthKey_'${{ secrets.APPSTORE_API_KEY_ID }}'.p8
298
-
299
- - name: Update ExportOptions.plist
300
- run: |
301
- sed -i '' -e "s/APPSTORE_TEAM_ID/${{ secrets.APPSTORE_TEAM_ID }}/" ExportOptions.plist
302
- sed -i '' -e "s/APPSTORE_PROVISIONING_PROFILE_UUID/${{ secrets.APPSTORE_PROV_PROFILE_UUID_TEST_REACT_TVOS_PROD }}/g" ExportOptions.plist
303
- working-directory: source/examples/TestNamiTV/ios
304
-
305
- - name: Adjust version & build number
306
- run: |-
307
- export CURRENT_VERSION=`cat $RUNNER_TEMP/.current_version`
308
- export BUILD_NUMBER=`cat $RUNNER_TEMP/.next_build_number`
309
- sed -i '' -e "s/CURRENT_PROJECT_VERSION = 1/CURRENT_PROJECT_VERSION = $BUILD_NUMBER/" ios/Basic.xcodeproj/project.pbxproj
310
- sed -i '' -e "s/MARKETING_VERSION = 1.0/MARKETING_VERSION = $CURRENT_VERSION/" ios/Basic.xcodeproj/project.pbxproj
311
- sed -i '' -e "s/<string>1<\/string>/<string>$BUILD_NUMBER<\/string>/" ios/Info-PROD.plist
312
- working-directory: source/examples/TestNamiTV
313
-
314
- - name: Install test app dependencies
315
- run: |
316
- yarn install
317
- working-directory: source/examples/TestNamiTV
318
-
319
- - name: Update App Platform ID
320
- working-directory: source/examples/TestNamiTV/config/
321
- run: |
322
- sed -i '' -e "s/APPLE_PROD_APP_PLATFORM_ID/$TESTNAMITV_APPLE_PROD_APP_PLATFORM_ID/" index.ts
323
- env:
324
- TESTNAMITV_APPLE_PROD_APP_PLATFORM_ID: '${{ secrets.APPLE_PROD_APP_PLATFORM_ID }}'
325
-
326
- - name: Install test tvOS dependencies
327
- run: |
328
- RCT_NEW_ARCH_ENABLED=0 SWIFT_VERSION=5 pod install --repo-update
329
- working-directory: source/examples/TestNamiTV/ios
330
-
331
- - name: Apply Patches
332
- run: |
333
- patch -p0 < *.patch
334
- working-directory: source/examples/TestNamiTV/patches
335
-
336
- - name: Build resolve Swift dependencies
337
- run: |
338
- xcodebuild -resolvePackageDependencies -workspace ios/Basic.xcworkspace -scheme Basic-tvOS-PROD -configuration Release
339
- working-directory: source/examples/TestNamiTV
340
-
341
- - name: Build xArchive
342
- run: |
343
- xcodebuild -workspace ios/Basic.xcworkspace -scheme Basic-tvOS-PROD -configuration Release DEVELOPMENT_TEAM='${{ secrets.APPSTORE_TEAM_ID }}' -sdk 'appletvos' -destination 'generic/platform=tvOS' -archivePath build-output/app-prod.xcarchive PROVISIONING_PROFILE='${{ secrets.APPSTORE_PROV_PROFILE_UUID_TEST_REACT_TVOS_PROD }}' clean archive CODE_SIGN_IDENTITY='${{ secrets.CODE_SIGNING_IDENTITY }}'
344
- working-directory: source/examples/TestNamiTV
345
-
346
- - name: Export IPA
347
- run: |
348
- xcodebuild -exportArchive -archivePath build-output/app-prod.xcarchive -exportPath build-output/tvos-prod -exportOptionsPlist ios/ExportOptions.plist
349
- working-directory: source/examples/TestNamiTV
350
-
351
- - name: Upload app to TestFlight
352
- run: |
353
- xcrun altool --upload-app --type tvos --file build-output/tvos-prod/Basic-tvOS-PROD.ipa --apiKey $APPSTORE_API_KEY_ID --apiIssuer $APPSTORE_ISSUER_ID
354
- working-directory: source/examples/TestNamiTV
355
- env:
356
- APPSTORE_API_KEY_ID: "${{ secrets.APPSTORE_API_KEY_ID }}"
357
- APPSTORE_ISSUER_ID: "${{ secrets.APPSTORE_ISSUER_ID }}"