Skip to content

Commit 553b499

Browse files
authored
Project: unify project schemes into "BikeIndex" (#122)
- Replace "Debug (development)" and "Debug (BikeIndex.org)" project schemes with single "BikeIndex" scheme - BikeIndex-development is used for the Debug Project Configuration in Run, Test, and Analyze builds. - BikeIndex-production is used for the Release Project Configuration and for Profile and Archive builds. - Update GitHub Actions to Xcode 26.1.1 and Fastlane tests to iOS 26.1 simulators
1 parent 2e75fc1 commit 553b499

File tree

10 files changed

+70
-303
lines changed

10 files changed

+70
-303
lines changed

.github/workflows/ios.yml

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
##
2+
# Image details: https://github.com/actions/runner-images/blob/main/images/macos/macos-26-arm64-Readme.md
3+
##
14
name: iOS Test Suite
25
permissions:
36
contents: read
@@ -10,7 +13,7 @@ on:
1013
jobs:
1114
tests_iphone16:
1215
name: Run iPhone 16 test suite with fastlane
13-
runs-on: macos-15
16+
runs-on: macos-26
1417
steps:
1518
- name: Checkout
1619
uses: actions/checkout@v4
@@ -29,8 +32,8 @@ jobs:
2932
echo event ${{ github.event }}
3033
echo workflow_ref ${{ github.workflow_ref }}
3134
echo workflow_sha ${{ github.workflow_sha }}
32-
- name: Set Xcode 26.0
33-
run: sudo xcode-select -s /Applications/Xcode_26.0.app
35+
- name: Set Xcode 26.1
36+
run: sudo xcode-select -s /Applications/Xcode_26.1.app
3437
- name: Install tools
3538
run: brew bundle install
3639
- name: Set up xcconfig secrets (see README.md#quick-start)
@@ -44,7 +47,7 @@ jobs:
4447
run: |
4548
echo "$BIKE_INDEX_TEST_CREDENTIALS" >> Test-credentials.xcconfig
4649
- name: List available simulators
47-
run: xcodebuild -scheme Debug\ \(development\) -project BikeIndex.xcodeproj -showdestinations
50+
run: xcodebuild -scheme BikeIndex -project BikeIndex.xcodeproj -showdestinations
4851
- name: Run tests
4952
id: fastlane-ios-tests
5053
run: fastlane ios tests_iphone16
@@ -57,7 +60,7 @@ jobs:
5760

5861
tests_iphone16plus:
5962
name: Run iPhone 16 Plus test suite with fastlane
60-
runs-on: macos-15
63+
runs-on: macos-26
6164
steps:
6265
- name: Checkout
6366
uses: actions/checkout@v4
@@ -76,8 +79,8 @@ jobs:
7679
echo event ${{ github.event }}
7780
echo workflow_ref ${{ github.workflow_ref }}
7881
echo workflow_sha ${{ github.workflow_sha }}
79-
- name: Set Xcode 26.0
80-
run: sudo xcode-select -s /Applications/Xcode_26.0.app
82+
- name: Set Xcode 26.1
83+
run: sudo xcode-select -s /Applications/Xcode_26.1.app
8184
- name: Install tools
8285
run: brew bundle install
8386
- name: Set up xcconfig secrets (see README.md#quick-start)
@@ -91,7 +94,7 @@ jobs:
9194
run: |
9295
echo "$BIKE_INDEX_TEST_CREDENTIALS" >> Test-credentials.xcconfig
9396
- name: List available simulators
94-
run: xcodebuild -scheme Debug\ \(development\) -project BikeIndex.xcodeproj -showdestinations
97+
run: xcodebuild -scheme BikeIndex -project BikeIndex.xcodeproj -showdestinations
9598
- name: Run tests
9699
id: fastlane-ios-tests
97100
run: fastlane ios tests_iphone16plus
@@ -104,7 +107,7 @@ jobs:
104107

105108
tests_ipad:
106109
name: Run iPad (10th generation) test suite with fastlane
107-
runs-on: macos-15
110+
runs-on: macos-26
108111
steps:
109112
- name: Checkout
110113
uses: actions/checkout@v4
@@ -123,8 +126,8 @@ jobs:
123126
echo event ${{ github.event }}
124127
echo workflow_ref ${{ github.workflow_ref }}
125128
echo workflow_sha ${{ github.workflow_sha }}
126-
- name: Set Xcode 26.0
127-
run: sudo xcode-select -s /Applications/Xcode_26.0.app
129+
- name: Set Xcode 26.1
130+
run: sudo xcode-select -s /Applications/Xcode_26.1.app
128131
- name: Install tools
129132
run: brew bundle install
130133
- name: Set up xcconfig secrets (see README.md#quick-start)
@@ -138,7 +141,7 @@ jobs:
138141
run: |
139142
echo "$BIKE_INDEX_TEST_CREDENTIALS" >> Test-credentials.xcconfig
140143
- name: List available simulators
141-
run: xcodebuild -scheme Debug\ \(development\) -project BikeIndex.xcodeproj -showdestinations
144+
run: xcodebuild -scheme BikeIndex -project BikeIndex.xcodeproj -showdestinations
142145
- name: Run tests
143146
id: fastlane-ios-tests
144147
run: fastlane ios tests_ipad

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,6 @@ Test-credentials.xcconfig
2222

2323
# scan temporary files
2424
**/fastlane/test_output
25+
26+
# symbolic link to metadata elsewhere on disk
27+
app-store-metadata

BikeIndex.xcodeproj/project.pbxproj

Lines changed: 14 additions & 168 deletions
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@
400400
/* End PBXTargetDependency section */
401401

402402
/* Begin XCBuildConfiguration section */
403-
04EA11232B25135D0024CDDD /* Debug BikeIndex.org */ = {
403+
04EA11232B25135D0024CDDD /* Debug */ = {
404404
isa = XCBuildConfiguration;
405405
buildSettings = {
406406
ALWAYS_SEARCH_USER_PATHS = NO;
@@ -462,11 +462,11 @@
462462
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
463463
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
464464
};
465-
name = "Debug BikeIndex.org";
465+
name = Debug;
466466
};
467-
04EA11242B25135D0024CDDD /* Debug BikeIndex.org */ = {
467+
04EA11242B25135D0024CDDD /* Debug */ = {
468468
isa = XCBuildConfiguration;
469-
baseConfigurationReference = 04F4B9272B098B44009442B5 /* BikeIndex-production.xcconfig */;
469+
baseConfigurationReference = 04F4B9292B098B44009442B5 /* BikeIndex-development.xcconfig */;
470470
buildSettings = {
471471
ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES = "Striped Grayscale Pride Shadow";
472472
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
@@ -505,9 +505,9 @@
505505
SWIFT_VERSION = 6.0;
506506
TARGETED_DEVICE_FAMILY = "1,2";
507507
};
508-
name = "Debug BikeIndex.org";
508+
name = Debug;
509509
};
510-
04EA11252B25135D0024CDDD /* Debug BikeIndex.org */ = {
510+
04EA11252B25135D0024CDDD /* Debug */ = {
511511
isa = XCBuildConfiguration;
512512
buildSettings = {
513513
BUNDLE_LOADER = "$(TEST_HOST)";
@@ -526,9 +526,9 @@
526526
TARGETED_DEVICE_FAMILY = "1,2";
527527
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BikeIndex.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/BikeIndex";
528528
};
529-
name = "Debug BikeIndex.org";
529+
name = Debug;
530530
};
531-
04EA11262B25135D0024CDDD /* Debug BikeIndex.org */ = {
531+
04EA11262B25135D0024CDDD /* Debug */ = {
532532
isa = XCBuildConfiguration;
533533
baseConfigurationReference = 04D80BB62D8673F200E29577 /* Test-credentials.xcconfig */;
534534
buildSettings = {
@@ -548,75 +548,10 @@
548548
TARGETED_DEVICE_FAMILY = "1,2";
549549
TEST_TARGET_NAME = BikeIndex;
550550
};
551-
name = "Debug BikeIndex.org";
552-
};
553-
04F4B91C2B098ADE009442B5 /* Debug (development) */ = {
554-
isa = XCBuildConfiguration;
555-
buildSettings = {
556-
ALWAYS_SEARCH_USER_PATHS = NO;
557-
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
558-
CLANG_ANALYZER_NONNULL = YES;
559-
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
560-
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
561-
CLANG_ENABLE_MODULES = YES;
562-
CLANG_ENABLE_OBJC_ARC = YES;
563-
CLANG_ENABLE_OBJC_WEAK = YES;
564-
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
565-
CLANG_WARN_BOOL_CONVERSION = YES;
566-
CLANG_WARN_COMMA = YES;
567-
CLANG_WARN_CONSTANT_CONVERSION = YES;
568-
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
569-
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
570-
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
571-
CLANG_WARN_EMPTY_BODY = YES;
572-
CLANG_WARN_ENUM_CONVERSION = YES;
573-
CLANG_WARN_INFINITE_RECURSION = YES;
574-
CLANG_WARN_INT_CONVERSION = YES;
575-
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
576-
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
577-
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
578-
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
579-
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
580-
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
581-
CLANG_WARN_STRICT_PROTOTYPES = YES;
582-
CLANG_WARN_SUSPICIOUS_MOVE = YES;
583-
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
584-
CLANG_WARN_UNREACHABLE_CODE = YES;
585-
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
586-
COPY_PHASE_STRIP = NO;
587-
DEAD_CODE_STRIPPING = YES;
588-
DEBUG_INFORMATION_FORMAT = dwarf;
589-
ENABLE_STRICT_OBJC_MSGSEND = YES;
590-
ENABLE_TESTABILITY = YES;
591-
ENABLE_USER_SCRIPT_SANDBOXING = YES;
592-
GCC_C_LANGUAGE_STANDARD = gnu17;
593-
GCC_DYNAMIC_NO_PIC = NO;
594-
GCC_NO_COMMON_BLOCKS = YES;
595-
GCC_OPTIMIZATION_LEVEL = 0;
596-
GCC_PREPROCESSOR_DEFINITIONS = (
597-
"DEBUG=1",
598-
"$(inherited)",
599-
);
600-
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
601-
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
602-
GCC_WARN_UNDECLARED_SELECTOR = YES;
603-
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
604-
GCC_WARN_UNUSED_FUNCTION = YES;
605-
GCC_WARN_UNUSED_VARIABLE = YES;
606-
IPHONEOS_DEPLOYMENT_TARGET = 17.2;
607-
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
608-
MACOSX_DEPLOYMENT_TARGET = 14.2;
609-
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
610-
MTL_FAST_MATH = YES;
611-
ONLY_ACTIVE_ARCH = YES;
612-
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
613-
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
614-
};
615-
name = "Debug (development)";
551+
name = Debug;
616552
};
617553
04F4B91D2B098ADE009442B5 /* Release */ = {
618554
isa = XCBuildConfiguration;
619-
baseConfigurationReference = 04F4B9272B098B44009442B5 /* BikeIndex-production.xcconfig */;
620555
buildSettings = {
621556
ALWAYS_SEARCH_USER_PATHS = NO;
622557
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
@@ -671,51 +606,9 @@
671606
};
672607
name = Release;
673608
};
674-
04F4B91F2B098ADE009442B5 /* Debug (development) */ = {
675-
isa = XCBuildConfiguration;
676-
baseConfigurationReference = 04F4B9292B098B44009442B5 /* BikeIndex-development.xcconfig */;
677-
buildSettings = {
678-
ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES = "Striped Grayscale Pride Shadow";
679-
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
680-
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
681-
CODE_SIGN_ENTITLEMENTS = BikeIndex/BikeIndex.entitlements;
682-
CODE_SIGN_STYLE = Automatic;
683-
CURRENT_PROJECT_VERSION = 59;
684-
DEAD_CODE_STRIPPING = YES;
685-
DEVELOPMENT_ASSET_PATHS = "BikeIndex/Preview\\ Content/MultipleBikeResponse_mock.json BikeIndex/Preview\\ Content";
686-
DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)";
687-
ENABLE_PREVIEWS = YES;
688-
GENERATE_INFOPLIST_FILE = YES;
689-
INFOPLIST_FILE = BikeIndex/Info.plist;
690-
INFOPLIST_KEY_CFBundleDisplayName = "Bike Index dev";
691-
INFOPLIST_KEY_NSCameraUsageDescription = "Add photos of your bike, and found bikes, to find matches and make recovery easier.";
692-
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Add photos of your bike, and found bikes, to find matches and make recovery easier.";
693-
"INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES;
694-
"INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES;
695-
"INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES;
696-
"INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES;
697-
"INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES;
698-
"INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES;
699-
"INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault;
700-
"INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault;
701-
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
702-
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
703-
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
704-
"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
705-
MACOSX_DEPLOYMENT_TARGET = 14.4;
706-
MARKETING_VERSION = 1.6;
707-
PRODUCT_NAME = "$(TARGET_NAME)";
708-
SDKROOT = auto;
709-
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
710-
SUPPORTS_MACCATALYST = NO;
711-
SWIFT_EMIT_LOC_STRINGS = YES;
712-
SWIFT_VERSION = 6.0;
713-
TARGETED_DEVICE_FAMILY = "1,2";
714-
};
715-
name = "Debug (development)";
716-
};
717609
04F4B9202B098ADE009442B5 /* Release */ = {
718610
isa = XCBuildConfiguration;
611+
baseConfigurationReference = 04F4B9272B098B44009442B5 /* BikeIndex-production.xcconfig */;
719612
buildSettings = {
720613
ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES = "Striped Grayscale Pride Shadow";
721614
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
@@ -756,27 +649,6 @@
756649
};
757650
name = Release;
758651
};
759-
04F4B9222B098ADE009442B5 /* Debug (development) */ = {
760-
isa = XCBuildConfiguration;
761-
buildSettings = {
762-
BUNDLE_LOADER = "$(TEST_HOST)";
763-
CODE_SIGN_STYLE = Automatic;
764-
CURRENT_PROJECT_VERSION = 1;
765-
DEAD_CODE_STRIPPING = YES;
766-
GENERATE_INFOPLIST_FILE = YES;
767-
MARKETING_VERSION = 1.0;
768-
PRODUCT_BUNDLE_IDENTIFIER = org.bikeindex.UnitTests;
769-
PRODUCT_NAME = "$(TARGET_NAME)";
770-
SDKROOT = auto;
771-
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
772-
SUPPORTS_MACCATALYST = NO;
773-
SWIFT_EMIT_LOC_STRINGS = NO;
774-
SWIFT_VERSION = 5.0;
775-
TARGETED_DEVICE_FAMILY = "1,2";
776-
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BikeIndex.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/BikeIndex";
777-
};
778-
name = "Debug (development)";
779-
};
780652
04F4B9232B098ADE009442B5 /* Release */ = {
781653
isa = XCBuildConfiguration;
782654
buildSettings = {
@@ -798,28 +670,6 @@
798670
};
799671
name = Release;
800672
};
801-
04F4B9252B098ADE009442B5 /* Debug (development) */ = {
802-
isa = XCBuildConfiguration;
803-
baseConfigurationReference = 04D80BB62D8673F200E29577 /* Test-credentials.xcconfig */;
804-
buildSettings = {
805-
CODE_SIGN_STYLE = Automatic;
806-
CURRENT_PROJECT_VERSION = 1;
807-
DEAD_CODE_STRIPPING = YES;
808-
GENERATE_INFOPLIST_FILE = YES;
809-
INFOPLIST_FILE = UITests/Info.plist;
810-
MARKETING_VERSION = 1.0;
811-
PRODUCT_BUNDLE_IDENTIFIER = org.bikeindex.UITests;
812-
PRODUCT_NAME = "$(TARGET_NAME)";
813-
SDKROOT = auto;
814-
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
815-
SUPPORTS_MACCATALYST = NO;
816-
SWIFT_EMIT_LOC_STRINGS = NO;
817-
SWIFT_VERSION = 5.0;
818-
TARGETED_DEVICE_FAMILY = "1,2";
819-
TEST_TARGET_NAME = BikeIndex;
820-
};
821-
name = "Debug (development)";
822-
};
823673
04F4B9262B098ADE009442B5 /* Release */ = {
824674
isa = XCBuildConfiguration;
825675
baseConfigurationReference = 04D80BB62D8673F200E29577 /* Test-credentials.xcconfig */;
@@ -848,8 +698,7 @@
848698
04F4B8F22B098ADB009442B5 /* Build configuration list for PBXProject "BikeIndex" */ = {
849699
isa = XCConfigurationList;
850700
buildConfigurations = (
851-
04F4B91C2B098ADE009442B5 /* Debug (development) */,
852-
04EA11232B25135D0024CDDD /* Debug BikeIndex.org */,
701+
04EA11232B25135D0024CDDD /* Debug */,
853702
04F4B91D2B098ADE009442B5 /* Release */,
854703
);
855704
defaultConfigurationIsVisible = 0;
@@ -858,8 +707,7 @@
858707
04F4B91E2B098ADE009442B5 /* Build configuration list for PBXNativeTarget "BikeIndex" */ = {
859708
isa = XCConfigurationList;
860709
buildConfigurations = (
861-
04F4B91F2B098ADE009442B5 /* Debug (development) */,
862-
04EA11242B25135D0024CDDD /* Debug BikeIndex.org */,
710+
04EA11242B25135D0024CDDD /* Debug */,
863711
04F4B9202B098ADE009442B5 /* Release */,
864712
);
865713
defaultConfigurationIsVisible = 0;
@@ -868,8 +716,7 @@
868716
04F4B9212B098ADE009442B5 /* Build configuration list for PBXNativeTarget "UnitTests" */ = {
869717
isa = XCConfigurationList;
870718
buildConfigurations = (
871-
04F4B9222B098ADE009442B5 /* Debug (development) */,
872-
04EA11252B25135D0024CDDD /* Debug BikeIndex.org */,
719+
04EA11252B25135D0024CDDD /* Debug */,
873720
04F4B9232B098ADE009442B5 /* Release */,
874721
);
875722
defaultConfigurationIsVisible = 0;
@@ -878,8 +725,7 @@
878725
04F4B9242B098ADE009442B5 /* Build configuration list for PBXNativeTarget "UITests" */ = {
879726
isa = XCConfigurationList;
880727
buildConfigurations = (
881-
04F4B9252B098ADE009442B5 /* Debug (development) */,
882-
04EA11262B25135D0024CDDD /* Debug BikeIndex.org */,
728+
04EA11262B25135D0024CDDD /* Debug */,
883729
04F4B9262B098ADE009442B5 /* Release */,
884730
);
885731
defaultConfigurationIsVisible = 0;

0 commit comments

Comments
 (0)