From 8c49217142cf6dde9387f9f0f5bed2caeb295272 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 29 Jul 2024 15:24:28 +1000 Subject: [PATCH 01/15] Use shared vars in Buildkite pipilines and explicitly set `mac` queue --- .buildkite/pipeline.yml | 27 ++++++++++++--------------- .buildkite/release-builds.yml | 17 +++++------------ .buildkite/shared-pipeline-vars | 11 +++++++++++ .xcode-version | 1 + 4 files changed, 29 insertions(+), 27 deletions(-) create mode 100755 .buildkite/shared-pipeline-vars create mode 100644 .xcode-version diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index b61b4daec..58fe2ae5a 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -1,29 +1,26 @@ -# Nodes with values to reuse in the pipeline. -common_params: - # Common plugin settings to use with the `plugins` key. - - &common_plugins - - automattic/a8c-ci-toolkit#3.1.0 - # Common environment values to use with the `env` key. - - &common_env - IMAGE_ID: xcode-15.4 - # This is the default pipeline – it will build and test the app + +env: + IMAGE_ID: $IMAGE_ID + steps: - label: "🔬 Build and Test" command: .buildkite/commands/build-and-test.sh - env: *common_env - plugins: *common_plugins + plugins: [$CI_TOOLKIT_PLUGIN] + agents: + queue: mac - label: ":swift: SwiftLint" command: run_swiftlint --strict - plugins: *common_plugins + plugins: [$CI_TOOLKIT_PLUGIN] notify: - github_commit_status: context: "SwiftLint" agents: - queue: "default" + queue: default - label: "🛠 Verify App Store Target Builds" command: .buildkite/commands/build-and-test-app-store.sh - env: *common_env - plugins: *common_plugins + plugins: [$CI_TOOLKIT_PLUGIN] + agents: + queue: mac diff --git a/.buildkite/release-builds.yml b/.buildkite/release-builds.yml index d50740905..606a249c3 100644 --- a/.buildkite/release-builds.yml +++ b/.buildkite/release-builds.yml @@ -1,16 +1,9 @@ -# Nodes with values to reuse in the pipeline. -common_params: - # Common plugin settings to use with the `plugins` key. - - &common_plugins - - automattic/a8c-ci-toolkit#3.1.0 - # Common environment values to use with the `env` key. - - &common_env - IMAGE_ID: xcode-15.4 - -# This is the default pipeline – it will build and test the app steps: - label: "🛠 App Store Upload" command: .buildkite/commands/build-and-upload-release.sh priority: 1 - env: *common_env - plugins: *common_plugins + plugins: [$CI_TOOLKIT_PLUGIN] + agents: + queue: mac + env: + IMAGE_ID: $IMAGE_ID diff --git a/.buildkite/shared-pipeline-vars b/.buildkite/shared-pipeline-vars new file mode 100755 index 000000000..41b493b39 --- /dev/null +++ b/.buildkite/shared-pipeline-vars @@ -0,0 +1,11 @@ +#!/bin/sh + +# This file is `source`'d before calling `buildkite-agent pipeline upload`, and can be used +# to set up some variables that will be interpolated in the `.yml` pipeline before uploading it. + +# The ~> modifier is not currently used, but we check for it just in case +XCODE_VERSION=$(sed -E -n 's/^(~> )?(.*)/xcode-\2/p' .xcode-version) +CI_TOOLKIT_PLUGIN_VERSION="3.4.2" + +export IMAGE_ID="$XCODE_VERSION" +export CI_TOOLKIT_PLUGIN="automattic/a8c-ci-toolkit#$CI_TOOLKIT_PLUGIN_VERSION" diff --git a/.xcode-version b/.xcode-version new file mode 100644 index 000000000..232a7fc1a --- /dev/null +++ b/.xcode-version @@ -0,0 +1 @@ +15.4 From 733a8ec4d04d7c9961c8015aa8bf3f11d952c4b7 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 29 Jul 2024 15:27:23 +1000 Subject: [PATCH 02/15] Use `set_milestone_frozen_marker` over `setfrozentag` --- fastlane/Fastfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 67c4c2436..733259471 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -140,7 +140,7 @@ lane :code_freeze do |options| from_branch: DEFAULT_BRANCH, to_branch: "release/#{new_version}" ) - setfrozentag( + set_milestone_frozen_marker( repository: GITHUB_REPO, milestone: new_version ) From dc0f2778bc89c9cba54497291140b6e4ad67d55f Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 29 Jul 2024 15:42:40 +1000 Subject: [PATCH 03/15] Use `xcconfig` to set `DEVELOPMENT_TEAM` --- Simplenote.xcodeproj/project.pbxproj | 18 ++++++------------ config/Project.Debug.xcconfig | 1 + config/Project.Release.xcconfig | 1 + Base.xcconfig => config/Project.xcconfig | 4 +--- config/Simplenote.debug.xcconfig | 5 ++--- config/Simplenote.release.xcconfig | 5 ++--- 6 files changed, 13 insertions(+), 21 deletions(-) create mode 100644 config/Project.Debug.xcconfig create mode 100644 config/Project.Release.xcconfig rename Base.xcconfig => config/Project.xcconfig (60%) diff --git a/Simplenote.xcodeproj/project.pbxproj b/Simplenote.xcodeproj/project.pbxproj index 5d14b9008..dedfdde49 100644 --- a/Simplenote.xcodeproj/project.pbxproj +++ b/Simplenote.xcodeproj/project.pbxproj @@ -450,7 +450,9 @@ 37F742EA202A382400A47D3A /* AboutViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutViewController.swift; sourceTree = ""; }; 39ACEAE8218A03C6C22DC662 /* Pods-Automattic-Simplenote.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Automattic-Simplenote.release.xcconfig"; path = "Target Support Files/Pods-Automattic-Simplenote/Pods-Automattic-Simplenote.release.xcconfig"; sourceTree = ""; }; 3F1FC4212C0EBEF10066B187 /* Simplenote.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = Simplenote.xctestplan; sourceTree = ""; }; - 3F6C39912C33C11100776C37 /* Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = ""; }; + 3FD478252C5762250071B8B9 /* Project.Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Project.Release.xcconfig; path = config/Project.Release.xcconfig; sourceTree = ""; }; + 3FD478262C5762350071B8B9 /* Project.Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Project.Debug.xcconfig; path = config/Project.Debug.xcconfig; sourceTree = ""; }; + 3FD478272C5762400071B8B9 /* Project.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Project.xcconfig; path = config/Project.xcconfig; sourceTree = ""; }; 466FFF2F17CC10A800399652 /* Simplenote.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Simplenote.app; sourceTree = BUILT_PRODUCTS_DIR; }; 469512CB17CD23100014A2BF /* Simplenote-Info-Hockey.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Simplenote-Info-Hockey.plist"; sourceTree = ""; }; 46A0BEB8175BFD540050E864 /* Simplenote.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Simplenote.entitlements; sourceTree = SOURCE_ROOT; }; @@ -1134,7 +1136,9 @@ 8C902F8C22D3EE350018D654 /* Version.public.xcconfig */, 8C902F8722D3ED910018D654 /* Simplenote.release.xcconfig */, 8C902F8E22D3EFE60018D654 /* Simplenote.debug.xcconfig */, - 3F6C39912C33C11100776C37 /* Base.xcconfig */, + 3FD478252C5762250071B8B9 /* Project.Release.xcconfig */, + 3FD478262C5762350071B8B9 /* Project.Debug.xcconfig */, + 3FD478272C5762400071B8B9 /* Project.xcconfig */, ); name = config; sourceTree = ""; @@ -2573,7 +2577,6 @@ ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-Beta"; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Simplenote/SimplenoteDebug.entitlements; - CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; @@ -2624,7 +2627,6 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Simplenote.entitlements; - CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; DEAD_CODE_STRIPPING = YES; FRAMEWORK_SEARCH_PATHS = ( @@ -2667,7 +2669,6 @@ B52D0EC6230DCAD7003F799D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - CODE_SIGN_STYLE = Manual; DEAD_CODE_STRIPPING = YES; MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -2677,7 +2678,6 @@ B52D0EC7230DCAD7003F799D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - CODE_SIGN_STYLE = Manual; DEAD_CODE_STRIPPING = YES; MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -2700,12 +2700,9 @@ CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = PZYM8XX95Q; - "DEVELOPMENT_TEAM[sdk=macosx*]" = PZYM8XX95Q; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -2744,12 +2741,9 @@ CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; DEAD_CODE_STRIPPING = YES; - DEVELOPMENT_TEAM = PZYM8XX95Q; - "DEVELOPMENT_TEAM[sdk=macosx*]" = PZYM8XX95Q; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; diff --git a/config/Project.Debug.xcconfig b/config/Project.Debug.xcconfig new file mode 100644 index 000000000..9dbeb7233 --- /dev/null +++ b/config/Project.Debug.xcconfig @@ -0,0 +1 @@ +#include "Project.xcconfig" diff --git a/config/Project.Release.xcconfig b/config/Project.Release.xcconfig new file mode 100644 index 000000000..9dbeb7233 --- /dev/null +++ b/config/Project.Release.xcconfig @@ -0,0 +1 @@ +#include "Project.xcconfig" diff --git a/Base.xcconfig b/config/Project.xcconfig similarity index 60% rename from Base.xcconfig rename to config/Project.xcconfig index c6e1326f3..ec91f6440 100644 --- a/Base.xcconfig +++ b/config/Project.xcconfig @@ -1,4 +1,2 @@ -#include "Version.public.xcconfig" - -CODE_SIGN_STYLE = Manual DEVELOPMENT_TEAM = PZYM8XX95Q +CODE_SIGN_STYLE = Manual diff --git a/config/Simplenote.debug.xcconfig b/config/Simplenote.debug.xcconfig index f6c364f6f..46ca7e4f7 100644 --- a/config/Simplenote.debug.xcconfig +++ b/config/Simplenote.debug.xcconfig @@ -1,6 +1,5 @@ #include "Base.xcconfig" +#include "Project.Debug.xcconfig" +#include "Version.public.xcconfig" CODE_SIGN_IDENTITY = Apple Development - -// Notice we don't have a PROVISIONING_PROFILE_SPECIFIER defined here because this xcconfig is used at the project-level but that settings need to be target-level. -// Once we'll have target-level xcconfigs, we shall add the setting there diff --git a/config/Simplenote.release.xcconfig b/config/Simplenote.release.xcconfig index aea1d7bf6..68ae2eef9 100644 --- a/config/Simplenote.release.xcconfig +++ b/config/Simplenote.release.xcconfig @@ -1,6 +1,5 @@ #include "Base.xcconfig" +#include "Project.Release.xcconfig" +#include "Version.public.xcconfig" CODE_SIGN_IDENTITY = Apple Distribution - -// Notice we don't have a PROVISIONING_PROFILE_SPECIFIER defined here because this xcconfig is used at the project-level but that settings need to be target-level. -// Once we'll have target-level xcconfigs, we shall add the setting there From 4b0c9a5052ccfa58e557596e55dc7443c829d9db Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 29 Jul 2024 15:43:34 +1000 Subject: [PATCH 04/15] Remove unused `PROVISIONING_PROFILE` build setting --- Simplenote.xcodeproj/project.pbxproj | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Simplenote.xcodeproj/project.pbxproj b/Simplenote.xcodeproj/project.pbxproj index dedfdde49..7e0e1341c 100644 --- a/Simplenote.xcodeproj/project.pbxproj +++ b/Simplenote.xcodeproj/project.pbxproj @@ -2609,8 +2609,8 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.automattic.SimplenoteMac.Development; PRODUCT_NAME = Simplenote; - PROVISIONING_PROFILE = ""; - PROVISIONING_PROFILE_SPECIFIER = "Simplenote Mac - Development"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "Simplenote Mac - Development"; SDKROOT = macosx; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -2657,8 +2657,6 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.automattic.SimplenoteMac; PRODUCT_NAME = Simplenote; - PROVISIONING_PROFILE = ""; - "PROVISIONING_PROFILE[sdk=macosx*]" = ""; PROVISIONING_PROFILE_SPECIFIER = "match AppStore com.automattic.SimplenoteMac macos"; SDKROOT = macosx; SWIFT_VERSION = 5.0; From eed6436112b23db451eacb05e6fa10e830654922 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 29 Jul 2024 15:49:23 +1000 Subject: [PATCH 05/15] Use `xcconfig` to define provisioning profile for release builds We'll thinking about dev builds later, at the moment, we're focused on the release workflow --- Simplenote.xcodeproj/project.pbxproj | 2 -- config/Project.Release.xcconfig | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Simplenote.xcodeproj/project.pbxproj b/Simplenote.xcodeproj/project.pbxproj index 7e0e1341c..7757ef0dd 100644 --- a/Simplenote.xcodeproj/project.pbxproj +++ b/Simplenote.xcodeproj/project.pbxproj @@ -2657,7 +2657,6 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.automattic.SimplenoteMac; PRODUCT_NAME = Simplenote; - PROVISIONING_PROFILE_SPECIFIER = "match AppStore com.automattic.SimplenoteMac macos"; SDKROOT = macosx; SWIFT_VERSION = 5.0; WRAPPER_EXTENSION = app; @@ -2851,7 +2850,6 @@ MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.automattic.SimplenoteMac.IntentsExtension; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = "match AppStore com.automattic.SimplenoteMac.IntentsExtension macos"; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = APP_EXTENSION; SWIFT_EMIT_LOC_STRINGS = YES; diff --git a/config/Project.Release.xcconfig b/config/Project.Release.xcconfig index 9dbeb7233..e95d9f4ae 100644 --- a/config/Project.Release.xcconfig +++ b/config/Project.Release.xcconfig @@ -1 +1,4 @@ #include "Project.xcconfig" + +// Each target using this will interpolate its own computed value for the bundle id +PROVISIONING_PROFILE_SPECIFIER = match AppStore $(PRODUCT_BUNDLE_IDENTIFIER) macos From 0f1aaca3fff31e560c8af2717e6737d53bb2a962 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 29 Jul 2024 18:01:36 +1000 Subject: [PATCH 06/15] Use `xcconfig` to specify code sign identity and make explicit --- config/Project.Debug.xcconfig | 2 ++ config/Project.Release.xcconfig | 2 ++ 2 files changed, 4 insertions(+) diff --git a/config/Project.Debug.xcconfig b/config/Project.Debug.xcconfig index 9dbeb7233..bb17621fb 100644 --- a/config/Project.Debug.xcconfig +++ b/config/Project.Debug.xcconfig @@ -1 +1,3 @@ #include "Project.xcconfig" + +CODE_SIGN_IDENTITY = Apple Development diff --git a/config/Project.Release.xcconfig b/config/Project.Release.xcconfig index e95d9f4ae..5759879de 100644 --- a/config/Project.Release.xcconfig +++ b/config/Project.Release.xcconfig @@ -2,3 +2,5 @@ // Each target using this will interpolate its own computed value for the bundle id PROVISIONING_PROFILE_SPECIFIER = match AppStore $(PRODUCT_BUNDLE_IDENTIFIER) macos + +CODE_SIGN_IDENTITY = Apple Distribution: Automattic, Inc. (PZYM8XX95Q) From ab7d1d80c3821822b491184dd006148f2403cbcd Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 29 Jul 2024 21:30:20 +1000 Subject: [PATCH 07/15] Update Fastlane to latest version 2.222.0 --- Gemfile | 2 +- Gemfile.lock | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Gemfile b/Gemfile index d1704395d..a26be8d03 100644 --- a/Gemfile +++ b/Gemfile @@ -4,7 +4,7 @@ source 'https://rubygems.org' gem 'cocoapods', '~> 1.14' gem 'danger-dangermattic', '~> 1.0' -gem 'fastlane', '~> 2.219' +gem 'fastlane', '~> 2.222' gem 'fastlane-plugin-appcenter', '~> 1.11' gem 'fastlane-plugin-sentry', '~> 1.14' gem 'fastlane-plugin-wpmreleasetoolkit', '~> 9.2' diff --git a/Gemfile.lock b/Gemfile.lock index 51f3644ac..138450405 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -24,20 +24,20 @@ GEM ast (2.4.2) atomos (0.1.3) aws-eventstream (1.3.0) - aws-partitions (1.940.0) - aws-sdk-core (3.197.0) + aws-partitions (1.958.0) + aws-sdk-core (3.201.3) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.8) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.83.0) - aws-sdk-core (~> 3, >= 3.197.0) - aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.152.0) - aws-sdk-core (~> 3, >= 3.197.0) + aws-sdk-kms (1.88.0) + aws-sdk-core (~> 3, >= 3.201.0) + aws-sigv4 (~> 1.5) + aws-sdk-s3 (1.156.0) + aws-sdk-core (~> 3, >= 3.201.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.8) - aws-sigv4 (1.8.0) + aws-sigv4 (~> 1.5) + aws-sigv4 (1.9.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) base64 (0.2.0) @@ -142,7 +142,7 @@ GEM escape (0.0.4) ethon (0.16.0) ffi (>= 1.15.0) - excon (0.110.0) + excon (0.111.0) faraday (1.10.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -174,7 +174,7 @@ GEM faraday_middleware (1.2.0) faraday (~> 1.0) fastimage (2.3.1) - fastlane (2.220.0) + fastlane (2.222.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -294,7 +294,7 @@ GEM kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) language_server-protocol (3.17.0.3) - mini_magick (4.12.0) + mini_magick (4.13.2) mini_mime (1.1.5) mini_portile2 (2.8.7) minitest (5.23.1) @@ -408,7 +408,7 @@ PLATFORMS DEPENDENCIES cocoapods (~> 1.14) danger-dangermattic (~> 1.0) - fastlane (~> 2.219) + fastlane (~> 2.222) fastlane-plugin-appcenter (~> 1.11) fastlane-plugin-sentry (~> 1.14) fastlane-plugin-wpmreleasetoolkit (~> 9.2) From ae6550ba847fb5da967a6e7206dad9afb036c07a Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 30 Jul 2024 16:28:27 +1000 Subject: [PATCH 08/15] =?UTF-8?q?Remove=20me=20=E2=80=93=20Use=20Xcode=201?= =?UTF-8?q?5.1=20and=20local=20SimplenoteEndpoints?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Simplenote.xcodeproj/project.pbxproj | 30 ++--- .../xcshareddata/swiftpm/Package.resolved | 127 ++++++++++++++++-- 2 files changed, 132 insertions(+), 25 deletions(-) diff --git a/Simplenote.xcodeproj/project.pbxproj b/Simplenote.xcodeproj/project.pbxproj index 7757ef0dd..25a431a8a 100644 --- a/Simplenote.xcodeproj/project.pbxproj +++ b/Simplenote.xcodeproj/project.pbxproj @@ -47,6 +47,7 @@ 37AE49CA1FFEBB0B00FCB165 /* markdown-dark.css in Resources */ = {isa = PBXBuildFile; fileRef = 37AE49C61FFEBB0B00FCB165 /* markdown-dark.css */; }; 37F742EC202A382400A47D3A /* AboutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37F742EA202A382400A47D3A /* AboutViewController.swift */; }; 3F07D7B225DD1CDD00D680D0 /* SearchQuery+Simplenote.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA4854925D5E22000F3BDB9 /* SearchQuery+Simplenote.swift */; }; + 3F107B752C58BF44003F4755 /* SimplenoteEndpoints in Frameworks */ = {isa = PBXBuildFile; productRef = 3F107B742C58BF44003F4755 /* SimplenoteEndpoints */; }; 3FAC7B25254BBCA600B47276 /* SimplenoteInterlinks in Frameworks */ = {isa = PBXBuildFile; productRef = 3FAC7B24254BBCA600B47276 /* SimplenoteInterlinks */; }; 466FFEA817CC10A800399652 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 26F72A9814032D2A00A7935E /* main.m */; }; 466FFEA917CC10A800399652 /* SimplenoteAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 26F72A9F14032D2A00A7935E /* SimplenoteAppDelegate.m */; }; @@ -104,7 +105,6 @@ B518D37E2507C356006EA7F8 /* StringSimplenoteTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B518D37D2507C356006EA7F8 /* StringSimplenoteTests.swift */; }; B51AFE6E25D30A1800A196DF /* SearchField.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51AFE6C25D30A1800A196DF /* SearchField.swift */; }; B51AFE7725D36CDD00A196DF /* NSFont+Simplenote.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51AFE7525D36CDD00A196DF /* NSFont+Simplenote.swift */; }; - B51D44582C52AB2200F296A7 /* SimplenoteEndpoints in Frameworks */ = {isa = PBXBuildFile; productRef = B51D44572C52AB2200F296A7 /* SimplenoteEndpoints */; }; B51D44672C52F5AE00F296A7 /* AuthenticationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51D44662C52F5AE00F296A7 /* AuthenticationError.swift */; }; B51D85F525A8B392005F08CE /* NoteListPrefixFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51D85F325A8B392005F08CE /* NoteListPrefixFormatter.swift */; }; B51E9FE222E615FA004F16B4 /* SPExporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51E9FE022E615FA004F16B4 /* SPExporter.swift */; }; @@ -820,7 +820,7 @@ BA78AF712B5B2BC300DCF896 /* AutomatticTracks in Frameworks */, B5609AF024EF171D0097777A /* SimplenoteFoundation in Frameworks */, 12FDC872D726DADDBE206EC4 /* Pods_Automattic_Simplenote.framework in Frameworks */, - B51D44582C52AB2200F296A7 /* SimplenoteEndpoints in Frameworks */, + 3F107B752C58BF44003F4755 /* SimplenoteEndpoints in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1752,7 +1752,7 @@ B5609AEF24EF171D0097777A /* SimplenoteFoundation */, 3FAC7B24254BBCA600B47276 /* SimplenoteInterlinks */, BA78AF702B5B2BC300DCF896 /* AutomatticTracks */, - B51D44572C52AB2200F296A7 /* SimplenoteEndpoints */, + 3F107B742C58BF44003F4755 /* SimplenoteEndpoints */, ); productName = Simplenote; productReference = 466FFF2F17CC10A800399652 /* Simplenote.app */; @@ -1860,7 +1860,7 @@ B5609AEE24EF171D0097777A /* XCRemoteSwiftPackageReference "SimplenoteFoundation-Swift" */, B50FB24A251C08910028DE25 /* XCRemoteSwiftPackageReference "SimplenoteInterlinks-Swift" */, BA78AF6D2B5B2BAE00DCF896 /* XCRemoteSwiftPackageReference "Automattic-Tracks-iOS" */, - B51D44562C52AB2200F296A7 /* XCRemoteSwiftPackageReference "SimplenoteEndpoints-Swift" */, + 3F9026DF2C58BD430076719E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */, ); productRefGroup = 26F72A8914032D2A00A7935E /* Products */; projectDirPath = ""; @@ -2910,20 +2910,20 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - B50FB24A251C08910028DE25 /* XCRemoteSwiftPackageReference "SimplenoteInterlinks-Swift" */ = { + 3F9026DF2C58BD430076719E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = { isa = XCRemoteSwiftPackageReference; - repositoryURL = "git@github.com:Automattic/SimplenoteInterlinks-Swift.git"; + repositoryURL = "https://github.com/firebase/firebase-ios-sdk"; requirement = { kind = upToNextMajorVersion; - minimumVersion = 1.1.0; + minimumVersion = 10.29.0; }; }; - B51D44562C52AB2200F296A7 /* XCRemoteSwiftPackageReference "SimplenoteEndpoints-Swift" */ = { + B50FB24A251C08910028DE25 /* XCRemoteSwiftPackageReference "SimplenoteInterlinks-Swift" */ = { isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/Automattic/SimplenoteEndpoints-Swift"; + repositoryURL = "git@github.com:Automattic/SimplenoteInterlinks-Swift.git"; requirement = { kind = upToNextMajorVersion; - minimumVersion = 1.0.0; + minimumVersion = 1.1.0; }; }; B5609AE624EEC9860097777A /* XCRemoteSwiftPackageReference "SimplenoteSearch-Swift" */ = { @@ -2953,16 +2953,16 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + 3F107B742C58BF44003F4755 /* SimplenoteEndpoints */ = { + isa = XCSwiftPackageProductDependency; + package = 3F9026DF2C58BD430076719E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = SimplenoteEndpoints; + }; 3FAC7B24254BBCA600B47276 /* SimplenoteInterlinks */ = { isa = XCSwiftPackageProductDependency; package = B50FB24A251C08910028DE25 /* XCRemoteSwiftPackageReference "SimplenoteInterlinks-Swift" */; productName = SimplenoteInterlinks; }; - B51D44572C52AB2200F296A7 /* SimplenoteEndpoints */ = { - isa = XCSwiftPackageProductDependency; - package = B51D44562C52AB2200F296A7 /* XCRemoteSwiftPackageReference "SimplenoteEndpoints-Swift" */; - productName = SimplenoteEndpoints; - }; B5609AE724EEC9860097777A /* SimplenoteSearch */ = { isa = XCSwiftPackageProductDependency; package = B5609AE624EEC9860097777A /* XCRemoteSwiftPackageReference "SimplenoteSearch-Swift" */; diff --git a/Simplenote.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Simplenote.xcworkspace/xcshareddata/swiftpm/Package.resolved index fedcadab1..897ec0969 100644 --- a/Simplenote.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Simplenote.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,6 +1,23 @@ { - "originHash" : "7f8dc02b0065be779873bdc5b585794a5005edfeb5a5e51a04644d5b3c18e322", "pins" : [ + { + "identity" : "abseil-cpp-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/abseil-cpp-binary.git", + "state" : { + "revision" : "194a6706acbd25e4ef639bcaddea16e8758a3e27", + "version" : "1.2024011602.0" + } + }, + { + "identity" : "app-check", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/app-check.git", + "state" : { + "revision" : "3b62f154d00019ae29a71e9738800bb6f18b236d", + "version" : "10.19.2" + } + }, { "identity" : "automattic-tracks-ios", "kind" : "remoteSourceControl", @@ -11,21 +28,102 @@ } }, { - "identity" : "sentry-cocoa", + "identity" : "firebase-ios-sdk", "kind" : "remoteSourceControl", - "location" : "https://github.com/getsentry/sentry-cocoa", + "location" : "https://github.com/firebase/firebase-ios-sdk", "state" : { - "revision" : "a62862c99f5bcb28fd78617fab1a5fe29607c06c", - "version" : "8.28.0" + "revision" : "eca84fd638116dd6adb633b5a3f31cc7befcbb7d", + "version" : "10.29.0" + } + }, + { + "identity" : "googleappmeasurement", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleAppMeasurement.git", + "state" : { + "revision" : "fe727587518729046fc1465625b9afd80b5ab361", + "version" : "10.28.0" + } + }, + { + "identity" : "googledatatransport", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleDataTransport.git", + "state" : { + "revision" : "a637d318ae7ae246b02d7305121275bc75ed5565", + "version" : "9.4.0" + } + }, + { + "identity" : "googleutilities", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleUtilities.git", + "state" : { + "revision" : "57a1d307f42df690fdef2637f3e5b776da02aad6", + "version" : "7.13.3" + } + }, + { + "identity" : "grpc-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/grpc-binary.git", + "state" : { + "revision" : "e9fad491d0673bdda7063a0341fb6b47a30c5359", + "version" : "1.62.2" } }, { - "identity" : "simplenoteendpoints-swift", + "identity" : "gtm-session-fetcher", "kind" : "remoteSourceControl", - "location" : "https://github.com/Automattic/SimplenoteEndpoints-Swift", + "location" : "https://github.com/google/gtm-session-fetcher.git", "state" : { - "revision" : "3d1c0a5db39ca798a7de10e7faeef8ae66e941e6", - "version" : "1.0.0" + "revision" : "a2ab612cb980066ee56d90d60d8462992c07f24b", + "version" : "3.5.0" + } + }, + { + "identity" : "interop-ios-for-google-sdks", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/interop-ios-for-google-sdks.git", + "state" : { + "revision" : "2d12673670417654f08f5f90fdd62926dc3a2648", + "version" : "100.0.0" + } + }, + { + "identity" : "leveldb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/leveldb.git", + "state" : { + "revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1", + "version" : "1.22.5" + } + }, + { + "identity" : "nanopb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/nanopb.git", + "state" : { + "revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1", + "version" : "2.30910.0" + } + }, + { + "identity" : "promises", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/promises.git", + "state" : { + "revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac", + "version" : "2.4.0" + } + }, + { + "identity" : "sentry-cocoa", + "kind" : "remoteSourceControl", + "location" : "https://github.com/getsentry/sentry-cocoa", + "state" : { + "revision" : "a62862c99f5bcb28fd78617fab1a5fe29607c06c", + "version" : "8.28.0" } }, { @@ -55,6 +153,15 @@ "version" : "1.3.0" } }, + { + "identity" : "swift-protobuf", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-protobuf.git", + "state" : { + "revision" : "e17d61f26df0f0e06f58f6977ba05a097a720106", + "version" : "1.27.1" + } + }, { "identity" : "swift-sodium", "kind" : "remoteSourceControl", @@ -74,5 +181,5 @@ } } ], - "version" : 3 + "version" : 2 } From a9007208451515bed8e4375f6163434b5506da8d Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 30 Jul 2024 16:57:46 +1000 Subject: [PATCH 09/15] Use named keyword argument in `app_store_code_signing` --- fastlane/Fastfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 733259471..052415325 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -503,7 +503,7 @@ end # Optionally, it can create any new necessary certificates or profiles. # # @option [Boolean] readonly (default: true) Whether to only fetch existing certificates and profiles, without generating new ones. -lane :app_store_code_signing do |options| +lane :app_store_code_signing do |readonly: true| # Fail early if secrets not available via `get_required_env`. # Otherwise, Fastlane will prompt to type them. access_key = get_required_env('MATCH_S3_ACCESS_KEY') @@ -520,7 +520,7 @@ lane :app_store_code_signing do |options| platform: 'macos', # This Mac app also needs a Mac Installer Distribution certificate additional_cert_types: 'mac_installer_distribution', - readonly: options.fetch(:readonly, true), + readonly: readonly, app_identifier: [ APP_STORE_BUNDLE_IDENTIFIER, APP_STORE_BUNDLE_IDENTIFIER_INTENTS From 2e874abaa451cd633c10aa0ad8975ab00a1151e4 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 30 Jul 2024 17:53:57 +1000 Subject: [PATCH 10/15] Manually bump build to test TestFlight upload --- config/Version.public.xcconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/Version.public.xcconfig b/config/Version.public.xcconfig index 1464122ef..b3f39c483 100644 --- a/config/Version.public.xcconfig +++ b/config/Version.public.xcconfig @@ -6,4 +6,4 @@ VERSION_LONG=2.20.0.4 // This is the value for the CFBundleVersion it should be incremented on every // build that gets distributed -BUILD_NUMBER=11258 +BUILD_NUMBER=11259 From e437d7465b96d11065c76b6073fbf1b9045ef768 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Wed, 31 Jul 2024 10:46:16 +1000 Subject: [PATCH 11/15] Update `export_options` to successfully export App Store Build --- fastlane/Fastfile | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 052415325..ea9938f4b 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -84,7 +84,14 @@ def build_simplenote(codesign:, archive_path: nil) export_team_id: APPLE_TEAM_ID, xcargs: xcargs, export_options: { - method: 'app-store', + # Using 'app-store' (or 'app-store-connect' if/when https://github.com/fastlane/fastlane/pull/22163 lands) + # results `xcodebuild` failing to export the archive due to provisioning profile mismatches. + # + # Also worth asking: Do we need to export the archive (.app) when what needs to go to App Store Connect is the .pkg file which build_mac_app generates anyway? + # + # Note to self: 'package' will not work as method, xcodebuild will reject it. + # I was hoping it solved the issue of how to build the pkg... + method: 'mac-application', manageAppVersionAndBuildNumber: false } ) From 765b6788520d23cb2deed300a2be04fbfbbf7a31 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Wed, 31 Jul 2024 10:46:51 +1000 Subject: [PATCH 12/15] Extract lane to build and upload to ASC in dedicated file --- .rubocop.yml | 1 + fastlane/Fastfile | 57 ++--------------------------------------- fastlane/lanes/build.rb | 52 +++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 55 deletions(-) create mode 100644 fastlane/lanes/build.rb diff --git a/.rubocop.yml b/.rubocop.yml index ad146a0a1..ebb4660e9 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -12,6 +12,7 @@ Layout/LineLength: Metrics/BlockLength: Exclude: - fastlane/Fastfile + - fastlane/lanes/*.rb - Rakefile Style/HashSyntax: diff --git a/fastlane/Fastfile b/fastlane/Fastfile index ea9938f4b..95597d421 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -47,6 +47,8 @@ SKIP_CODE_SIGNING_XCARGS = { CODE_SIGNING_REQUIRED: 'NO' }.freeze +import 'lanes/build.rb' + before_all do # Ensure we use the latest version of the Release Toolkit check_for_toolkit_updates unless is_ci || ENV['FASTLANE_SKIP_TOOLKIT_UPDATE_CHECK'] @@ -382,61 +384,6 @@ lane :upload_app_to_appcenter do |options| end end -############################################################################# -# build_and_upload_app_store -# --------------------------------------------------------------------------- -# This lane builds the app and uploads it to the Mac App Store, optionally -# creating a GitHub release. -# --------------------------------------------------------------------------- -# Usage: -# bundle exec fastlane build_and_upload_app_store [create_github_release:] -# -# Example: -# bundle exec fastlane build_and_upload_app_store -# bundle exec fastlane build_and_upload_app_store create_github_release:true -############################################################################# -lane :build_and_upload_app_store do |options| - configure_apply - sh('rake dependencies:pod:clean') - cocoapods - - setup_ci - - app_store_code_signing - - archive_path = File.join(BUILD_FOLDER, 'Simplenote-Mac.xcarchive') - build_simplenote( - codesign: true, - archive_path: archive_path - ) - - sentry_upload_dsym( - auth_token: get_required_env('SENTRY_AUTH_TOKEN'), - org_slug: 'a8c', - project_slug: 'simplenotemacos', - # At the time of writing, there's no way to explicitly configure the - # dSYM path, but build_mac_app sets it in the environment if successful. - # See `bundle exec fastlane action build_mac_app`. - dsym_path: ENV.fetch('DSYM_OUTPUT_PATH', nil) - ) - - # Do not create the GitHub release unless explicitly requested - if options[:create_github_release] - archive_zip_path = "#{archive_path}.zip" - zip(path: archive_path, output_path: archive_zip_path) - - create_release( - repository: GITHUB_REPO, - version: ios_get_app_version(public_version_xcconfig_file: VERSION_FILE_PATH), - release_notes_file_path: 'Simplenote/Resources/release_notes.txt', - release_assets: [archive_zip_path], - prerelease: options[:prerelease] - ) - end - - upload_to_testflight(api_key: app_store_connect_api_key) -end - ############################################################################# # trigger_release_build # --------------------------------------------------------------------------- diff --git a/fastlane/lanes/build.rb b/fastlane/lanes/build.rb new file mode 100644 index 000000000..4255343f5 --- /dev/null +++ b/fastlane/lanes/build.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +platform :mac do + lane :build_and_upload_app_store do |options| + # configure_apply + # sh('rake dependencies:pod:clean') + # cocoapods + + # setup_ci + + # app_store_code_signing + + archive_path = File.join(BUILD_FOLDER, 'Simplenote-Mac.xcarchive') + build_simplenote( + codesign: true, + archive_path: archive_path + ) + + # sentry_upload_dsym( + # auth_token: get_required_env('SENTRY_AUTH_TOKEN'), + # org_slug: 'a8c', + # project_slug: 'simplenotemacos', + # # At the time of writing, there's no way to explicitly configure the + # # dSYM path, but build_mac_app sets it in the environment if successful. + # # See `bundle exec fastlane action build_mac_app`. + # dsym_path: ENV.fetch('DSYM_OUTPUT_PATH', nil) + # ) + + # # Do not create the GitHub release unless explicitly requested + # if options[:create_github_release] + # archive_zip_path = "#{archive_path}.zip" + # zip(path: archive_path, output_path: archive_zip_path) + + # create_release( + # repository: GITHUB_REPO, + # version: ios_get_app_version(public_version_xcconfig_file: VERSION_FILE_PATH), + # release_notes_file_path: 'Simplenote/Resources/release_notes.txt', + # release_assets: [archive_zip_path], + # prerelease: options[:prerelease] + # ) + # end + + UI.message('Generating pkg via productbuild because gym does not do it for us...') + pkg_path = File.join(BUILD_FOLDER, 'Simplenote.pkg') + sh("productbuild --component '#{File.join(BUILD_FOLDER, 'Simplenote.app')}' '#{pkg_path}'") + + upload_to_testflight( + pkg: pkg_path, + api_key: app_store_connect_api_key + ) + end +end From ed1a53abff423e15097129e20cc397d0a93318a1 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Wed, 31 Jul 2024 10:47:38 +1000 Subject: [PATCH 13/15] =?UTF-8?q?Revert=20"Remove=20me=20=E2=80=93=20Use?= =?UTF-8?q?=20Xcode=2015.1=20and=20local=20SimplenoteEndpoints"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit f419fb0feac3722ce3a15e3c900ab625914c472d. --- Simplenote.xcodeproj/project.pbxproj | 30 ++--- .../xcshareddata/swiftpm/Package.resolved | 127 ++---------------- 2 files changed, 25 insertions(+), 132 deletions(-) diff --git a/Simplenote.xcodeproj/project.pbxproj b/Simplenote.xcodeproj/project.pbxproj index 25a431a8a..7757ef0dd 100644 --- a/Simplenote.xcodeproj/project.pbxproj +++ b/Simplenote.xcodeproj/project.pbxproj @@ -47,7 +47,6 @@ 37AE49CA1FFEBB0B00FCB165 /* markdown-dark.css in Resources */ = {isa = PBXBuildFile; fileRef = 37AE49C61FFEBB0B00FCB165 /* markdown-dark.css */; }; 37F742EC202A382400A47D3A /* AboutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37F742EA202A382400A47D3A /* AboutViewController.swift */; }; 3F07D7B225DD1CDD00D680D0 /* SearchQuery+Simplenote.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA4854925D5E22000F3BDB9 /* SearchQuery+Simplenote.swift */; }; - 3F107B752C58BF44003F4755 /* SimplenoteEndpoints in Frameworks */ = {isa = PBXBuildFile; productRef = 3F107B742C58BF44003F4755 /* SimplenoteEndpoints */; }; 3FAC7B25254BBCA600B47276 /* SimplenoteInterlinks in Frameworks */ = {isa = PBXBuildFile; productRef = 3FAC7B24254BBCA600B47276 /* SimplenoteInterlinks */; }; 466FFEA817CC10A800399652 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 26F72A9814032D2A00A7935E /* main.m */; }; 466FFEA917CC10A800399652 /* SimplenoteAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 26F72A9F14032D2A00A7935E /* SimplenoteAppDelegate.m */; }; @@ -105,6 +104,7 @@ B518D37E2507C356006EA7F8 /* StringSimplenoteTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B518D37D2507C356006EA7F8 /* StringSimplenoteTests.swift */; }; B51AFE6E25D30A1800A196DF /* SearchField.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51AFE6C25D30A1800A196DF /* SearchField.swift */; }; B51AFE7725D36CDD00A196DF /* NSFont+Simplenote.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51AFE7525D36CDD00A196DF /* NSFont+Simplenote.swift */; }; + B51D44582C52AB2200F296A7 /* SimplenoteEndpoints in Frameworks */ = {isa = PBXBuildFile; productRef = B51D44572C52AB2200F296A7 /* SimplenoteEndpoints */; }; B51D44672C52F5AE00F296A7 /* AuthenticationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51D44662C52F5AE00F296A7 /* AuthenticationError.swift */; }; B51D85F525A8B392005F08CE /* NoteListPrefixFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51D85F325A8B392005F08CE /* NoteListPrefixFormatter.swift */; }; B51E9FE222E615FA004F16B4 /* SPExporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51E9FE022E615FA004F16B4 /* SPExporter.swift */; }; @@ -820,7 +820,7 @@ BA78AF712B5B2BC300DCF896 /* AutomatticTracks in Frameworks */, B5609AF024EF171D0097777A /* SimplenoteFoundation in Frameworks */, 12FDC872D726DADDBE206EC4 /* Pods_Automattic_Simplenote.framework in Frameworks */, - 3F107B752C58BF44003F4755 /* SimplenoteEndpoints in Frameworks */, + B51D44582C52AB2200F296A7 /* SimplenoteEndpoints in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1752,7 +1752,7 @@ B5609AEF24EF171D0097777A /* SimplenoteFoundation */, 3FAC7B24254BBCA600B47276 /* SimplenoteInterlinks */, BA78AF702B5B2BC300DCF896 /* AutomatticTracks */, - 3F107B742C58BF44003F4755 /* SimplenoteEndpoints */, + B51D44572C52AB2200F296A7 /* SimplenoteEndpoints */, ); productName = Simplenote; productReference = 466FFF2F17CC10A800399652 /* Simplenote.app */; @@ -1860,7 +1860,7 @@ B5609AEE24EF171D0097777A /* XCRemoteSwiftPackageReference "SimplenoteFoundation-Swift" */, B50FB24A251C08910028DE25 /* XCRemoteSwiftPackageReference "SimplenoteInterlinks-Swift" */, BA78AF6D2B5B2BAE00DCF896 /* XCRemoteSwiftPackageReference "Automattic-Tracks-iOS" */, - 3F9026DF2C58BD430076719E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */, + B51D44562C52AB2200F296A7 /* XCRemoteSwiftPackageReference "SimplenoteEndpoints-Swift" */, ); productRefGroup = 26F72A8914032D2A00A7935E /* Products */; projectDirPath = ""; @@ -2910,20 +2910,20 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - 3F9026DF2C58BD430076719E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = { + B50FB24A251C08910028DE25 /* XCRemoteSwiftPackageReference "SimplenoteInterlinks-Swift" */ = { isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/firebase/firebase-ios-sdk"; + repositoryURL = "git@github.com:Automattic/SimplenoteInterlinks-Swift.git"; requirement = { kind = upToNextMajorVersion; - minimumVersion = 10.29.0; + minimumVersion = 1.1.0; }; }; - B50FB24A251C08910028DE25 /* XCRemoteSwiftPackageReference "SimplenoteInterlinks-Swift" */ = { + B51D44562C52AB2200F296A7 /* XCRemoteSwiftPackageReference "SimplenoteEndpoints-Swift" */ = { isa = XCRemoteSwiftPackageReference; - repositoryURL = "git@github.com:Automattic/SimplenoteInterlinks-Swift.git"; + repositoryURL = "https://github.com/Automattic/SimplenoteEndpoints-Swift"; requirement = { kind = upToNextMajorVersion; - minimumVersion = 1.1.0; + minimumVersion = 1.0.0; }; }; B5609AE624EEC9860097777A /* XCRemoteSwiftPackageReference "SimplenoteSearch-Swift" */ = { @@ -2953,16 +2953,16 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - 3F107B742C58BF44003F4755 /* SimplenoteEndpoints */ = { - isa = XCSwiftPackageProductDependency; - package = 3F9026DF2C58BD430076719E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; - productName = SimplenoteEndpoints; - }; 3FAC7B24254BBCA600B47276 /* SimplenoteInterlinks */ = { isa = XCSwiftPackageProductDependency; package = B50FB24A251C08910028DE25 /* XCRemoteSwiftPackageReference "SimplenoteInterlinks-Swift" */; productName = SimplenoteInterlinks; }; + B51D44572C52AB2200F296A7 /* SimplenoteEndpoints */ = { + isa = XCSwiftPackageProductDependency; + package = B51D44562C52AB2200F296A7 /* XCRemoteSwiftPackageReference "SimplenoteEndpoints-Swift" */; + productName = SimplenoteEndpoints; + }; B5609AE724EEC9860097777A /* SimplenoteSearch */ = { isa = XCSwiftPackageProductDependency; package = B5609AE624EEC9860097777A /* XCRemoteSwiftPackageReference "SimplenoteSearch-Swift" */; diff --git a/Simplenote.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Simplenote.xcworkspace/xcshareddata/swiftpm/Package.resolved index 897ec0969..fedcadab1 100644 --- a/Simplenote.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Simplenote.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,23 +1,6 @@ { + "originHash" : "7f8dc02b0065be779873bdc5b585794a5005edfeb5a5e51a04644d5b3c18e322", "pins" : [ - { - "identity" : "abseil-cpp-binary", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/abseil-cpp-binary.git", - "state" : { - "revision" : "194a6706acbd25e4ef639bcaddea16e8758a3e27", - "version" : "1.2024011602.0" - } - }, - { - "identity" : "app-check", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/app-check.git", - "state" : { - "revision" : "3b62f154d00019ae29a71e9738800bb6f18b236d", - "version" : "10.19.2" - } - }, { "identity" : "automattic-tracks-ios", "kind" : "remoteSourceControl", @@ -28,102 +11,21 @@ } }, { - "identity" : "firebase-ios-sdk", - "kind" : "remoteSourceControl", - "location" : "https://github.com/firebase/firebase-ios-sdk", - "state" : { - "revision" : "eca84fd638116dd6adb633b5a3f31cc7befcbb7d", - "version" : "10.29.0" - } - }, - { - "identity" : "googleappmeasurement", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/GoogleAppMeasurement.git", - "state" : { - "revision" : "fe727587518729046fc1465625b9afd80b5ab361", - "version" : "10.28.0" - } - }, - { - "identity" : "googledatatransport", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/GoogleDataTransport.git", - "state" : { - "revision" : "a637d318ae7ae246b02d7305121275bc75ed5565", - "version" : "9.4.0" - } - }, - { - "identity" : "googleutilities", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/GoogleUtilities.git", - "state" : { - "revision" : "57a1d307f42df690fdef2637f3e5b776da02aad6", - "version" : "7.13.3" - } - }, - { - "identity" : "grpc-binary", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/grpc-binary.git", - "state" : { - "revision" : "e9fad491d0673bdda7063a0341fb6b47a30c5359", - "version" : "1.62.2" - } - }, - { - "identity" : "gtm-session-fetcher", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/gtm-session-fetcher.git", - "state" : { - "revision" : "a2ab612cb980066ee56d90d60d8462992c07f24b", - "version" : "3.5.0" - } - }, - { - "identity" : "interop-ios-for-google-sdks", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/interop-ios-for-google-sdks.git", - "state" : { - "revision" : "2d12673670417654f08f5f90fdd62926dc3a2648", - "version" : "100.0.0" - } - }, - { - "identity" : "leveldb", - "kind" : "remoteSourceControl", - "location" : "https://github.com/firebase/leveldb.git", - "state" : { - "revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1", - "version" : "1.22.5" - } - }, - { - "identity" : "nanopb", - "kind" : "remoteSourceControl", - "location" : "https://github.com/firebase/nanopb.git", - "state" : { - "revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1", - "version" : "2.30910.0" - } - }, - { - "identity" : "promises", + "identity" : "sentry-cocoa", "kind" : "remoteSourceControl", - "location" : "https://github.com/google/promises.git", + "location" : "https://github.com/getsentry/sentry-cocoa", "state" : { - "revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac", - "version" : "2.4.0" + "revision" : "a62862c99f5bcb28fd78617fab1a5fe29607c06c", + "version" : "8.28.0" } }, { - "identity" : "sentry-cocoa", + "identity" : "simplenoteendpoints-swift", "kind" : "remoteSourceControl", - "location" : "https://github.com/getsentry/sentry-cocoa", + "location" : "https://github.com/Automattic/SimplenoteEndpoints-Swift", "state" : { - "revision" : "a62862c99f5bcb28fd78617fab1a5fe29607c06c", - "version" : "8.28.0" + "revision" : "3d1c0a5db39ca798a7de10e7faeef8ae66e941e6", + "version" : "1.0.0" } }, { @@ -153,15 +55,6 @@ "version" : "1.3.0" } }, - { - "identity" : "swift-protobuf", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-protobuf.git", - "state" : { - "revision" : "e17d61f26df0f0e06f58f6977ba05a097a720106", - "version" : "1.27.1" - } - }, { "identity" : "swift-sodium", "kind" : "remoteSourceControl", @@ -181,5 +74,5 @@ } } ], - "version" : 2 + "version" : 3 } From c9906f87667a81ac673d978643672b4a148c5a47 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Wed, 31 Jul 2024 11:02:07 +1000 Subject: [PATCH 14/15] Bump version to test TestFlight upload --- config/Version.public.xcconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/Version.public.xcconfig b/config/Version.public.xcconfig index b3f39c483..5553965b1 100644 --- a/config/Version.public.xcconfig +++ b/config/Version.public.xcconfig @@ -1,8 +1,8 @@ -VERSION_SHORT=2.20 +VERSION_SHORT=2.21 // Public long version. Example: 2.0.0.0. The last 0 means the first build for // version 2.0.0 -VERSION_LONG=2.20.0.4 +VERSION_LONG=2.21.0.0 // This is the value for the CFBundleVersion it should be incremented on every // build that gets distributed From 34ff326c579801ec45af5c8956c0014425743887 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Wed, 31 Jul 2024 11:02:21 +1000 Subject: [PATCH 15/15] Use full path for build folder --- fastlane/Fastfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 95597d421..5d780e1f9 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -12,7 +12,7 @@ PROJECT_FOLDER = Pathname.new(File.join(Dir.pwd, '..')).expand_path.to_s WORKSPACE = 'Simplenote.xcworkspace' INTERNAL_SCHEME = 'Simplenote' APP_STORE_SCHEME = 'Simplenote' -BUILD_FOLDER = 'build' +BUILD_FOLDER = File.join(PROJECT_FOLDER, 'build') APP_STORE_BUNDLE_IDENTIFIER = 'com.automattic.SimplenoteMac' APP_STORE_BUNDLE_IDENTIFIER_INTENTS = "#{APP_STORE_BUNDLE_IDENTIFIER}.IntentsExtension".freeze VERSION_FILE_PATH = File.join(PROJECT_FOLDER, 'config', 'Version.Public.xcconfig')