From 69638d699394c9d71a007ca26b5d278407afe334 Mon Sep 17 00:00:00 2001 From: Jamil Date: Mon, 16 Oct 2023 12:02:12 -0700 Subject: [PATCH] Refactor xcconfig structure (#2333) - Conditionally set Automatic or Manual provisioning from env (Fixes #2326) - Refactor xcconfig structure to make configuring the project simpler across different envs - Use consistent parentheses in Makefiles and xcconfigs (Refs #2324) (Fixes #2334) --- .github/workflows/swift.yml | 11 +-- swift/apple/.gitignore | 3 +- .../apple/Firezone.xcodeproj/project.pbxproj | 80 ++++++++++--------- swift/apple/Firezone/Firezone.entitlements | 2 +- swift/apple/Firezone/Info.plist | 2 +- .../Firezone/xcconfig/AllConfigs.xcconfig | 3 - swift/apple/Firezone/xcconfig/Build.xcconfig | 5 -- .../xcconfig/Developer.xcconfig.firezone | 2 - .../xcconfig/Developer.xcconfig.template | 7 -- .../Firezone/xcconfig/Server.xcconfig.dev | 4 - .../Firezone/xcconfig/Server.xcconfig.staging | 4 - .../xcconfig/Server.xcconfig.template | 13 --- swift/apple/Firezone/xcconfig/dev.xcconfig | 12 +++ swift/apple/Firezone/xcconfig/prod.xcconfig | 17 ++++ .../apple/Firezone/xcconfig/staging.xcconfig | 17 ++++ .../Helpers/AppInfoPlistConstants.swift | 8 +- .../FirezoneNetworkExtension_iOS.entitlements | 2 +- ...irezoneNetworkExtension_macOS.entitlements | 2 +- .../apple/FirezoneNetworkExtension/Info.plist | 2 +- swift/apple/README.md | 13 +-- swift/apple/copy_generated_connlib_files.sh | 6 +- 21 files changed, 111 insertions(+), 104 deletions(-) delete mode 100644 swift/apple/Firezone/xcconfig/AllConfigs.xcconfig delete mode 100644 swift/apple/Firezone/xcconfig/Build.xcconfig delete mode 100644 swift/apple/Firezone/xcconfig/Developer.xcconfig.firezone delete mode 100644 swift/apple/Firezone/xcconfig/Developer.xcconfig.template delete mode 100644 swift/apple/Firezone/xcconfig/Server.xcconfig.dev delete mode 100644 swift/apple/Firezone/xcconfig/Server.xcconfig.staging delete mode 100644 swift/apple/Firezone/xcconfig/Server.xcconfig.template create mode 100644 swift/apple/Firezone/xcconfig/dev.xcconfig create mode 100644 swift/apple/Firezone/xcconfig/prod.xcconfig create mode 100644 swift/apple/Firezone/xcconfig/staging.xcconfig diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml index b5480423b..eab080b7e 100644 --- a/.github/workflows/swift.yml +++ b/.github/workflows/swift.yml @@ -2,10 +2,6 @@ name: Swift on: workflow_call: -env: - # TODO: Change this to "prod" when app is released - CLIENT_ENV: staging - jobs: build: runs-on: ${{ matrix.runs-on }} @@ -119,13 +115,14 @@ jobs: # Needed because `productbuild` doesn't support picking this up automatically like Xcode does INSTALLER_CODE_SIGN_IDENTITY: "3rd Party Mac Developer Installer: Firezone, Inc. (47R2M6779T)" REQUESTED_XCODE_VERSION: ${{ matrix.xcode }} + # TODO: Change this to "prod" when app is released + XCCONFIG_ENV: staging run: | # Set Xcode version to use if provided [[ ! -z "$REQUESTED_XCODE_VERSION" ]] && sudo xcode-select -s /Applications/Xcode_$REQUESTED_XCODE_VERSION.app - # Copy xcconfig templates - cp Firezone/xcconfig/Developer.xcconfig.firezone Firezone/xcconfig/Developer.xcconfig - cp Firezone/xcconfig/Server.xcconfig.${{ env.CLIENT_ENV }} Firezone/xcconfig/Server.xcconfig + # Copy xcconfig + cp Firezone/xcconfig/${{ env.XCCONFIG_ENV }}.xcconfig Firezone/xcconfig/config.xcconfig # App Store Connect requires a new build version on each upload and it must be an integer. # See https://developer.apple.com/documentation/xcode/build-settings-reference#Current-Project-Version diff --git a/swift/apple/.gitignore b/swift/apple/.gitignore index 109a52cb3..0710a291c 100644 --- a/swift/apple/.gitignore +++ b/swift/apple/.gitignore @@ -5,6 +5,5 @@ DerivedData/ xcuserdata/ **/*.xcuserstate -Firezone/xcconfig/Developer.xcconfig -Firezone/xcconfig/Server.xcconfig +Firezone/xcconfig/config.xcconfig FirezoneNetworkExtension/Connlib diff --git a/swift/apple/Firezone.xcodeproj/project.pbxproj b/swift/apple/Firezone.xcodeproj/project.pbxproj index faff6574b..31210c58f 100644 --- a/swift/apple/Firezone.xcodeproj/project.pbxproj +++ b/swift/apple/Firezone.xcodeproj/project.pbxproj @@ -101,7 +101,6 @@ 05CF1CF6290B1CEE00CF4755 /* FirezoneNetworkExtension_iOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = FirezoneNetworkExtension_iOS.entitlements; sourceTree = ""; }; 05CF1D03290B1DCD00CF4755 /* FirezoneNetworkExtensionmacOS.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = FirezoneNetworkExtensionmacOS.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 05D3BB1628FDBD8A00BC3727 /* NetworkExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NetworkExtension.framework; path = System/Library/Frameworks/NetworkExtension.framework; sourceTree = SDKROOT; }; - 6F68E44B2A588522003C7D08 /* AllConfigs.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = AllConfigs.xcconfig; path = xcconfig/AllConfigs.xcconfig; sourceTree = ""; }; 6FA39A032A6A7248000F0157 /* NetworkResource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkResource.swift; sourceTree = ""; }; 6FE454EA2A5BFABA006549B1 /* Adapter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Adapter.swift; sourceTree = ""; }; 6FE455082A5D110D006549B1 /* CallbackHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallbackHandler.swift; sourceTree = ""; }; @@ -117,6 +116,7 @@ 8DCC022728D512AE007E12D2 /* Firezone.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Firezone.entitlements; sourceTree = ""; }; 8DCC022928D512AE007E12D2 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 8DD2C4C3297B37BA00F984BF /* FirezoneKit */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = FirezoneKit; sourceTree = ""; }; + 8DDD0E8B2ADC6657001FA7E9 /* config.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = config.xcconfig; path = xcconfig/config.xcconfig; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -219,7 +219,7 @@ 8DCC021B28D512AC007E12D2 /* Firezone */ = { isa = PBXGroup; children = ( - 6F68E44B2A588522003C7D08 /* AllConfigs.xcconfig */, + 8DDD0E8B2ADC6657001FA7E9 /* config.xcconfig */, 05E1505F28FF398000170F82 /* Application */, 8DCC022528D512AE007E12D2 /* Assets.xcassets */, 8DCC022728D512AE007E12D2 /* Firezone.entitlements */, @@ -254,8 +254,8 @@ buildConfigurationList = 6FE454BD2A5BC5F3006549B1 /* Build configuration list for PBXLegacyTarget "Build Connlib" */; buildPhases = ( ); - buildToolPath = "${CONNLIB_SOURCE_DIR}/build-rust.sh"; - buildWorkingDirectory = "${CONNLIB_SOURCE_DIR}"; + buildToolPath = "$(CONNLIB_SOURCE_DIR)/build-rust.sh"; + buildWorkingDirectory = "$(CONNLIB_SOURCE_DIR)"; dependencies = ( ); name = "Build Connlib"; @@ -545,9 +545,10 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = FirezoneNetworkExtension/FirezoneNetworkExtension_iOS.entitlements; - CODE_SIGN_IDENTITY = "Apple Distribution: Firezone, Inc. (47R2M6779T)"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_IDENTITY = "$(inherited)"; + CODE_SIGN_STYLE = "$(inherited)"; CURRENT_PROJECT_VERSION = 0; + DEVELOPMENT_TEAM = "$(inherited)"; FRAMEWORK_SEARCH_PATHS = ""; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = FirezoneNetworkExtension/Info.plist; @@ -558,15 +559,15 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - "LIBRARY_SEARCH_PATHS[sdk=iphoneos*]" = "${CONNLIB_TARGET_DIR}/aarch64-apple-ios/debug"; + "LIBRARY_SEARCH_PATHS[sdk=iphoneos*]" = "$(CONNLIB_TARGET_DIR)/aarch64-apple-ios/debug"; MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; MARKETING_VERSION = 1.20231001.0; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = "-lconnlib"; - PRODUCT_BUNDLE_IDENTIFIER = "${APP_ID}.network-extension"; + PRODUCT_BUNDLE_IDENTIFIER = "$(inherited).network-extension"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "23402aaa-f72c-4947-a795-23a9cf495968"; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "$(IOS_NE_PROVISIONING_PROFILE_IDENTIFIER)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = iphoneos; @@ -586,9 +587,10 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = FirezoneNetworkExtension/FirezoneNetworkExtension_iOS.entitlements; - CODE_SIGN_IDENTITY = "Apple Distribution: Firezone, Inc. (47R2M6779T)"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_IDENTITY = "$(inherited)"; + CODE_SIGN_STYLE = "$(inherited)"; CURRENT_PROJECT_VERSION = 0; + DEVELOPMENT_TEAM = "$(inherited)"; FRAMEWORK_SEARCH_PATHS = ""; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = FirezoneNetworkExtension/Info.plist; @@ -599,14 +601,14 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - "LIBRARY_SEARCH_PATHS[sdk=iphoneos*]" = "${CONNLIB_TARGET_DIR}/aarch64-apple-ios/release"; + "LIBRARY_SEARCH_PATHS[sdk=iphoneos*]" = "$(CONNLIB_TARGET_DIR)/aarch64-apple-ios/release"; MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; MARKETING_VERSION = 1.20231001.0; OTHER_LDFLAGS = "-lconnlib"; - PRODUCT_BUNDLE_IDENTIFIER = "${APP_ID}.network-extension"; + PRODUCT_BUNDLE_IDENTIFIER = "$(inherited).network-extension"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "23402aaa-f72c-4947-a795-23a9cf495968"; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "$(IOS_NE_PROVISIONING_PROFILE_IDENTIFIER)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = iphoneos; @@ -626,10 +628,11 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = FirezoneNetworkExtension/FirezoneNetworkExtension_macOS.entitlements; - CODE_SIGN_IDENTITY = "Apple Distribution: Firezone, Inc. (47R2M6779T)"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_IDENTITY = "$(inherited)"; + CODE_SIGN_STYLE = "$(inherited)"; CURRENT_PROJECT_VERSION = 0; DEAD_CODE_STRIPPING = YES; + DEVELOPMENT_TEAM = "$(inherited)"; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = FirezoneNetworkExtension/Info.plist; @@ -646,10 +649,10 @@ "LIBRARY_SEARCH_PATHS[arch=x86_64]" = "$(CONNLIB_TARGET_DIR)/x86_64-apple-darwin/debug"; MARKETING_VERSION = 1.20231001.0; OTHER_LDFLAGS = "-lconnlib"; - PRODUCT_BUNDLE_IDENTIFIER = "${APP_ID}.network-extension"; + PRODUCT_BUNDLE_IDENTIFIER = "$(inherited).network-extension"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "1e965794-0b2c-46d3-a955-d96aacf25546"; + "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "$(MACOS_NE_PROVISIONING_PROFILE_IDENTIFIER)"; SDKROOT = macosx; SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = macosx; @@ -668,10 +671,11 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = FirezoneNetworkExtension/FirezoneNetworkExtension_macOS.entitlements; - CODE_SIGN_IDENTITY = "Apple Distribution: Firezone, Inc. (47R2M6779T)"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_IDENTITY = "$(inherited)"; + CODE_SIGN_STYLE = "$(inherited)"; CURRENT_PROJECT_VERSION = 0; DEAD_CODE_STRIPPING = YES; + DEVELOPMENT_TEAM = "$(inherited)"; ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = FirezoneNetworkExtension/Info.plist; @@ -688,10 +692,10 @@ "LIBRARY_SEARCH_PATHS[arch=x86_64]" = "$(CONNLIB_TARGET_DIR)/x86_64-apple-darwin/release"; MARKETING_VERSION = 1.20231001.0; OTHER_LDFLAGS = "-lconnlib"; - PRODUCT_BUNDLE_IDENTIFIER = "${APP_ID}.network-extension"; + PRODUCT_BUNDLE_IDENTIFIER = "$(inherited).network-extension"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "1e965794-0b2c-46d3-a955-d96aacf25546"; + "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "$(MACOS_NE_PROVISIONING_PROFILE_IDENTIFIER)"; SDKROOT = macosx; SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = macosx; @@ -731,7 +735,7 @@ }; 8DCC024128D512AE007E12D2 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6F68E44B2A588522003C7D08 /* AllConfigs.xcconfig */; + baseConfigurationReference = 8DDD0E8B2ADC6657001FA7E9 /* config.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; @@ -762,6 +766,8 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CONNLIB_SOURCE_DIR = "$(PROJECT_DIR)/../../rust/connlib/clients/apple"; + CONNLIB_TARGET_DIR = "$(PROJECT_DIR)/../../rust/target"; COPY_PHASE_STRIP = NO; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; @@ -794,7 +800,7 @@ }; 8DCC024228D512AE007E12D2 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6F68E44B2A588522003C7D08 /* AllConfigs.xcconfig */; + baseConfigurationReference = 8DDD0E8B2ADC6657001FA7E9 /* config.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; @@ -825,6 +831,8 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CONNLIB_SOURCE_DIR = "$(PROJECT_DIR)/../../rust/connlib/clients/apple"; + CONNLIB_TARGET_DIR = "$(PROJECT_DIR)/../../rust/target"; COPY_PHASE_STRIP = NO; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; @@ -856,12 +864,11 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Firezone/Firezone.entitlements; - CODE_SIGN_IDENTITY = "Apple Distribution: Firezone, Inc. (47R2M6779T)"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_IDENTITY = "$(inherited)"; + CODE_SIGN_STYLE = "$(inherited)"; CURRENT_PROJECT_VERSION = 0; DEAD_CODE_STRIPPING = YES; - DEFINES_MODULE = NO; - DEVELOPMENT_ASSET_PATHS = "\"Firezone/Preview Content\""; + DEVELOPMENT_TEAM = "$(inherited)"; ENABLE_HARDENED_RUNTIME = YES; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; @@ -879,11 +886,11 @@ "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; MARKETING_VERSION = 1.20231001.0; OTHER_LDFLAGS = ""; - PRODUCT_BUNDLE_IDENTIFIER = "${APP_ID}"; + PRODUCT_BUNDLE_IDENTIFIER = "$(inherited)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "b32a5853-699d-4f19-85d3-5b13b1ac5dbb"; - "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "70055d90-0252-4ee5-a60c-4d6f3840ee62"; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "$(IOS_APP_PROVISIONING_PROFILE_IDENTIFIER)"; + "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "$(MACOS_APP_PROVISIONING_PROFILE_IDENTIFIER)"; SDKROOT = auto; SUPPORTED_PLATFORMS = "iphoneos macosx"; SWIFT_EMIT_LOC_STRINGS = YES; @@ -906,12 +913,13 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Firezone/Firezone.entitlements; - CODE_SIGN_IDENTITY = "Apple Distribution: Firezone, Inc. (47R2M6779T)"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_IDENTITY = "$(inherited)"; + CODE_SIGN_STYLE = "$(inherited)"; CURRENT_PROJECT_VERSION = 0; DEAD_CODE_STRIPPING = YES; DEFINES_MODULE = NO; DEVELOPMENT_ASSET_PATHS = "\"Firezone/Preview Content\""; + DEVELOPMENT_TEAM = "$(inherited)"; ENABLE_HARDENED_RUNTIME = YES; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; @@ -928,12 +936,12 @@ LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; MARKETING_VERSION = 1.20231001.0; - PRODUCT_BUNDLE_IDENTIFIER = "${APP_ID}"; + PRODUCT_BUNDLE_IDENTIFIER = "$(inherited)"; PRODUCT_MODULE_NAME = "$(PRODUCT_NAME:c99extidentifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "b32a5853-699d-4f19-85d3-5b13b1ac5dbb"; - "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "70055d90-0252-4ee5-a60c-4d6f3840ee62"; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "$(IOS_APP_PROVISIONING_PROFILE_IDENTIFIER)"; + "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "$(MACOS_APP_PROVISIONING_PROFILE_IDENTIFIER)"; SDKROOT = auto; SUPPORTED_PLATFORMS = "iphoneos macosx"; SWIFT_EMIT_LOC_STRINGS = YES; diff --git a/swift/apple/Firezone/Firezone.entitlements b/swift/apple/Firezone/Firezone.entitlements index 7b3c62dd4..80144f1fd 100644 --- a/swift/apple/Firezone/Firezone.entitlements +++ b/swift/apple/Firezone/Firezone.entitlements @@ -10,7 +10,7 @@ com.apple.security.application-groups - ${APP_GROUP_ID} + $(APP_GROUP_ID) com.apple.security.files.user-selected.read-write diff --git a/swift/apple/Firezone/Info.plist b/swift/apple/Firezone/Info.plist index 7f8fc3e87..1d477333e 100644 --- a/swift/apple/Firezone/Info.plist +++ b/swift/apple/Firezone/Info.plist @@ -16,7 +16,7 @@ AppGroupIdentifier - ${APP_GROUP_ID} + $(APP_GROUP_ID) AuthURLScheme $(AUTH_URL_SCHEME) AuthURLHost diff --git a/swift/apple/Firezone/xcconfig/AllConfigs.xcconfig b/swift/apple/Firezone/xcconfig/AllConfigs.xcconfig deleted file mode 100644 index 32d19aeda..000000000 --- a/swift/apple/Firezone/xcconfig/AllConfigs.xcconfig +++ /dev/null @@ -1,3 +0,0 @@ -#include "Developer.xcconfig" -#include "Server.xcconfig" -#include "Build.xcconfig" diff --git a/swift/apple/Firezone/xcconfig/Build.xcconfig b/swift/apple/Firezone/xcconfig/Build.xcconfig deleted file mode 100644 index e5b68e806..000000000 --- a/swift/apple/Firezone/xcconfig/Build.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -CONNLIB_SOURCE_DIR=${PROJECT_DIR}/../../rust/connlib/clients/apple -CONNLIB_TARGET_DIR=${PROJECT_DIR}/../../rust/target - -APP_GROUP_ID[sdk=macosx*] = ${DEVELOPMENT_TEAM}.group.${APP_ID} -APP_GROUP_ID[sdk=iphoneos*] = group.${APP_ID} diff --git a/swift/apple/Firezone/xcconfig/Developer.xcconfig.firezone b/swift/apple/Firezone/xcconfig/Developer.xcconfig.firezone deleted file mode 100644 index 447850798..000000000 --- a/swift/apple/Firezone/xcconfig/Developer.xcconfig.firezone +++ /dev/null @@ -1,2 +0,0 @@ -DEVELOPMENT_TEAM = 47R2M6779T -APP_ID = dev.firezone.firezone diff --git a/swift/apple/Firezone/xcconfig/Developer.xcconfig.template b/swift/apple/Firezone/xcconfig/Developer.xcconfig.template deleted file mode 100644 index d006cb2ed..000000000 --- a/swift/apple/Firezone/xcconfig/Developer.xcconfig.template +++ /dev/null @@ -1,7 +0,0 @@ -// You Apple developer account's Team ID -DEVELOPMENT_TEAM = - -// The bundle identifier of the apps. -// Should be an app id created at developer.apple.com -// with Network Extensions capability. -APP_ID = diff --git a/swift/apple/Firezone/xcconfig/Server.xcconfig.dev b/swift/apple/Firezone/xcconfig/Server.xcconfig.dev deleted file mode 100644 index 72c112825..000000000 --- a/swift/apple/Firezone/xcconfig/Server.xcconfig.dev +++ /dev/null @@ -1,4 +0,0 @@ -AUTH_URL_SCHEME = http -AUTH_URL_HOST = localhost:8080 -CONTROL_PLANE_URL_SCHEME = ws -CONTROL_PLANE_URL_HOST = localhost:8081 diff --git a/swift/apple/Firezone/xcconfig/Server.xcconfig.staging b/swift/apple/Firezone/xcconfig/Server.xcconfig.staging deleted file mode 100644 index 705a357cb..000000000 --- a/swift/apple/Firezone/xcconfig/Server.xcconfig.staging +++ /dev/null @@ -1,4 +0,0 @@ -AUTH_URL_SCHEME = https -AUTH_URL_HOST = app.firez.one -CONTROL_PLANE_URL_SCHEME = wss -CONTROL_PLANE_URL_HOST = api.firez.one diff --git a/swift/apple/Firezone/xcconfig/Server.xcconfig.template b/swift/apple/Firezone/xcconfig/Server.xcconfig.template deleted file mode 100644 index 3bbd46302..000000000 --- a/swift/apple/Firezone/xcconfig/Server.xcconfig.template +++ /dev/null @@ -1,13 +0,0 @@ -// This file configures the Authentication URL and the Control Plane URL - -// http or https -AUTH_URL_SCHEME = - -// auth host and optional port, e.g. app.firezone.dev:443 -AUTH_URL_HOST = - -// websocket scheme, ws or wss -CONTROL_PLANE_URL_SCHEME = - -// control plane host and optional port, e.g. app.firezone.dev:443 -CONTROL_PLANE_URL_HOST = diff --git a/swift/apple/Firezone/xcconfig/dev.xcconfig b/swift/apple/Firezone/xcconfig/dev.xcconfig new file mode 100644 index 000000000..855f34dce --- /dev/null +++ b/swift/apple/Firezone/xcconfig/dev.xcconfig @@ -0,0 +1,12 @@ +// Apple Developer account-specific configuration +DEVELOPMENT_TEAM = 47R2M6779T +PRODUCT_BUNDLE_IDENTIFIER = dev.firezone.firezone +APP_GROUP_ID[sdk=macosx*] = 47R2M6779T.group.dev.firezone.firezone +APP_GROUP_ID[sdk=iphoneos*] = group.dev.firezone.firezone +CODE_SIGN_STYLE = Automatic + +// Portal Auth +AUTH_URL_SCHEME = http +AUTH_URL_HOST = localhost:8080 +CONTROL_PLANE_URL_SCHEME = ws +CONTROL_PLANE_URL_HOST = localhost:8081 diff --git a/swift/apple/Firezone/xcconfig/prod.xcconfig b/swift/apple/Firezone/xcconfig/prod.xcconfig new file mode 100644 index 000000000..cf435bdbd --- /dev/null +++ b/swift/apple/Firezone/xcconfig/prod.xcconfig @@ -0,0 +1,17 @@ +// Apple Developer account-specific configuration +DEVELOPMENT_TEAM = 47R2M6779T +PRODUCT_BUNDLE_IDENTIFIER = dev.firezone.firezone +APP_GROUP_ID[sdk=macosx*] = 47R2M6779T.group.dev.firezone.firezone +APP_GROUP_ID[sdk=iphoneos*] = group.dev.firezone.firezone +CODE_SIGN_STYLE = Manual +CODE_SIGN_IDENTITY = Apple Distribution: Firezone, Inc. (47R2M6779T) +IOS_APP_PROVISIONING_PROFILE_IDENTIFIER = b32a5853-699d-4f19-85d3-5b13b1ac5dbb +MACOS_APP_PROVISIONING_PROFILE_IDENTIFIER = 70055d90-0252-4ee5-a60c-4d6f3840ee62 +IOS_NE_PROVISIONING_PROFILE_IDENTIFIER = 23402aaa-f72c-4947-a795-23a9cf495968 +MACOS_NE_PROVISIONING_PROFILE_IDENTIFIER = 1e965794-0b2c-46d3-a955-d96aacf25546 + +// Portal Auth +AUTH_URL_SCHEME = https +AUTH_URL_HOST = app.firezone.dev +CONTROL_PLANE_URL_SCHEME = wss +CONTROL_PLANE_URL_HOST = api.firezone.dev diff --git a/swift/apple/Firezone/xcconfig/staging.xcconfig b/swift/apple/Firezone/xcconfig/staging.xcconfig new file mode 100644 index 000000000..3a2aaa7e8 --- /dev/null +++ b/swift/apple/Firezone/xcconfig/staging.xcconfig @@ -0,0 +1,17 @@ +// Apple Developer account-specific configuration +DEVELOPMENT_TEAM = 47R2M6779T +PRODUCT_BUNDLE_IDENTIFIER = dev.firezone.firezone +APP_GROUP_ID[sdk=macosx*] = 47R2M6779T.group.dev.firezone.firezone +APP_GROUP_ID[sdk=iphoneos*] = group.dev.firezone.firezone +CODE_SIGN_STYLE = Manual +CODE_SIGN_IDENTITY = Apple Distribution: Firezone, Inc. (47R2M6779T) +IOS_APP_PROVISIONING_PROFILE_IDENTIFIER = b32a5853-699d-4f19-85d3-5b13b1ac5dbb +MACOS_APP_PROVISIONING_PROFILE_IDENTIFIER = 70055d90-0252-4ee5-a60c-4d6f3840ee62 +IOS_NE_PROVISIONING_PROFILE_IDENTIFIER = 23402aaa-f72c-4947-a795-23a9cf495968 +MACOS_NE_PROVISIONING_PROFILE_IDENTIFIER = 1e965794-0b2c-46d3-a955-d96aacf25546 + +// Portal Auth +AUTH_URL_SCHEME = https +AUTH_URL_HOST = app.firez.one +CONTROL_PLANE_URL_SCHEME = wss +CONTROL_PLANE_URL_HOST = api.firez.one diff --git a/swift/apple/FirezoneKit/Sources/FirezoneKit/Helpers/AppInfoPlistConstants.swift b/swift/apple/FirezoneKit/Sources/FirezoneKit/Helpers/AppInfoPlistConstants.swift index 44f6bc332..3d15d14da 100644 --- a/swift/apple/FirezoneKit/Sources/FirezoneKit/Helpers/AppInfoPlistConstants.swift +++ b/swift/apple/FirezoneKit/Sources/FirezoneKit/Helpers/AppInfoPlistConstants.swift @@ -13,12 +13,12 @@ struct AppInfoPlistConstants { guard let urlScheme = (infoPlistDictionary?["AuthURLScheme"] as? String), !urlScheme.isEmpty else { fatalError( - "AuthURLScheme missing in app's Info.plist. Please define AUTH_URL_SCHEME in Server.xcconfig." + "AuthURLScheme missing in app's Info.plist. Please define AUTH_URL_SCHEME in config.xcconfig." ) } guard let urlHost = (infoPlistDictionary?["AuthURLHost"] as? String), !urlHost.isEmpty else { fatalError( - "AuthURLHost missing in app's Info.plist. Please define AUTH_URL_HOST in Server.xcconfig.") + "AuthURLHost missing in app's Info.plist. Please define AUTH_URL_HOST in config.xcconfig.") } let urlString = "\(urlScheme)://\(urlHost)/" guard let url = URL(string: urlString) else { @@ -33,13 +33,13 @@ struct AppInfoPlistConstants { !urlScheme.isEmpty else { fatalError( - "ControlPlaneURLScheme missing in app's Info.plist. Please define CONTROL_PLANE_URL_SCHEME in Server.xcconfig." + "ControlPlaneURLScheme missing in app's Info.plist. Please define CONTROL_PLANE_URL_SCHEME in config.xcconfig." ) } guard let urlHost = (infoPlistDictionary?["ControlPlaneURLHost"] as? String), !urlHost.isEmpty else { fatalError( - "ControlPlaneURLHost missing in app's Info.plist. Please define CONTROL_PLANE_URL_HOST in Server.xcconfig." + "ControlPlaneURLHost missing in app's Info.plist. Please define CONTROL_PLANE_URL_HOST in config.xcconfig." ) } let urlString = "\(urlScheme)://\(urlHost)/" diff --git a/swift/apple/FirezoneNetworkExtension/FirezoneNetworkExtension_iOS.entitlements b/swift/apple/FirezoneNetworkExtension/FirezoneNetworkExtension_iOS.entitlements index aa8672e95..122fe59bc 100644 --- a/swift/apple/FirezoneNetworkExtension/FirezoneNetworkExtension_iOS.entitlements +++ b/swift/apple/FirezoneNetworkExtension/FirezoneNetworkExtension_iOS.entitlements @@ -8,7 +8,7 @@ com.apple.security.application-groups - ${APP_GROUP_ID} + $(APP_GROUP_ID) diff --git a/swift/apple/FirezoneNetworkExtension/FirezoneNetworkExtension_macOS.entitlements b/swift/apple/FirezoneNetworkExtension/FirezoneNetworkExtension_macOS.entitlements index 7546e62e5..51a75c689 100644 --- a/swift/apple/FirezoneNetworkExtension/FirezoneNetworkExtension_macOS.entitlements +++ b/swift/apple/FirezoneNetworkExtension/FirezoneNetworkExtension_macOS.entitlements @@ -8,7 +8,7 @@ com.apple.security.application-groups - ${APP_GROUP_ID} + $(APP_GROUP_ID) com.apple.security.app-sandbox diff --git a/swift/apple/FirezoneNetworkExtension/Info.plist b/swift/apple/FirezoneNetworkExtension/Info.plist index 2ea50fd66..6be51008c 100644 --- a/swift/apple/FirezoneNetworkExtension/Info.plist +++ b/swift/apple/FirezoneNetworkExtension/Info.plist @@ -10,6 +10,6 @@ $(PRODUCT_MODULE_NAME).PacketTunnelProvider AppGroupIdentifier - ${APP_GROUP_ID} + $(APP_GROUP_ID) diff --git a/swift/apple/README.md b/swift/apple/README.md index cdbc576a6..e998bb25b 100644 --- a/swift/apple/README.md +++ b/swift/apple/README.md @@ -27,16 +27,11 @@ CI/CD pipeline. cd swift/apple ``` -1. Rename and populate xcconfig files: +1. Copy an appropriate xcconfig and edit as necessary: ```bash - cp Firezone/xcconfig/Developer.xcconfig.firezone Firezone/xcconfig/Developer.xcconfig - vim Firezone/xcconfig/Developer.xcconfig - ``` - - ```bash - cp Firezone/xcconfig/Server.xcconfig.template Firezone/xcconfig/Server.xcconfig - vim Firezone/xcconfig/Server.xcconfig + cp Firezone/xcconfig/dev.xcconfig Firezone/xcconfig/config.xcconfig + vim Firezone/xcconfig/config.xcconfig ``` 1. Open project in Xcode: @@ -45,7 +40,7 @@ CI/CD pipeline. open Firezone.xcodeproj ``` -Build the Firezone target +1. Build the Firezone target ## Debugging diff --git a/swift/apple/copy_generated_connlib_files.sh b/swift/apple/copy_generated_connlib_files.sh index f863bc438..9f28673cc 100755 --- a/swift/apple/copy_generated_connlib_files.sh +++ b/swift/apple/copy_generated_connlib_files.sh @@ -14,9 +14,9 @@ fi DEST=./FirezoneNetworkExtension/Connlib if [[ -n "$CONNLIB_SOURCE_DIR" ]]; then set -x - rm -rf ${DEST} - find ${CONNLIB_SOURCE_DIR}/Sources/Connlib - cp -r ${CONNLIB_SOURCE_DIR}/Sources/Connlib ${DEST} + rm -rf $DEST + find $CONNLIB_SOURCE_DIR/Sources/Connlib + cp -r $CONNLIB_SOURCE_DIR/Sources/Connlib $DEST set +x else echo "CONNLIB_SOURCE_DIR is not set. Is this being invoked from Xcode?"