Can xcodebuild manage automatic signing?
Answer is yes. What I used and what I can confirm is working and it is great:
You can set up everything to be automatic:
- Signing keys
- Taking screenshots
- Uploading on iTunes
and many other things
In background it is using xcodebuild command line. I was skeptic that something like this is possible, but just set up, start and enjoy.
For Automatically manage signing
you can use Fastlane. It's easy to install and setup.
For using it on a remote build server - you can use Jenkins.
Here example. You need to setup Jenkins
with Fastlane
to your remote machine. Than Jenkins
will check your repository thread
or just by you command to it. After it Jenkins
run Fastlane
on remote build server. And Fastlane
will create all certificate and other setup that you write in Fastfile
.
If you have only one deploy certificate, you can use Fastlane
service called Match
Easily sync your certificates and profiles across your team using Git
or just send and setup it locally.
Hope it helps you, good luck!
Here example for beta deploy
(for me work with Xcode 9
):
desc "Build devFoo and upload it to Fabric" lane :uploadToFabric do cocoapods cert( development: true, output_path: "./fastlane" ) sigh( development: true, output_path: "./fastlane" ) clear_derived_data gym( scheme: "Foo", configuration: "Debug", clean: true, output_directory: "./fastlane", ) crashlytics( api_token: "foofoofoofoo", build_secret: "foofoofoofoo", emails: ["foo@foo.com"], notifications: true ) slack( message: "New build for test successfully deployed in Fabric", success: true ) end
Here example for release deploy:
desc "Build and upload it to the AppStore and TestFlight" lane :uploadToAppStore do cocoapods cert( development: false, output_path: "./fastlane" ) sigh( development: false, app_identifier: "foofoo", output_path: "./fastlane" ) clear_derived_data gym( scheme: "Foo", configuration: "Release", clean: false, output_directory: "./fastlane", ) deliver( force: true, app_identifier: "foo", skip_metadata: true, skip_screenshots: true, submit_for_review: false, skip_binary_upload: false ) slack( message: "New build successfully deployed to AppStore", success: true ) upload_symbols_to_crashlytics(dsym_path: "./fastlane/foo.app.dSYM.zip") slack( message: "dSYM symbolication files uploaded to Crashlytics", success: true )