-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathproject.yml
511 lines (467 loc) · 15.2 KB
/
project.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
# Defines the Xcode Project, which can be generated by running `make generate_project`
# Specification: https://github.com/yonaskolb/XcodeGen/blob/master/Docs/ProjectSpec.md
name: CTR
# - Packages:
packages:
CoronaCheckFoundation:
path: ./Packages/CoronaCheckFoundation
CoronaCheckTest:
path: ./Packages/CoronaCheckTest
CoronaCheckUI:
path: ./Packages/CoronaCheckUI
Persistence:
path: ./Packages/Persistence
Resources:
path: ./Packages/Resources
ReusableViews:
path: ./Packages/ReusableViews
RestrictedBrowser:
path: ./Packages/RestrictedBrowser
Shared:
path: ./Packages/Shared
# - Attributes:
attributes:
LastUpgradeCheck: "1400"
# - Configurations:
configs:
Development: debug
FirebaseAcceptance: release
FirebaseProduction: release # should be identical to AppStore build.
AppStore: release
fileGroups:
- project.yml
- .github
- Scripts
- README.md
# - Project Level settings:
options:
developmentLanguage: nl
settings:
base:
IPHONEOS_DEPLOYMENT_TARGET: 11.0
SWIFT_VERSION: 5.0
VERSIONING_SYSTEM: apple-generic
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED: YES
FRAMEWORK_SEARCH_PATHS:
- "$(inherited)"
- "$(PROJECT_DIR)"
LD_RUNPATH_SEARCH_PATHS:
- "$(inherited)"
- "@executable_path/Frameworks"
# - Target Templates (i.e. shared default settings for targets):
targetTemplates:
Standard_BaseSettings:
info:
properties:
# Dynamic properties (APP_FLAVOR etc) here are set at build time, so can still vary based on a Configuration.
NETWORK_CONFIGURATION: $(NETWORK_CONFIGURATION)
APP_FLAVOR: ${APP_FLAVOR}
LOG_LEVEL: ${LOG_LEVEL}
settings:
base:
VALIDATE_PRODUCT: YES
DEBUG_INFORMATION_FORMAT: dwarf-with-dsym # Firebase warns that this must be set for all targets.
ENABLE_BITCODE: false # because it's deprecated
configs:
Development:
NETWORK_CONFIGURATION: DEV
VALIDATE_PRODUCT: NO
LOG_LEVEL: debug
FirebaseAcceptance:
NETWORK_CONFIGURATION: ACC
LOG_LEVEL: error
SWIFT_OPTIMIZE_OBJECT_LIFETIME: true
FirebaseProduction:
NETWORK_CONFIGURATION: Production
LOG_LEVEL: error
SWIFT_OPTIMIZE_OBJECT_LIFETIME: true
AppStore:
NETWORK_CONFIGURATION: Production
LOG_LEVEL: error
SWIFT_OPTIMIZE_OBJECT_LIFETIME: true
Standard_Signing:
settings:
base:
CODE_SIGN_STYLE: Manual
CODE_SIGN_IDENTITY: iPhone Distribution
DEVELOPMENT_TEAM: C2H38GV99H
configs:
Development:
CODE_SIGN_IDENTITY: iPhone Developer
FirebaseAcceptance:
FirebaseProduction:
AppStore:
Standard_iOS:
platform: iOS
type: application
dependencies:
# SPM:
- package: CoronaCheckFoundation
- package: CoronaCheckUI
- package: Persistence
- package: Resources
- package: ReusableViews
- package: RestrictedBrowser
- package: Shared
embed: false
settings:
base:
CURRENT_PROJECT_VERSION: 1 # needs to be present for project to build locally, but is overwritten by fastlane. No need to change.
TARGETED_DEVICE_FAMILY: 1,2 # iPhone + iPad
PRODUCT_NAME: $(TARGET_NAME)
PRODUCT_MODULE_NAME: CTR
info:
properties:
CFBundleDevelopmentRegion: nl_NL
CFBundleExecutable: $(EXECUTABLE_NAME)
CFBundleName: ${DISPLAY_NAME}
CFBundlePackageType: $(PRODUCT_BUNDLE_PACKAGE_TYPE)
CFBundleShortVersionString: $(MARKETING_VERSION)
CFBundleVersion: $(CURRENT_PROJECT_VERSION)
ITSAppUsesNonExemptEncryption: false
LSApplicationQueriesSchemes:
- 'tel'
- 'activator'
- 'cydia'
- 'filza'
- 'sileo'
- 'undecimus'
- 'zbra'
- 'https'
- 'googlechromes'
- 'opera-https'
- 'firefox'
- 'microsoft-edge-https'
- 'itms-apps'
LSRequiresIPhoneOS: true
NSCameraUsageDescription: "De app will toegang tot de camera om de QR-code te scannen."
UIAppFonts:
- 'Montserrat-Bold.ttf'
- 'Montserrat-SemiBold.ttf'
UIApplicationSceneManifest:
UIApplicationSupportsMultipleScenes: false
UISceneConfigurations:
UIWindowSceneSessionRoleApplication:
- UISceneConfigurationName: Default Configuration
UISceneDelegateClassName: $(PRODUCT_MODULE_NAME).SceneDelegate
UIApplicationSupportsIndirectInputEvents: true
UIRequiredDeviceCapabilities:
- armv7
UISupportedInterfaceOrientations:
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
- UIInterfaceOrientationPortraitUpsideDown
UISupportedInterfaceOrientations~ipad:
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
preBuildScripts:
- name: Run SwiftLint
basedOnDependencyAnalysis: false
script: |
export PATH="$PATH:/opt/homebrew/bin" # for M1 macs
if mint list | grep -q 'SwiftLint'; then
mint run swiftlint --quiet --config=./.swiftlint.yml
else
echo "warning: SwiftLint not found, run 'make dev' in the project root folder"
fi
Standard_UnitTesting:
platform: iOS
type: bundle.unit-test
dependencies:
- package: CoronaCheckTest
- target: Holder
settings:
TEST_HOST: "$(BUILT_PRODUCTS_DIR)/CTR.app/CTR"
Standard_UITesting:
platform: iOS
type: bundle.ui-testing
dependencies:
- target: Holder
settings:
base:
GENERATE_INFOPLIST_FILE: YES
# - Targets
targets:
Holder:
# scheme:
# testTargets:
templates:
- Standard_iOS
- Standard_Signing
- Standard_BaseSettings
sources:
- path: Sources/CTR
excludes:
- "CTR/Interface/Verifier/Launch"
- "CTR/Configuration/verifier-Info.plist"
# optional: true
settings:
base:
APP_FLAVOR: holder
# keep the comment on the next line, as it shows up in the CI logs & helps distinguish
MARKETING_VERSION: 5.1.0 # holder
ASSETCATALOG_COMPILER_APPICON_NAME: AppIconHolder
INFOPLIST_FILE: Sources/CTR/Configuration/holder-Info.plist
configs:
Development:
DISPLAY_NAME: "🤖 Dev Holder"
PRODUCT_NAME: CTR
PRODUCT_BUNDLE_IDENTIFIER: nl.rijksoverheid.ctr.dev
PROVISIONING_PROFILE_SPECIFIER: CoronaCheck Holder Dev
CODE_SIGN_ENTITLEMENTS: Sources/CTR/Configuration/Holder-Dev.entitlements
FirebaseAcceptance:
DISPLAY_NAME: "💡 Acc Holder"
PRODUCT_NAME: CTR ACC
PRODUCT_BUNDLE_IDENTIFIER: nl.rijksoverheid.ctr.acc
PROVISIONING_PROFILE_SPECIFIER: CoronaCheck Holder Acc
CODE_SIGN_ENTITLEMENTS: Sources/CTR/Configuration/Holder-Acc.entitlements
FirebaseProduction:
DISPLAY_NAME: "Prod Holder"
PRODUCT_NAME: CTR PROD
PRODUCT_BUNDLE_IDENTIFIER: nl.rijksoverheid.ctr
PROVISIONING_PROFILE_SPECIFIER: CoronaCheck Holder Prod
CODE_SIGN_ENTITLEMENTS: Sources/CTR/Configuration/Holder-Prod.entitlements
AppStore:
DISPLAY_NAME: CoronaCheck
PRODUCT_NAME: CTR
PRODUCT_BUNDLE_IDENTIFIER: nl.rijksoverheid.ctr
PROVISIONING_PROFILE_SPECIFIER: CoronaCheck Holder AppStore
CODE_SIGN_ENTITLEMENTS: Sources/CTR/Configuration/Holder-Prod.entitlements
info:
path: Sources/CTR/Configuration/holder-Info.plist
properties:
CFBundleURLTypes:
- CFBundleTypeRole: Editor
CFBundleURLName: nl.rijksoverheid.ctr
CFBundleURLSchemes:
- coronacheck
- CFBundleTypeRole: Editor
CFBundleURLName: nl.rijksoverheid.ctr.dev
CFBundleURLSchemes:
- coronacheck-dev
- CFBundleTypeRole: Editor
CFBundleURLName: nl.rijksoverheid.ctr.acc
CFBundleURLSchemes:
- coronacheck-acc
UILaunchStoryboardName: LaunchScreenHolder
Verifier:
templates:
- Standard_iOS
- Standard_Signing
- Standard_BaseSettings
sources:
- path: Sources/CTR
excludes:
- "CTR/Interface/Holder/Launch"
- "CTR/Configuration/holder-Info.plist"
settings:
base:
APP_FLAVOR: verifier
# keep the comment on the next line, as it shows up in the CI logs & helps distinguish
MARKETING_VERSION: 3.1.0 # verifier
ASSETCATALOG_COMPILER_APPICON_NAME: AppIconVerifier
INFOPLIST_FILE: Sources/CTR/Configuration/verifier-Info.plist
configs:
Development:
DISPLAY_NAME: "🤖 Dev Scanner"
PRODUCT_BUNDLE_IDENTIFIER: nl.rijksoverheid.ctr.verifier.dev
PROVISIONING_PROFILE_SPECIFIER: CoronaCheck Verifier Dev
CODE_SIGN_ENTITLEMENTS: Sources/CTR/Configuration/Verifier-Dev.entitlements
FirebaseAcceptance:
DISPLAY_NAME: "💡 Acc Scanner"
PROVISIONING_PROFILE_SPECIFIER: CoronaCheck Verifier Acc
PRODUCT_BUNDLE_IDENTIFIER: nl.rijksoverheid.ctr.verifier.acc
CODE_SIGN_ENTITLEMENTS: Sources/CTR/Configuration/Verifier-Acc.entitlements
FirebaseProduction:
DISPLAY_NAME: "Prod Scanner"
PROVISIONING_PROFILE_SPECIFIER: CoronaCheck Verifier Prod
PRODUCT_BUNDLE_IDENTIFIER: nl.rijksoverheid.ctr.verifier
CODE_SIGN_ENTITLEMENTS: Sources/CTR/Configuration/Verifier-Prod.entitlements
AppStore:
DISPLAY_NAME: Scanner
PROVISIONING_PROFILE_SPECIFIER: CoronaCheck Verifier AppStore
PRODUCT_BUNDLE_IDENTIFIER: nl.rijksoverheid.ctr.verifier
CODE_SIGN_ENTITLEMENTS: Sources/CTR/Configuration/Verifier-Prod.entitlements
info:
path: Sources/CTR/Configuration/verifier-Info.plist
properties:
CFBundleURLTypes:
- CFBundleTypeRole: Editor
CFBundleURLName: nl.rijksoverheid.ctr.verifier
CFBundleURLSchemes:
- coronacheck-verifier
- CFBundleTypeRole: Editor
CFBundleURLName: nl.rijksoverheid.ctr.verifier.dev
CFBundleURLSchemes:
- coronacheck-verifier-dev
- CFBundleTypeRole: Editor
CFBundleURLName: nl.rijksoverheid.ctr.verifier.acc
CFBundleURLSchemes:
- coronacheck-verifier-acc
UILaunchStoryboardName: LaunchScreenVerifier
# -- Force to light mode: --
UIUserInterfaceStyle: Light
UIViewControllerBasedStatusBarAppearance: true
UIStatusBarStyle: UIStatusBarStyleDarkContent
# -- End force to light mode: --
CTRTests:
templates:
- Standard_UnitTesting
sources:
- path: CTRTests
excludes:
- "**/__Snapshots__"
HolderUITests:
templates:
- Standard_UITesting
sources:
- path: HolderUITests
HolderUISmoketests:
templates:
- Standard_UITesting
sources:
- path: HolderUITests
excludes:
- Tests/*
# - Scheme Templates
schemeTemplates:
# Template for Development/Acc/Production/AppStore varieties
ConfigScheme:
build:
config: ${configEnvironment} #not sure if needed.
targets:
${appTargetName}: all
test:
config: ${configEnvironment}
run:
config: ${configEnvironment}
profile:
config: ${configEnvironment}
analyze:
config: ${configEnvironment}
archive:
config: ${configEnvironment}
# Variant of the standard `ConfigScheme` for Development
DevelopmentConfigScheme:
templates:
- ConfigScheme
run:
commandLineArguments:
# Enable CoreData debug flags:
# See: https://www.donnywals.com/using-launch-arguments-for-easier-core-data-debugging/
# "-com.apple.CoreData.SQLDebug 2": YES # choose a level from 1-4
"-com.apple.CoreData.ConcurrencyDebug 1": YES # crash with stacktrace on concurrency mistakes
"-com.apple.CoreData.MigrationDebug 1": YES
# Template for adding unit tests to a scheme:
UnitTestScheme:
test:
commandLineArguments:
"--unittesting": true
language: nl
region: NL
gatherCoverageData: true
coverageTargets:
- ${appTargetName}
# Template for adding UI tests to a scheme:
UITestScheme:
test:
language: nl
region: NL
environmentVariables:
ACCEPTANCE_BASIC_AUTH_PASSWORD: "$(ACCEPTANCE_BASIC_AUTH_PASSWORD)"
targets:
- name: ${uiTestTargetName}
parallelizable: true
randomExecutionOrder: true
# - Schemes
schemes:
Holder Dev:
templates:
- DevelopmentConfigScheme
- UnitTestScheme # This scheme has unit tests
templateAttributes:
appTargetName: Holder
configEnvironment: Development
run:
language: nl
test:
targets:
- package: RestrictedBrowser/RestrictedBrowserTests
randomExecutionOrder: true
parallelizable: false
- package: ReusableViews/ReusableViewsTests
randomExecutionOrder: true
parallelizable: false
- package: Shared/SharedTests
randomExecutionOrder: true
parallelizable: false
- name: CTRTests
parallelizable: false
randomExecutionOrder: true
Holder UI Tests:
templates:
- DevelopmentConfigScheme
- UITestScheme # This scheme has UI tests
templateAttributes:
appTargetName: Holder
uiTestTargetName: HolderUITests
configEnvironment: Development
run:
language: nl
Holder UI Smoketests:
templates:
- DevelopmentConfigScheme
- UITestScheme # This scheme has UI tests
templateAttributes:
appTargetName: Holder
uiTestTargetName: HolderUISmoketests
configEnvironment: Development
run:
language: nl
Holder Acceptance:
templates:
- ConfigScheme
templateAttributes:
appTargetName: Holder
configEnvironment: FirebaseAcceptance
Holder Production:
templates:
- ConfigScheme
templateAttributes:
appTargetName: Holder
configEnvironment: FirebaseProduction
Holder AppStore:
templates:
- ConfigScheme
templateAttributes:
appTargetName: Holder
configEnvironment: AppStore
Verifier Dev:
templates:
- DevelopmentConfigScheme
templateAttributes:
appTargetName: Verifier
configEnvironment: Development
run:
language: nl
Verifier Acceptance:
templates:
- ConfigScheme
templateAttributes:
appTargetName: Verifier
configEnvironment: FirebaseAcceptance
Verifier Production:
templates:
- ConfigScheme
templateAttributes:
appTargetName: Verifier
configEnvironment: FirebaseProduction
Verifier AppStore:
templates:
- ConfigScheme
templateAttributes:
appTargetName: Verifier
configEnvironment: AppStore