Skip to content

Commit

Permalink
build: Enable automated production iOS releases
Browse files Browse the repository at this point in the history
Version 1.1.0 is finally on iOS! Plus I will have a much easier time
publishing new releases.

The one key note is that I'm gitignoring two pieces of contact
information that are required for automatically submitting the app for
review `fastlane/metadata/ios/review_information/.gitignore`. Those two
files will have to be created manually in order for the beta/production
builds to upload successfully.
  • Loading branch information
thehale committed Jan 21, 2024
1 parent 467a2ad commit e0749b0
Show file tree
Hide file tree
Showing 44 changed files with 104 additions and 15 deletions.
4 changes: 3 additions & 1 deletion fastlane/.gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
.env
*.json
*.json

!screenshots
21 changes: 20 additions & 1 deletion fastlane/Fastfile
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,26 @@ platform :ios do
issuer_id: ENV["IOS_APP_STORE_CONNECT_ISSUER_ID"],
key_filepath: ENV["IOS_APP_STORE_CONNECT_KEY_FILE_PATH"],
)
pilot
upload_to_testflight
end

desc "Publish a production release to the App Store"
lane :production do
build
app_store_connect_api_key(
key_id: ENV["IOS_APP_STORE_CONNECT_KEY_ID"],
issuer_id: ENV["IOS_APP_STORE_CONNECT_ISSUER_ID"],
key_filepath: ENV["IOS_APP_STORE_CONNECT_KEY_FILE_PATH"],
)
upload_to_app_store(
precheck_include_in_app_purchases: false,
submission_information: {
add_id_info_uses_idfa: false,
},
submit_for_review: true,
metadata_path: "./fastlane/metadata/ios",
force: true
)
end

end
Expand Down
8 changes: 8 additions & 0 deletions fastlane/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,14 @@ Build the iOS application.

Publish a beta release to the App Store

### ios production

```sh
[bundle exec] fastlane ios production
```

Publish a production release to the App Store

----


Expand Down
1 change: 1 addition & 0 deletions fastlane/metadata/ios/copyright.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2024 Joseph Hale
1 change: 1 addition & 0 deletions fastlane/metadata/ios/en-US/apple_tv_privacy_policy.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

9 changes: 9 additions & 0 deletions fastlane/metadata/ios/en-US/description.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Instead of the digits 1, 2, 3, etc... this clock uses columns of dots that turn on and off like the 1s and 0s of the binary form of the number.

Binary Clock also includes several settings you can use to personalize the clock to your liking. Just press and hold the clock to access them.

If you don't know how to tell time on a Binary Clock, check out the instructions in the blog post announcing the app: https://links.jhale.dev/binaryclock

Binary Clock is open-source! Check out the code yourself on GitHub: https://github.com/thehale/BinaryClock

DISCLAIMER: All marketing pictures in this app store listing are designed to complement the nerdy theme of this app. The presence of various books in some marketing pictures in this app store listing does not imply an endorsement of this app by the authors of those publications. Those authors retain copyright and trademark rights to their works.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1 change: 1 addition & 0 deletions fastlane/metadata/ios/en-US/keywords.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
clock, nerdy, binary, computer science, software engineering, open source
1 change: 1 addition & 0 deletions fastlane/metadata/ios/en-US/marketing_url.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://links.jhale.dev/binaryclock
1 change: 1 addition & 0 deletions fastlane/metadata/ios/en-US/name.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Binary Clock by jhale.dev
1 change: 1 addition & 0 deletions fastlane/metadata/ios/en-US/privacy_url.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://jhale.dev/privacy-policy.html
1 change: 1 addition & 0 deletions fastlane/metadata/ios/en-US/promotional_text.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

3 changes: 3 additions & 0 deletions fastlane/metadata/ios/en-US/release_notes.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Were the dots too round?
Now range from square to circle.
Whatever you'd like!
1 change: 1 addition & 0 deletions fastlane/metadata/ios/en-US/subtitle.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions fastlane/metadata/ios/en-US/support_url.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://jhale.dev/projects/2023/05/18/binary-clock-coming-to-ios.html
1 change: 1 addition & 0 deletions fastlane/metadata/ios/primary_category.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTILITIES
1 change: 1 addition & 0 deletions fastlane/metadata/ios/primary_first_sub_category.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions fastlane/metadata/ios/primary_second_sub_category.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

2 changes: 2 additions & 0 deletions fastlane/metadata/ios/review_information/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
email_address.txt
phone_number.txt
1 change: 1 addition & 0 deletions fastlane/metadata/ios/review_information/demo_password.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions fastlane/metadata/ios/review_information/demo_user.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions fastlane/metadata/ios/review_information/first_name.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Joseph
1 change: 1 addition & 0 deletions fastlane/metadata/ios/review_information/last_name.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Hale
1 change: 1 addition & 0 deletions fastlane/metadata/ios/review_information/notes.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
No login required for any part of the application.
1 change: 1 addition & 0 deletions fastlane/metadata/ios/secondary_category.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
EDUCATION
1 change: 1 addition & 0 deletions fastlane/metadata/ios/secondary_first_sub_category.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions fastlane/metadata/ios/secondary_second_sub_category.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
42 changes: 29 additions & 13 deletions ios/BinaryClock.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = BinaryClock/main.m; sourceTree = "<group>"; };
19F6CBCC0A4E27FBF8BF4A61 /* libPods-BinaryClock-BinaryClockTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-BinaryClock-BinaryClockTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
2C2C27A52A0E024500A9296D /* BootSplash.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = BootSplash.storyboard; path = BinaryClock/BootSplash.storyboard; sourceTree = "<group>"; };
2C803F5D2B5CE33200964FB1 /* BinaryClock.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = BinaryClock.entitlements; path = BinaryClock/BinaryClock.entitlements; sourceTree = "<group>"; };
3B4392A12AC88292D35C810B /* Pods-BinaryClock.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BinaryClock.debug.xcconfig"; path = "Target Support Files/Pods-BinaryClock/Pods-BinaryClock.debug.xcconfig"; sourceTree = "<group>"; };
5709B34CF0A7D63546082F79 /* Pods-BinaryClock.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BinaryClock.release.xcconfig"; path = "Target Support Files/Pods-BinaryClock/Pods-BinaryClock.release.xcconfig"; sourceTree = "<group>"; };
5B7EB9410499542E8C5724F5 /* Pods-BinaryClock-BinaryClockTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BinaryClock-BinaryClockTests.debug.xcconfig"; path = "Target Support Files/Pods-BinaryClock-BinaryClockTests/Pods-BinaryClock-BinaryClockTests.debug.xcconfig"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -88,6 +89,7 @@
13B07FAE1A68108700A75B9A /* BinaryClock */ = {
isa = PBXGroup;
children = (
2C803F5D2B5CE33200964FB1 /* BinaryClock.entitlements */,
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
13B07FB01A68108700A75B9A /* AppDelegate.mm */,
13B07FB51A68108700A75B9A /* Images.xcassets */,
Expand Down Expand Up @@ -438,7 +440,7 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
CURRENT_PROJECT_VERSION = 46;
CURRENT_PROJECT_VERSION = 65;
DEVELOPMENT_TEAM = XLMP575759;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
Expand All @@ -451,7 +453,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.0.4;
MARKETING_VERSION = 1.1.0;
OTHER_LDFLAGS = (
"-ObjC",
"-lc++",
Expand All @@ -470,7 +472,7 @@
BUNDLE_LOADER = "$(TEST_HOST)";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 46;
CURRENT_PROJECT_VERSION = 65;
DEVELOPMENT_TEAM = XLMP575759;
INFOPLIST_FILE = BinaryClockTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.4;
Expand All @@ -479,7 +481,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.0.4;
MARKETING_VERSION = 1.1.0;
OTHER_LDFLAGS = (
"-ObjC",
"-lc++",
Expand All @@ -497,20 +499,19 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = BinaryClock/BinaryClock.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 46;
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = XLMP575759;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 65;
DEVELOPMENT_TEAM = XLMP575759;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = BinaryClock/Info.plist;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0.4;
MARKETING_VERSION = 1.1.0;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
Expand All @@ -519,7 +520,6 @@
PRODUCT_BUNDLE_IDENTIFIER = dev.jhale.BinaryClock;
PRODUCT_NAME = BinaryClock;
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development dev.jhale.BinaryClock";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
Expand All @@ -532,10 +532,11 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = BinaryClock/BinaryClock.entitlements;
CODE_SIGN_IDENTITY = "Apple Distribution";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 46;
CURRENT_PROJECT_VERSION = 65;
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = XLMP575759;
INFOPLIST_FILE = BinaryClock/Info.plist;
Expand All @@ -544,7 +545,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0.4;
MARKETING_VERSION = 1.1.0;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
Expand Down Expand Up @@ -600,6 +601,7 @@
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION,
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
Expand All @@ -626,6 +628,11 @@
"-DFOLLY_MOBILE=1",
"-DFOLLY_USE_LIBCPP=1",
);
OTHER_LDFLAGS = (
"$(inherited)",
"-Wl",
"-ld_classic",
);
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
};
Expand Down Expand Up @@ -667,6 +674,10 @@
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION,
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
Expand All @@ -690,6 +701,11 @@
"-DFOLLY_MOBILE=1",
"-DFOLLY_USE_LIBCPP=1",
);
OTHER_LDFLAGS = (
"$(inherited)",
"-Wl",
"-ld_classic",
);
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
Expand Down
8 changes: 8 additions & 0 deletions ios/BinaryClock/BinaryClock.entitlements
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.game-center</key>
<true/>
</dict>
</plist>
2 changes: 2 additions & 0 deletions ios/BinaryClock/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
Expand Down

0 comments on commit e0749b0

Please sign in to comment.