diff --git a/fastlane/Fastfile b/fastlane/Fastfile index b9dcded..9b2afde 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -37,6 +37,8 @@ USER_ENV_FILE_PATH = File.join(Dir.home, '.a8c-apps', ENV_FILE_NAME) import 'lib/helpers.rb' before_all do + setup_ci if runner.current_platform == :ios + Dotenv.load(USER_ENV_FILE_PATH) end @@ -64,7 +66,7 @@ platform :ios do desc 'Builds the app for iOS and Mac Catalyst App Store distribution' lane :build_for_app_store do |options| - set_up_code_signing unless options[:skip_code_signing_setup] + set_up_code_signing_app_store unless options[:skip_code_signing_setup] shared_options = { scheme: 'Blocknotes', @@ -97,34 +99,17 @@ platform :ios do ) end - desc 'Sets up code signing' - lane :set_up_code_signing do |options| - require_env_vars!(*ASC_API_KEY_ENV_VARS, *MATCH_ENV_VARS) - - setup_ci + lane :set_up_code_signing do |readonly: true| + set_up_code_signing_app_store(readonly: readonly) + set_up_code_signing_deveploment(readonly: readonly) + end - shared_options = { - type: 'appstore', - app_identifier: BUNDLE_IDENTIFIER, - team_id: 'PZYM8XX95Q', - storage_mode: 's3', - s3_region: 'us-east-2', - s3_bucket: 'a8c-fastlane-match', - readonly: options.fetch(:readonly, true), - api_key: app_store_connect_api_key - } + lane :set_up_code_signing_app_store do |readonly: true| + set_up_code_signing(type: 'appstore', readonly: readonly) + end - sync_code_signing( - platform: 'ios', - **shared_options - ) - sync_code_signing( - platform: 'catalyst', - # Without this, we'll get: - # error: exportArchive: Provisioning profile "match AppStore com.ellavandurpe.blocknotes catalyst" doesn't include signing certificate "3rd Party Mac Developer Installer: Automattic, Inc. (PZYM8XX95Q)". - additional_cert_types: 'mac_installer_distribution', - **shared_options - ) + lane :set_up_code_signing_deveploment do |readonly: true| + set_up_code_signing(type: 'development', readonly: readonly) end end @@ -139,3 +124,35 @@ def bump_build_number build_number: latest_build_number + 1 ) end + +def set_up_code_signing(type:, readonly: true) + require_env_vars!(*MATCH_ENV_VARS) + + unless readonly + require_env_vars!(*ASC_API_KEY_ENV_VARS) + api_key = app_store_connect_api_key + end + + shared_options = { + type: type, + app_identifier: BUNDLE_IDENTIFIER, + team_id: 'PZYM8XX95Q', + storage_mode: 's3', + s3_region: 'us-east-2', + s3_bucket: 'a8c-fastlane-match', + readonly: readonly, + api_key: api_key + } + + sync_code_signing( + platform: 'ios', + **shared_options + ) + sync_code_signing( + platform: 'catalyst', + # Without this, we'll get: + # error: exportArchive: Provisioning profile "match AppStore com.ellavandurpe.blocknotes catalyst" doesn't include signing certificate "3rd Party Mac Developer Installer: Automattic, Inc. (PZYM8XX95Q)". + additional_cert_types: 'mac_installer_distribution', + **shared_options + ) +end diff --git a/ios/App/App.xcodeproj/project.pbxproj b/ios/App/App.xcodeproj/project.pbxproj index 8b5672b..9060ad6 100644 --- a/ios/App/App.xcodeproj/project.pbxproj +++ b/ios/App/App.xcodeproj/project.pbxproj @@ -20,6 +20,9 @@ /* Begin PBXFileReference section */ 04E5AB7A2A37305E0052580F /* App.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = App.entitlements; sourceTree = ""; }; 2FAD9762203C412B000D30F8 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = config.xml; sourceTree = ""; }; + 3F6C399A2C34C40900776C37 /* Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = ""; }; + 3F6C399B2C34C46600776C37 /* Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + 3F6C399C2C34C46E00776C37 /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; 4C8F509035A341B5689A8624 /* Pods-Blocknotes.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Blocknotes.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Blocknotes/Pods-Blocknotes.debug.xcconfig"; sourceTree = ""; }; 50379B222058CBB4000EE86E /* capacitor.config.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = capacitor.config.json; sourceTree = ""; }; 504EC3041FED79650016851F /* Blocknotes.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Blocknotes.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -85,6 +88,9 @@ 504EC3131FED79650016851F /* Info.plist */, 2FAD9762203C412B000D30F8 /* config.xml */, 50B271D01FEDC1A000F3C39B /* public */, + 3F6C399A2C34C40900776C37 /* Base.xcconfig */, + 3F6C399B2C34C46600776C37 /* Debug.xcconfig */, + 3F6C399C2C34C46E00776C37 /* Release.xcconfig */, ); path = App; sourceTree = ""; @@ -245,6 +251,7 @@ /* Begin XCBuildConfiguration section */ 504EC3141FED79650016851F /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 3F6C399B2C34C46600776C37 /* Debug.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; @@ -275,7 +282,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -305,6 +311,7 @@ }; 504EC3151FED79650016851F /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 3F6C399C2C34C46E00776C37 /* Release.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; @@ -335,7 +342,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; @@ -363,13 +369,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = App/App.entitlements; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Distribution"; - CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = ""; - "DEVELOPMENT_TEAM[sdk=iphoneos*]" = PZYM8XX95Q; - "DEVELOPMENT_TEAM[sdk=macosx*]" = PZYM8XX95Q; INFOPLIST_FILE = App/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 17.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -381,9 +381,6 @@ OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; PRODUCT_BUNDLE_IDENTIFIER = com.ellavandurpe.blocknotes; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.ellavandurpe.blocknotes"; - "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "match AppStore com.ellavandurpe.blocknotes catalyst"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = YES; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; @@ -399,13 +396,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = App/App.entitlements; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Distribution"; - CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = ""; - "DEVELOPMENT_TEAM[sdk=iphoneos*]" = PZYM8XX95Q; - "DEVELOPMENT_TEAM[sdk=macosx*]" = PZYM8XX95Q; INFOPLIST_FILE = App/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 17.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -416,9 +407,6 @@ MARKETING_VERSION = 1.3; PRODUCT_BUNDLE_IDENTIFIER = com.ellavandurpe.blocknotes; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.ellavandurpe.blocknotes"; - "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "match AppStore com.ellavandurpe.blocknotes catalyst"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = YES; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; diff --git a/ios/App/App/Base.xcconfig b/ios/App/App/Base.xcconfig new file mode 100644 index 0000000..ec91f64 --- /dev/null +++ b/ios/App/App/Base.xcconfig @@ -0,0 +1,2 @@ +DEVELOPMENT_TEAM = PZYM8XX95Q +CODE_SIGN_STYLE = Manual diff --git a/ios/App/App/Debug.xcconfig b/ios/App/App/Debug.xcconfig new file mode 100644 index 0000000..f52dbe0 --- /dev/null +++ b/ios/App/App/Debug.xcconfig @@ -0,0 +1,6 @@ +#include "Base.xcconfig" + +CODE_SIGN_IDENTITY = Apple Development + +PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*] = match Development com.ellavandurpe.blocknotes +PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*] = match Development com.ellavandurpe.blocknotes catalyst diff --git a/ios/App/App/Release.xcconfig b/ios/App/App/Release.xcconfig new file mode 100644 index 0000000..1f7d931 --- /dev/null +++ b/ios/App/App/Release.xcconfig @@ -0,0 +1,6 @@ +#include "Base.xcconfig" + +CODE_SIGN_IDENTITY = Apple Distribution + +PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*] = match AppStore com.ellavandurpe.blocknotes +PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*] = match AppStore com.ellavandurpe.blocknotes catalyst