@planu/cli 0.97.1 → 0.98.0
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.
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +1 -1
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/config/license-plans.json +6 -2
- package/dist/config/mobile-ci-templates/android-github-actions.yml +149 -0
- package/dist/config/mobile-ci-templates/ios-github-actions.yml +120 -0
- package/dist/engine/api-validation/graphql-schema-validator.d.ts +3 -0
- package/dist/engine/api-validation/graphql-schema-validator.d.ts.map +1 -0
- package/dist/engine/api-validation/graphql-schema-validator.js +134 -0
- package/dist/engine/api-validation/graphql-schema-validator.js.map +1 -0
- package/dist/engine/api-validation/index.d.ts +3 -0
- package/dist/engine/api-validation/index.d.ts.map +1 -0
- package/dist/engine/api-validation/index.js +4 -0
- package/dist/engine/api-validation/index.js.map +1 -0
- package/dist/engine/api-validation/openapi-impl-validator.d.ts +3 -0
- package/dist/engine/api-validation/openapi-impl-validator.d.ts.map +1 -0
- package/dist/engine/api-validation/openapi-impl-validator.js +205 -0
- package/dist/engine/api-validation/openapi-impl-validator.js.map +1 -0
- package/dist/engine/ci-generator/android-jobs.d.ts +17 -0
- package/dist/engine/ci-generator/android-jobs.d.ts.map +1 -0
- package/dist/engine/ci-generator/android-jobs.js +168 -0
- package/dist/engine/ci-generator/android-jobs.js.map +1 -0
- package/dist/engine/ci-generator/ios-jobs.d.ts +17 -0
- package/dist/engine/ci-generator/ios-jobs.d.ts.map +1 -0
- package/dist/engine/ci-generator/ios-jobs.js +151 -0
- package/dist/engine/ci-generator/ios-jobs.js.map +1 -0
- package/dist/engine/ci-generator/yaml-builder.d.ts +10 -1
- package/dist/engine/ci-generator/yaml-builder.d.ts.map +1 -1
- package/dist/engine/ci-generator/yaml-builder.js +46 -1
- package/dist/engine/ci-generator/yaml-builder.js.map +1 -1
- package/dist/engine/compliance-checker.js +3 -0
- package/dist/engine/compliance-checker.js.map +1 -1
- package/dist/engine/coverage-gap-analyzer.d.ts +6 -0
- package/dist/engine/coverage-gap-analyzer.d.ts.map +1 -0
- package/dist/engine/coverage-gap-analyzer.js +177 -0
- package/dist/engine/coverage-gap-analyzer.js.map +1 -0
- package/dist/engine/dashboard/templates-kanban.d.ts.map +1 -1
- package/dist/engine/dashboard/templates-kanban.js +22 -0
- package/dist/engine/dashboard/templates-kanban.js.map +1 -1
- package/dist/engine/dashboard/templates-layout.d.ts.map +1 -1
- package/dist/engine/dashboard/templates-layout.js +59 -7
- package/dist/engine/dashboard/templates-layout.js.map +1 -1
- package/dist/engine/doc-generator/portal/portal-regenerator.d.ts.map +1 -1
- package/dist/engine/doc-generator/portal/portal-regenerator.js +7 -17
- package/dist/engine/doc-generator/portal/portal-regenerator.js.map +1 -1
- package/dist/engine/hooks/event-bus.d.ts +5 -0
- package/dist/engine/hooks/event-bus.d.ts.map +1 -1
- package/dist/engine/hooks/event-bus.js +14 -1
- package/dist/engine/hooks/event-bus.js.map +1 -1
- package/dist/engine/hooks/hook-engine.d.ts.map +1 -1
- package/dist/engine/hooks/hook-engine.js +1 -0
- package/dist/engine/hooks/hook-engine.js.map +1 -1
- package/dist/engine/hooks-reconciler.d.ts.map +1 -1
- package/dist/engine/hooks-reconciler.js +24 -35
- package/dist/engine/hooks-reconciler.js.map +1 -1
- package/dist/engine/jira-exporter.d.ts.map +1 -1
- package/dist/engine/jira-exporter.js +1 -0
- package/dist/engine/jira-exporter.js.map +1 -1
- package/dist/engine/mutation-config-generator.d.ts +6 -0
- package/dist/engine/mutation-config-generator.d.ts.map +1 -0
- package/dist/engine/mutation-config-generator.js +111 -0
- package/dist/engine/mutation-config-generator.js.map +1 -0
- package/dist/engine/skill-evaluator.d.ts.map +1 -1
- package/dist/engine/skill-evaluator.js +18 -0
- package/dist/engine/skill-evaluator.js.map +1 -1
- package/dist/engine/spec-quality-scorer.d.ts.map +1 -1
- package/dist/engine/spec-quality-scorer.js +10 -2
- package/dist/engine/spec-quality-scorer.js.map +1 -1
- package/dist/engine/tdd-scaffold-generator.d.ts +7 -0
- package/dist/engine/tdd-scaffold-generator.d.ts.map +1 -0
- package/dist/engine/tdd-scaffold-generator.js +252 -0
- package/dist/engine/tdd-scaffold-generator.js.map +1 -0
- package/dist/engine/token-optimizer/response-cache.d.ts.map +1 -1
- package/dist/engine/token-optimizer/response-cache.js +7 -2
- package/dist/engine/token-optimizer/response-cache.js.map +1 -1
- package/dist/engine/version-resolver.d.ts +10 -0
- package/dist/engine/version-resolver.d.ts.map +1 -0
- package/dist/engine/version-resolver.js +144 -0
- package/dist/engine/version-resolver.js.map +1 -0
- package/dist/engine/web-fetcher/stack-advisor.d.ts.map +1 -1
- package/dist/engine/web-fetcher/stack-advisor.js +32 -4
- package/dist/engine/web-fetcher/stack-advisor.js.map +1 -1
- package/dist/engine/webhook/server.d.ts.map +1 -1
- package/dist/engine/webhook/server.js +3 -0
- package/dist/engine/webhook/server.js.map +1 -1
- package/dist/index.js +7 -11
- package/dist/index.js.map +1 -1
- package/dist/storage/base-store.d.ts.map +1 -1
- package/dist/storage/base-store.js +2 -1
- package/dist/storage/base-store.js.map +1 -1
- package/dist/tools/checkpoint-handler.d.ts.map +1 -1
- package/dist/tools/checkpoint-handler.js +24 -1
- package/dist/tools/checkpoint-handler.js.map +1 -1
- package/dist/tools/dashboard.d.ts.map +1 -1
- package/dist/tools/dashboard.js +2 -0
- package/dist/tools/dashboard.js.map +1 -1
- package/dist/tools/register-spec-322-tools.d.ts +3 -0
- package/dist/tools/register-spec-322-tools.d.ts.map +1 -0
- package/dist/tools/register-spec-322-tools.js +41 -0
- package/dist/tools/register-spec-322-tools.js.map +1 -0
- package/dist/tools/register-spec-323-tools.d.ts +3 -0
- package/dist/tools/register-spec-323-tools.d.ts.map +1 -0
- package/dist/tools/register-spec-323-tools.js +57 -0
- package/dist/tools/register-spec-323-tools.js.map +1 -0
- package/dist/tools/resolve-project-id.d.ts.map +1 -1
- package/dist/tools/resolve-project-id.js +6 -1
- package/dist/tools/resolve-project-id.js.map +1 -1
- package/dist/tools/tdd-scaffold-handler.d.ts +5 -0
- package/dist/tools/tdd-scaffold-handler.d.ts.map +1 -0
- package/dist/tools/tdd-scaffold-handler.js +92 -0
- package/dist/tools/tdd-scaffold-handler.js.map +1 -0
- package/dist/tools/update-status/index.d.ts.map +1 -1
- package/dist/tools/update-status/index.js +8 -2
- package/dist/tools/update-status/index.js.map +1 -1
- package/dist/tools/validate-api-contract-handler.d.ts +3 -0
- package/dist/tools/validate-api-contract-handler.d.ts.map +1 -0
- package/dist/tools/validate-api-contract-handler.js +74 -0
- package/dist/tools/validate-api-contract-handler.js.map +1 -0
- package/dist/tools/validate.d.ts.map +1 -1
- package/dist/tools/validate.js +22 -2
- package/dist/tools/validate.js.map +1 -1
- package/dist/types/api-contract.d.ts +58 -0
- package/dist/types/api-contract.d.ts.map +1 -1
- package/dist/types/ci.d.ts +8 -0
- package/dist/types/ci.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/testing.d.ts +60 -0
- package/dist/types/testing.d.ts.map +1 -1
- package/dist/types/version-resolution.d.ts +23 -0
- package/dist/types/version-resolution.d.ts.map +1 -0
- package/dist/types/version-resolution.js +3 -0
- package/dist/types/version-resolution.js.map +1 -0
- package/package.json +1 -1
- package/src/config/license-plans.json +6 -2
- package/src/config/mobile-ci-templates/android-github-actions.yml +149 -0
- package/src/config/mobile-ci-templates/ios-github-actions.yml +120 -0
|
@@ -87,7 +87,8 @@
|
|
|
87
87
|
"check_spec_lock",
|
|
88
88
|
"configure_desktop_notifications",
|
|
89
89
|
"desktop_notification_status",
|
|
90
|
-
"test_notification"
|
|
90
|
+
"test_notification",
|
|
91
|
+
"tdd_scaffold"
|
|
91
92
|
],
|
|
92
93
|
"proTools": [
|
|
93
94
|
"audit",
|
|
@@ -273,7 +274,10 @@
|
|
|
273
274
|
"configure_compliance",
|
|
274
275
|
"apply_spec_template",
|
|
275
276
|
"publish_spec_template",
|
|
276
|
-
"search_spec_templates"
|
|
277
|
+
"search_spec_templates",
|
|
278
|
+
"validate_api_contract",
|
|
279
|
+
"coverage_gap_analyzer",
|
|
280
|
+
"run_mutation_hints"
|
|
277
281
|
],
|
|
278
282
|
"alwaysAllowed": [
|
|
279
283
|
"activate_license",
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
name: Android CI/CD
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, develop]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main, develop]
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
|
|
12
|
+
android-test:
|
|
13
|
+
name: Android — Gradle Unit Tests
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- name: Checkout code
|
|
17
|
+
uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- name: Setup JDK
|
|
20
|
+
uses: actions/setup-java@v4
|
|
21
|
+
with:
|
|
22
|
+
java-version: '17'
|
|
23
|
+
distribution: temurin
|
|
24
|
+
|
|
25
|
+
- name: Cache Gradle packages
|
|
26
|
+
uses: actions/cache@v4
|
|
27
|
+
with:
|
|
28
|
+
path: |
|
|
29
|
+
~/.gradle/caches
|
|
30
|
+
~/.gradle/wrapper
|
|
31
|
+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
|
32
|
+
restore-keys: ${{ runner.os }}-gradle-
|
|
33
|
+
|
|
34
|
+
- name: Grant Gradle execute permission
|
|
35
|
+
run: chmod +x gradlew
|
|
36
|
+
|
|
37
|
+
- name: Run unit tests
|
|
38
|
+
run: ./gradlew :{{module}}:testDebugUnitTest
|
|
39
|
+
|
|
40
|
+
- name: Upload test reports
|
|
41
|
+
uses: actions/upload-artifact@v4
|
|
42
|
+
with:
|
|
43
|
+
name: test-results
|
|
44
|
+
path: '{{module}}/build/reports/tests/'
|
|
45
|
+
if-no-files-found: warn
|
|
46
|
+
|
|
47
|
+
android-sign:
|
|
48
|
+
name: Android — Sign Release AAB
|
|
49
|
+
runs-on: ubuntu-latest
|
|
50
|
+
needs: android-test
|
|
51
|
+
if: github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/main'
|
|
52
|
+
env:
|
|
53
|
+
KEYSTORE_FILE: ${{ secrets.KEYSTORE_FILE }}
|
|
54
|
+
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
|
|
55
|
+
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
|
|
56
|
+
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
|
57
|
+
steps:
|
|
58
|
+
- name: Checkout code
|
|
59
|
+
uses: actions/checkout@v4
|
|
60
|
+
|
|
61
|
+
- name: Setup JDK
|
|
62
|
+
uses: actions/setup-java@v4
|
|
63
|
+
with:
|
|
64
|
+
java-version: '17'
|
|
65
|
+
distribution: temurin
|
|
66
|
+
|
|
67
|
+
- name: Cache Gradle packages
|
|
68
|
+
uses: actions/cache@v4
|
|
69
|
+
with:
|
|
70
|
+
path: |
|
|
71
|
+
~/.gradle/caches
|
|
72
|
+
~/.gradle/wrapper
|
|
73
|
+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
|
74
|
+
restore-keys: ${{ runner.os }}-gradle-
|
|
75
|
+
|
|
76
|
+
- name: Grant Gradle execute permission
|
|
77
|
+
run: chmod +x gradlew
|
|
78
|
+
|
|
79
|
+
- name: Decode keystore
|
|
80
|
+
run: echo "$KEYSTORE_FILE" | base64 --decode > keystore.jks
|
|
81
|
+
env:
|
|
82
|
+
KEYSTORE_FILE: ${{ secrets.KEYSTORE_FILE }}
|
|
83
|
+
|
|
84
|
+
- name: Build signed release AAB
|
|
85
|
+
run: |
|
|
86
|
+
./gradlew :{{module}}:bundleRelease \
|
|
87
|
+
-Pandroid.injected.signing.store.file=$(pwd)/keystore.jks \
|
|
88
|
+
-Pandroid.injected.signing.store.password="$KEYSTORE_PASSWORD" \
|
|
89
|
+
-Pandroid.injected.signing.key.alias="$KEY_ALIAS" \
|
|
90
|
+
-Pandroid.injected.signing.key.password="$KEY_PASSWORD"
|
|
91
|
+
env:
|
|
92
|
+
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
|
|
93
|
+
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
|
|
94
|
+
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
|
95
|
+
|
|
96
|
+
- name: Upload signed AAB
|
|
97
|
+
uses: actions/upload-artifact@v4
|
|
98
|
+
with:
|
|
99
|
+
name: release-aab
|
|
100
|
+
path: '{{module}}/build/outputs/bundle/release/*.aab'
|
|
101
|
+
|
|
102
|
+
android-deploy:
|
|
103
|
+
name: Android — Play Console Deploy
|
|
104
|
+
runs-on: ubuntu-latest
|
|
105
|
+
needs: android-sign
|
|
106
|
+
if: github.ref == 'refs/heads/main'
|
|
107
|
+
env:
|
|
108
|
+
PLAY_STORE_JSON_KEY: ${{ secrets.PLAY_STORE_JSON_KEY }}
|
|
109
|
+
steps:
|
|
110
|
+
- name: Checkout code
|
|
111
|
+
uses: actions/checkout@v4
|
|
112
|
+
|
|
113
|
+
- name: Download signed AAB
|
|
114
|
+
uses: actions/download-artifact@v4
|
|
115
|
+
with:
|
|
116
|
+
name: release-aab
|
|
117
|
+
path: ./release
|
|
118
|
+
|
|
119
|
+
- name: Setup Ruby for Fastlane
|
|
120
|
+
uses: ruby/setup-ruby@v1
|
|
121
|
+
with:
|
|
122
|
+
ruby-version: 'bundler-cache: true'
|
|
123
|
+
|
|
124
|
+
- name: Install Fastlane
|
|
125
|
+
run: gem install fastlane --no-document
|
|
126
|
+
|
|
127
|
+
- name: Decode Play Store JSON key
|
|
128
|
+
run: echo "$PLAY_STORE_JSON_KEY" > play-store-key.json
|
|
129
|
+
env:
|
|
130
|
+
PLAY_STORE_JSON_KEY: ${{ secrets.PLAY_STORE_JSON_KEY }}
|
|
131
|
+
|
|
132
|
+
- name: Upload to Play Console (internal track)
|
|
133
|
+
run: |
|
|
134
|
+
fastlane supply \
|
|
135
|
+
--aab ./release/{{module}}/build/outputs/bundle/release/*.aab \
|
|
136
|
+
--package_name "{{bundleId}}" \
|
|
137
|
+
--track internal \
|
|
138
|
+
--json_key ./play-store-key.json
|
|
139
|
+
|
|
140
|
+
# Required GitHub Secrets:
|
|
141
|
+
# KEYSTORE_FILE — Base64-encoded .jks keystore file
|
|
142
|
+
# KEYSTORE_PASSWORD — Password for the keystore file
|
|
143
|
+
# KEY_ALIAS — Alias of the signing key in the keystore
|
|
144
|
+
# KEY_PASSWORD — Password for the signing key
|
|
145
|
+
# PLAY_STORE_JSON_KEY — JSON content of the Google Play service account key
|
|
146
|
+
#
|
|
147
|
+
# Placeholders:
|
|
148
|
+
# {{module}} — Gradle module name (e.g. app)
|
|
149
|
+
# {{bundleId}} — Android application ID (e.g. com.example.myapp)
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
name: iOS CI/CD
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, develop]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main, develop]
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
|
|
12
|
+
ios-test:
|
|
13
|
+
name: iOS — Xcode Build & Test
|
|
14
|
+
runs-on: macos-latest
|
|
15
|
+
env:
|
|
16
|
+
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
|
|
17
|
+
APPLE_API_ISSUER_ID: ${{ secrets.APPLE_API_ISSUER_ID }}
|
|
18
|
+
APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
|
|
19
|
+
steps:
|
|
20
|
+
- name: Checkout code
|
|
21
|
+
uses: actions/checkout@v4
|
|
22
|
+
|
|
23
|
+
- name: Select Xcode version
|
|
24
|
+
run: sudo xcode-select -s /Applications/Xcode.app
|
|
25
|
+
|
|
26
|
+
- name: Build and test (Xcode)
|
|
27
|
+
run: |
|
|
28
|
+
xcodebuild clean build test \
|
|
29
|
+
-scheme "{{scheme}}" \
|
|
30
|
+
-destination 'platform=iOS Simulator,name=iPhone 15,OS=latest' \
|
|
31
|
+
CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO \
|
|
32
|
+
| xcpretty && exit "${PIPESTATUS[0]}"
|
|
33
|
+
|
|
34
|
+
ios-testflight:
|
|
35
|
+
name: iOS — TestFlight Upload
|
|
36
|
+
runs-on: macos-latest
|
|
37
|
+
needs: ios-test
|
|
38
|
+
if: github.ref == 'refs/heads/develop'
|
|
39
|
+
env:
|
|
40
|
+
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
|
|
41
|
+
APPLE_API_ISSUER_ID: ${{ secrets.APPLE_API_ISSUER_ID }}
|
|
42
|
+
APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
|
|
43
|
+
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
|
|
44
|
+
steps:
|
|
45
|
+
- name: Checkout code
|
|
46
|
+
uses: actions/checkout@v4
|
|
47
|
+
|
|
48
|
+
- name: Select Xcode version
|
|
49
|
+
run: sudo xcode-select -s /Applications/Xcode.app
|
|
50
|
+
|
|
51
|
+
- name: Setup Ruby for Fastlane
|
|
52
|
+
uses: ruby/setup-ruby@v1
|
|
53
|
+
with:
|
|
54
|
+
ruby-version: 'bundler-cache: true'
|
|
55
|
+
|
|
56
|
+
- name: Install Fastlane
|
|
57
|
+
run: gem install fastlane --no-document
|
|
58
|
+
|
|
59
|
+
- name: Build IPA
|
|
60
|
+
run: |
|
|
61
|
+
fastlane gym \
|
|
62
|
+
--scheme "{{scheme}}" \
|
|
63
|
+
--export_method app-store \
|
|
64
|
+
--output_directory ./build
|
|
65
|
+
env:
|
|
66
|
+
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
|
|
67
|
+
|
|
68
|
+
- name: Upload to TestFlight
|
|
69
|
+
run: fastlane pilot upload --ipa ./build/*.ipa --skip_waiting_for_build_processing true
|
|
70
|
+
|
|
71
|
+
ios-appstore:
|
|
72
|
+
name: iOS — App Store Submission
|
|
73
|
+
runs-on: macos-latest
|
|
74
|
+
needs: ios-test
|
|
75
|
+
if: github.ref == 'refs/heads/main'
|
|
76
|
+
env:
|
|
77
|
+
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
|
|
78
|
+
APPLE_API_ISSUER_ID: ${{ secrets.APPLE_API_ISSUER_ID }}
|
|
79
|
+
APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
|
|
80
|
+
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
|
|
81
|
+
steps:
|
|
82
|
+
- name: Checkout code
|
|
83
|
+
uses: actions/checkout@v4
|
|
84
|
+
|
|
85
|
+
- name: Select Xcode version
|
|
86
|
+
run: sudo xcode-select -s /Applications/Xcode.app
|
|
87
|
+
|
|
88
|
+
- name: Setup Ruby for Fastlane
|
|
89
|
+
uses: ruby/setup-ruby@v1
|
|
90
|
+
with:
|
|
91
|
+
ruby-version: 'bundler-cache: true'
|
|
92
|
+
|
|
93
|
+
- name: Install Fastlane
|
|
94
|
+
run: gem install fastlane --no-document
|
|
95
|
+
|
|
96
|
+
- name: Build IPA (production)
|
|
97
|
+
run: |
|
|
98
|
+
fastlane gym \
|
|
99
|
+
--scheme "{{scheme}}" \
|
|
100
|
+
--configuration Release \
|
|
101
|
+
--export_method app-store \
|
|
102
|
+
--output_directory ./build
|
|
103
|
+
env:
|
|
104
|
+
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
|
|
105
|
+
|
|
106
|
+
- name: Submit to App Store
|
|
107
|
+
run: |
|
|
108
|
+
fastlane deliver \
|
|
109
|
+
--ipa ./build/*.ipa \
|
|
110
|
+
--submit_for_review false \
|
|
111
|
+
--automatic_release false
|
|
112
|
+
|
|
113
|
+
# Required GitHub Secrets:
|
|
114
|
+
# APPLE_API_KEY — Base64-encoded .p8 private key from App Store Connect
|
|
115
|
+
# APPLE_API_ISSUER_ID — Issuer ID from App Store Connect API keys page
|
|
116
|
+
# APPLE_API_KEY_ID — Key ID from App Store Connect API keys page
|
|
117
|
+
# MATCH_PASSWORD — Encryption passphrase for Fastlane Match certificates
|
|
118
|
+
#
|
|
119
|
+
# Placeholders:
|
|
120
|
+
# {{scheme}} — Replace with your Xcode scheme name (e.g. MyApp)
|