Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/flutter build ipa support #206

Merged
merged 24 commits into from
Feb 4, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
12b8a36
Update pubspec.lock
mafreud Jan 28, 2025
f91d665
Trivial pubspec.yaml whitespace update
mafreud Jan 28, 2025
d4c22cb
Fix build issue
mafreud Jan 28, 2025
406000b
Update dashboard to upload ASC keys
mafreud Jan 28, 2025
60476af
Update
mafreud Feb 1, 2025
631b1bc
Merge branch 'develop' into feat/flutter-build-ipa-support
mafreud Feb 1, 2025
1789f66
Implement full iOS build and signing workflow for Flutter app
mafreud Feb 1, 2025
68fb42a
Merge branch 'feat/flutter-build-ipa-support' of https://github.com/o…
mafreud Feb 1, 2025
6b74664
Enhance iOS build workflow with dynamic provisioning and signing conf…
mafreud Feb 2, 2025
8140277
Add iOS entitlements file for development environment
mafreud Feb 2, 2025
56f0428
Update
mafreud Feb 2, 2025
2257147
Update
mafreud Feb 2, 2025
8d91c0e
Add sentry for dashboard
mafreud Feb 2, 2025
b6f2dbc
Add firebase to dashboard(ios)
mafreud Feb 2, 2025
8507a1b
Bump dashboard version to 1.1.0+4
mafreud Feb 2, 2025
df611e4
Add delete-provisioning-profile command to OpenCI CLI
mafreud Feb 2, 2025
9654100
Update OpenCI CLI README with comprehensive documentation
mafreud Feb 2, 2025
20ca912
Improve iOS build workflow with dynamic provisioning profile and cleanup
mafreud Feb 2, 2025
1171654
Improve provisioning profile deletion in iOS build workflow
mafreud Feb 2, 2025
2dbc2eb
Improve OpenCI CLI and provisioning profile handling
mafreud Feb 2, 2025
4adf001
Remove unnecessary delay in Flutter build IPA handler and bump dashbo…
mafreud Feb 2, 2025
557b1b1
Bump dashboard version to 1.1.0+9
mafreud Feb 2, 2025
d437e78
Refactor Flutter build IPA handler with improved certificate and prov…
mafreud Feb 4, 2025
1e28494
Fix runMultiCommands logic in openci_runner
mafreud Feb 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .dart_tool/extension_discovery/devtools.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"version":2,"entries":[{"package":"openci","rootUri":"../","packageUri":"lib/"}]}
Binary file modified apps/.DS_Store
Binary file not shown.
12 changes: 10 additions & 2 deletions apps/dashboard/firebase.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"lib/firebase_options.dart": {
"projectId": "open-ci-release",
"configurations": {
"android": "1:226435817638:android:6848f67578b6d77ac1d467"
"ios": "1:226435817638:ios:aecb8b1ecfed8e9dc1d467"
}
}
},
Expand All @@ -23,11 +23,19 @@
"appId": "1:226435817638:android:6848f67578b6d77ac1d467",
"fileOutput": "android/app/google-services.json"
}
},
"ios": {
"default": {
"projectId": "open-ci-release",
"appId": "1:226435817638:ios:aecb8b1ecfed8e9dc1d467",
"uploadDebugSymbols": false,
"fileOutput": "ios/Runner/GoogleService-Info.plist"
}
}
}
},
"firestore": {
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
}
}
}
1 change: 1 addition & 0 deletions apps/dashboard/firestore.rules
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ service cloud.firestore {
}
match /secrets_v1/{secretId} {
allow create: if request.auth.uid != null;
allow list: if request.auth.uid != null;
allow read, update, delete: if request.auth.uid != null
&& resource.data.owners.hasAny([request.auth.uid]);
}
Expand Down
2 changes: 2 additions & 0 deletions apps/dashboard/ios/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,5 @@ Runner/GeneratedPluginRegistrant.*
!default.mode2v3
!default.pbxuser
!default.perspectivev3

Runner/GoogleService-Info.plist
85 changes: 51 additions & 34 deletions apps/dashboard/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1151,8 +1151,8 @@ PODS:
- BoringSSL-GRPC/Implementation (0.0.36):
- BoringSSL-GRPC/Interface (= 0.0.36)
- BoringSSL-GRPC/Interface (0.0.36)
- cloud_firestore (5.6.0):
- Firebase/Firestore (= 11.4.0)
- cloud_firestore (5.6.2):
- Firebase/Firestore (= 11.6.0)
- firebase_core
- Flutter
- DKImagePickerController/Core (4.3.9):
Expand Down Expand Up @@ -1189,46 +1189,46 @@ PODS:
- file_picker (0.0.1):
- DKImagePickerController/PhotoGallery
- Flutter
- Firebase/Auth (11.4.0):
- Firebase/Auth (11.6.0):
- Firebase/CoreOnly
- FirebaseAuth (~> 11.4.0)
- Firebase/CoreOnly (11.4.0):
- FirebaseCore (= 11.4.0)
- Firebase/Firestore (11.4.0):
- FirebaseAuth (~> 11.6.0)
- Firebase/CoreOnly (11.6.0):
- FirebaseCore (~> 11.6.0)
- Firebase/Firestore (11.6.0):
- Firebase/CoreOnly
- FirebaseFirestore (~> 11.4.0)
- firebase_auth (5.3.4):
- Firebase/Auth (= 11.4.0)
- FirebaseFirestore (~> 11.6.0)
- firebase_auth (5.4.1):
- Firebase/Auth (= 11.6.0)
- firebase_core
- Flutter
- firebase_core (3.9.0):
- Firebase/CoreOnly (= 11.4.0)
- firebase_core (3.10.1):
- Firebase/CoreOnly (= 11.6.0)
- Flutter
- FirebaseAppCheckInterop (11.6.0)
- FirebaseAuth (11.4.0):
- FirebaseAuth (11.6.0):
- FirebaseAppCheckInterop (~> 11.0)
- FirebaseAuthInterop (~> 11.0)
- FirebaseCore (~> 11.4)
- FirebaseCoreExtension (~> 11.4)
- FirebaseCore (~> 11.6.0)
- FirebaseCoreExtension (~> 11.6.0)
- GoogleUtilities/AppDelegateSwizzler (~> 8.0)
- GoogleUtilities/Environment (~> 8.0)
- GTMSessionFetcher/Core (< 5.0, >= 3.4)
- RecaptchaInterop (~> 100.0)
- FirebaseAuthInterop (11.6.0)
- FirebaseCore (11.4.0):
- FirebaseCoreInternal (~> 11.0)
- FirebaseCore (11.6.0):
- FirebaseCoreInternal (~> 11.6.0)
- GoogleUtilities/Environment (~> 8.0)
- GoogleUtilities/Logger (~> 8.0)
- FirebaseCoreExtension (11.4.1):
- FirebaseCore (~> 11.0)
- FirebaseCoreExtension (11.6.0):
- FirebaseCore (~> 11.6.0)
- FirebaseCoreInternal (11.6.0):
- "GoogleUtilities/NSData+zlib (~> 8.0)"
- FirebaseFirestore (11.4.0):
- FirebaseCore (~> 11.4)
- FirebaseCoreExtension (~> 11.4)
- FirebaseFirestoreInternal (= 11.4.0)
- FirebaseFirestore (11.6.0):
- FirebaseCore (~> 11.6.0)
- FirebaseCoreExtension (~> 11.6.0)
- FirebaseFirestoreInternal (= 11.6.0)
- FirebaseSharedSwift (~> 11.0)
- FirebaseFirestoreInternal (11.4.0):
- FirebaseFirestoreInternal (11.6.0):
- abseil/algorithm (~> 1.20240116.1)
- abseil/base (~> 1.20240116.1)
- abseil/container/flat_hash_map (~> 1.20240116.1)
Expand All @@ -1238,7 +1238,7 @@ PODS:
- abseil/time (~> 1.20240116.1)
- abseil/types (~> 1.20240116.1)
- FirebaseAppCheckInterop (~> 11.0)
- FirebaseCore (~> 11.0)
- FirebaseCore (~> 11.6.0)
- "gRPC-C++ (~> 1.65.0)"
- gRPC-Core (~> 1.65.0)
- leveldb-library (~> 1.22)
Expand Down Expand Up @@ -1363,13 +1363,20 @@ PODS:
- nanopb/encode (= 3.30910.0)
- nanopb/decode (3.30910.0)
- nanopb/encode (3.30910.0)
- package_info_plus (0.4.5):
- Flutter
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- RecaptchaInterop (100.0.0)
- SDWebImage (5.20.0):
- SDWebImage/Core (= 5.20.0)
- SDWebImage/Core (5.20.0)
- Sentry/HybridSDK (8.44.0-beta.1)
- sentry_flutter (8.13.0-beta.3):
- Flutter
- FlutterMacOS
- Sentry/HybridSDK (= 8.44.0-beta.1)
- SwiftyGif (5.4.5)

DEPENDENCIES:
Expand All @@ -1378,7 +1385,9 @@ DEPENDENCIES:
- firebase_auth (from `.symlinks/plugins/firebase_auth/ios`)
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
- Flutter (from `Flutter`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- sentry_flutter (from `.symlinks/plugins/sentry_flutter/ios`)

SPEC REPOS:
trunk:
Expand All @@ -1404,6 +1413,7 @@ SPEC REPOS:
- nanopb
- RecaptchaInterop
- SDWebImage
- Sentry
- SwiftyGif

EXTERNAL SOURCES:
Expand All @@ -1417,27 +1427,31 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/firebase_core/ios"
Flutter:
:path: Flutter
package_info_plus:
:path: ".symlinks/plugins/package_info_plus/ios"
path_provider_foundation:
:path: ".symlinks/plugins/path_provider_foundation/darwin"
sentry_flutter:
:path: ".symlinks/plugins/sentry_flutter/ios"

SPEC CHECKSUMS:
abseil: d121da9ef7e2ff4cab7666e76c5a3e0915ae08c3
BoringSSL-GRPC: ca6a8e5d04812fce8ffd6437810c2d46f925eaeb
cloud_firestore: 50c9e447367f07951ec36e06dffbce8e38bc2149
cloud_firestore: ad4e5097d52cb08257b37e31c272b2130f964934
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
file_picker: 9b3292d7c8bc68c8a7bf8eb78f730e49c8efc517
Firebase: cf1b19f21410b029b6786a54e9764a0cacad3c99
firebase_auth: dee97e7428ef7c304083839d4e3bc4313c03afd5
firebase_core: 726c34112998e66d1ddaf4b1bef78ed2dd4b9804
Firebase: 374a441a91ead896215703a674d58cdb3e9d772b
firebase_auth: d60969911baf096763178412a28388c39f361e2d
firebase_core: d3deb82d05dac4bc13190f9d1770787fd6a1cda4
FirebaseAppCheckInterop: 347aa09a805219a31249b58fc956888e9fcb314b
FirebaseAuth: c359af98bd703cbf4293eec107a40de08ede6ce6
FirebaseAuth: 0304982cfe00df8d49bf533bc4becd3de36c7122
FirebaseAuthInterop: a919d415797d23b7bfe195a04f322b86c65020ef
FirebaseCore: e0510f1523bc0eb21653cac00792e1e2bd6f1771
FirebaseCoreExtension: f1bc67a4702931a7caa097d8e4ac0a1b0d16720e
FirebaseCore: 48b0dd707581cf9c1a1220da68223fb0a562afaa
FirebaseCoreExtension: 2d77d6430c16cf43ca2b04608302ed02b3598361
FirebaseCoreInternal: d98ab91e2d80a56d7b246856a8885443b302c0c2
FirebaseFirestore: 2ccdf893fd7e175aa8ec58faa06338b346d27db8
FirebaseFirestoreInternal: 004452c4669d5df8869c9f8f7a24ee0009852d5b
FirebaseFirestore: d5dcc15724f291fe4b415322754bfa01616037fe
FirebaseFirestoreInternal: db478fdaeb98fe8686ff49e600f3871c224a76ff
FirebaseSharedSwift: a4e5dfca3e210633bb3a3dfb94176c019211948b
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d
Expand All @@ -1446,9 +1460,12 @@ SPEC CHECKSUMS:
GTMSessionFetcher: 923b710231ad3d6f3f0495ac1ced35421e07d9a6
leveldb-library: cc8b8f8e013647a295ad3f8cd2ddf49a6f19be19
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21
SDWebImage: 73c6079366fea25fa4bb9640d5fb58f0893facd8
Sentry: 194afe75566708912103f9a32f4cd8d2392e9307
sentry_flutter: e4f0c56cb886385c1210b3fa618fc6b458d87d06
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4

PODFILE CHECKSUM: 605c32f2fdd50c4f52b7b468d638bf62f371d321
Expand Down
30 changes: 15 additions & 15 deletions apps/dashboard/ios/Runner.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
2EE79E5054D3A01F89D65173 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CF91D7544EB9B7459F2B8EB6 /* Pods_Runner.framework */; };
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
717DA40C048897A625CAC55C /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = B92BC7B128327F0FC41F1EEB /* GoogleService-Info.plist */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
Expand Down Expand Up @@ -63,8 +64,10 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
B92BC7B128327F0FC41F1EEB /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = "<group>"; };
C50137BE76501CB95C146061 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
CF91D7544EB9B7459F2B8EB6 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
FDAFB4DD2D4F018E005936FA /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -124,6 +127,7 @@
331C8082294A63A400263BE5 /* RunnerTests */,
D6AE210BE638C61DFDDC3064 /* Pods */,
738C9C2F936B695B515A128A /* Frameworks */,
B92BC7B128327F0FC41F1EEB /* GoogleService-Info.plist */,
);
sourceTree = "<group>";
};
Expand All @@ -139,6 +143,7 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
FDAFB4DD2D4F018E005936FA /* Runner.entitlements */,
97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
Expand Down Expand Up @@ -263,6 +268,7 @@
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
717DA40C048897A625CAC55C /* GoogleService-Info.plist in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -469,12 +475,11 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = T4W85DPBVX;
DEVELOPMENT_TEAM = T4W85DPBVX;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
Expand All @@ -484,7 +489,6 @@
PRODUCT_BUNDLE_IDENTIFIER = io.openci.dashboard.ios;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "for openci dashboard ios";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
Expand Down Expand Up @@ -658,12 +662,11 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = T4W85DPBVX;
DEVELOPMENT_TEAM = T4W85DPBVX;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
Expand All @@ -673,7 +676,6 @@
PRODUCT_BUNDLE_IDENTIFIER = io.openci.dashboard.ios;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "for openci dashboard ios";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
Expand All @@ -687,12 +689,11 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = T4W85DPBVX;
DEVELOPMENT_TEAM = T4W85DPBVX;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
Expand All @@ -702,7 +703,6 @@
PRODUCT_BUNDLE_IDENTIFIER = io.openci.dashboard.ios;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "for openci dashboard ios";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
Expand Down
Loading