{"id":123,"date":"2021-11-09T07:50:10","date_gmt":"2021-11-09T07:50:10","guid":{"rendered":"http:\/\/mohammadreza.me\/blog\/?p=123"},"modified":"2022-07-26T07:27:28","modified_gmt":"2022-07-26T07:27:28","slug":"xcodebuild-test-build-archive-and-upload-with-command-line","status":"publish","type":"post","link":"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/","title":{"rendered":"xcodebuild: Test, build, and archive with command-line"},"content":{"rendered":"\n<p>Deployment of an iOS app to <a href=\"https:\/\/itunesconnect.apple.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">iTunes Connect<\/a> is time-consuming process and as an iOS developer (and of course as a human) I always want to make process easy. it&#8217;s very common for iOS developers test, build, archive and upload to iTunes Connect with Xcode. but is there any easier process? the answer is yes, xcodebuild commands.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is the xcodebuild<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>xcodebuild is command-line tool that allows developers to perform build, query, analyze, test and archive operations on Xcode projects and workspaces from the command-line. It operates on one or more targets contained in our project, or a scheme contained in our project or workspace.<\/p><\/blockquote>\n\n\n\n<p>In this post, we will learn more about xcodebuild and find out how it works.<\/p>\n\n\n\n<div style=\"height:12px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-wide\"\/>\n\n\n\n<div style=\"height:12px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Analysing<\/h2>\n\n\n\n<p>The static analyzer tries out thousands of possible code paths in a few seconds, reporting potential bugs that might have remained hidden or bugs that might be nearly impossible to replicate. we can Analyze our project with this command:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ xcodebuild -project Sample Project.xcodeproj -scheme Sample Project -sdk iphonesimulator15.0 clean analyze<\/pre>\n\n\n\n<div style=\"height:16px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-wide\"\/>\n\n\n\n<div style=\"height:16px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Building<\/h2>\n\n\n\n<p>By build command we can simply run our app inside simulators or can be used by test bundle.<\/p>\n\n\n\n<div style=\"height:16px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Build for running<\/h4>\n\n\n\n<p>For running our app in simulator just add this command:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ xcodebuild build-for-testing -workspace Sample Project.xcworkspace -scheme  Sample Project -destination generic\/platform=iOS<\/pre>\n\n\n\n<p>This will create a derive data inside ~\/Library\/Developer\/Xcode\/DerivedData\/ directory. Thre are various options that we can pass to override the default settings so that we can control the artifact e.g -destination or -derivedDataPath etc<\/p>\n\n\n\n<div style=\"height:16px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Build for testing<\/h4>\n\n\n\n<p>We can build for testing using command:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ xcodebuild build-for-testing -workspace Sample Project.xcworkspace -scheme Sample Project -destination generic\/platform=iOS<\/pre>\n\n\n\n<p>Now that, we can use test-without-building action to run tests without building an app.<\/p>\n\n\n\n<div style=\"height:16px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-wide\"\/>\n\n\n\n<div style=\"height:16px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Testing<\/h2>\n\n\n\n<p>We can run tests using command:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ xcodebuild -scheme Sample Project -workspace Sample Project.xcworkspace\/ test<\/pre>\n\n\n\n<p>this command will build the Sample project and run tests.<\/p>\n\n\n\n<div style=\"height:16px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-wide\"\/>\n\n\n\n<div style=\"height:16px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Archiving<\/h2>\n\n\n\n<p>As an iOS developer I have so much pain and headache with archiving process and dealing with provisioning profiles, certificates and build configurations. with a command line we can export out projects in IPA format.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ xcodebuild -exportArchive -archivePath $PWD\/build\/Sample Project.xcarchive -exportOptionsPlist exportOptions.plist -exportPath $PWD\/build<\/pre>\n\n\n\n<p>Note that above command requires a -exportOptionsPlist argument that points to a .plist file with export options. For a complete list of what you can put in that plist, run xcodebuild -help. The minimal contents of the file looks like this:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?>\n&lt;!DOCTYPE plist PUBLIC \"-\/\/Apple\/\/DTD PLIST 1.0\/\/EN\" \"http:\/\/www.apple.com\/DTDs\/PropertyList-1.0.dtd\">\n&lt;plist version=\"1.0\">\n&lt;dict>\n    &lt;key>method&lt;\/key>\n    &lt;string>app-store&lt;\/string>\n    &lt;key>teamID&lt;\/key>\n    &lt;string>YOUR_TEN_CHARACTER_TEAM_ID&lt;\/string>\n&lt;\/dict>\n&lt;\/plist><\/pre>\n\n\n\n<p>we run this command successfully, we will have IPA file created using provisioning profile \u2018Sample Project Distribution Profile\u2019. At the end we will have our IPA, Sample Project.ipa binary ready to upload to iTunes Connect.<\/p>\n\n\n\n<div style=\"height:16px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-wide\"\/>\n\n\n\n<div style=\"height:16px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Example<\/h2>\n\n\n\n<p>Here is my daily xcodebuild commands:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># 1. Project Test\necho '\ud83c\udf11  1.Project test begin...'\nxcodebuild -project 'MyApp.xcodeproj' -scheme 'MyApp' -destination 'platform=iOS Simulator,name=iPhone 8,OS=14.4' -configuration Release test | xcpretty\n# 2. Project Archive\necho '\ud83c\udf18  2.Project archive begin...'\nxcodebuild -project 'MyApp.xcodeproj' -scheme 'MyApp' -destination 'generic\/platform=iOS'  -allowProvisioningUpdates -archivePath 'Archive\/MyApp.xcarchive' -configuration Release PROVISIONING_PROFILE='iOS Team Provisioning Profile: *' clean archive | xcpretty\n# 3. Export project .ipa file\necho '\ud83c\udf17  3.Project export begin...'\nxcodebuild -exportArchive -archivePath 'Archive\/MyApp.xcarchive' -exportPath 'Release' -allowProvisioningUpdates -exportOptionsPlist 'Tools\/ExportOptions.plist'\n\n\n# 4. Remove Archive folder\necho '\ud83c\udf16  4.Remove Archive folder begin...'\nrm -rf 'Archive'\necho '** REMOVING END **'\necho ''\n# 5. Move Release folder to Developer folder\necho '\ud83c\udf15  5.Moving Release folder begin...'\nmv 'Release' 'Final Path'\necho '** MOVING END **'\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Deployment of an iOS app to iTunes Connect is time-consuming process and as an iOS developer (and of course as a human) I always want to make process easy. it&#8217;s very common for iOS developers test, build, archive and upload to iTunes Connect with Xcode. but is there any easier process? the answer is yes, &hellip; <a href=\"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">xcodebuild: Test, build, and archive with command-line<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":132,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[25],"class_list":["post-123","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-swift","tag-xcodebuild"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>xcodebuild: Test, build, and archive with command-line - Swift with Reza<\/title>\n<meta name=\"description\" content=\"Deployment of an iOS app to iTunes Connect is time-consuming process and as an iOS developer (and of course as a human) I always want to...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"xcodebuild: Test, build, and archive with command-line - Swift with Reza\" \/>\n<meta property=\"og:description\" content=\"Deployment of an iOS app to iTunes Connect is time-consuming process and as an iOS developer (and of course as a human) I always want to...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/\" \/>\n<meta property=\"og:site_name\" content=\"Swift with Reza\" \/>\n<meta property=\"article:published_time\" content=\"2021-11-09T07:50:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-26T07:27:28+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/mohammadreza.me\/blog\/wp-content\/uploads\/2021\/11\/xcodebuild.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1621\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Reza\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Reza\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/\",\"url\":\"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/\",\"name\":\"xcodebuild: Test, build, and archive with command-line - Swift with Reza\",\"isPartOf\":{\"@id\":\"https:\/\/mohammadreza.me\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/mohammadreza.me\/blog\/wp-content\/uploads\/2021\/11\/xcodebuild.jpg\",\"datePublished\":\"2021-11-09T07:50:10+00:00\",\"dateModified\":\"2022-07-26T07:27:28+00:00\",\"author\":{\"@id\":\"https:\/\/mohammadreza.me\/blog\/#\/schema\/person\/9ab155944216224664701a81bc56cf8c\"},\"description\":\"Deployment of an iOS app to iTunes Connect is time-consuming process and as an iOS developer (and of course as a human) I always want to...\",\"breadcrumb\":{\"@id\":\"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/#primaryimage\",\"url\":\"https:\/\/mohammadreza.me\/blog\/wp-content\/uploads\/2021\/11\/xcodebuild.jpg\",\"contentUrl\":\"https:\/\/mohammadreza.me\/blog\/wp-content\/uploads\/2021\/11\/xcodebuild.jpg\",\"width\":1621,\"height\":800,\"caption\":\"xcodebuild\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/mohammadreza.me\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"xcodebuild: Test, build, and archive with command-line\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/mohammadreza.me\/blog\/#website\",\"url\":\"https:\/\/mohammadreza.me\/blog\/\",\"name\":\"Swift with Reza\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/mohammadreza.me\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/mohammadreza.me\/blog\/#\/schema\/person\/9ab155944216224664701a81bc56cf8c\",\"name\":\"Reza\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/mohammadreza.me\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1a4d35be7e8c853112a49822b1ccc907e5855a115f93d587800a7d71f2255f01?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1a4d35be7e8c853112a49822b1ccc907e5855a115f93d587800a7d71f2255f01?s=96&d=mm&r=g\",\"caption\":\"Reza\"},\"sameAs\":[\"http:\/\/mohammadreza.me\/blog\"],\"url\":\"https:\/\/mohammadreza.me\/blog\/author\/mohammadreza\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"xcodebuild: Test, build, and archive with command-line - Swift with Reza","description":"Deployment of an iOS app to iTunes Connect is time-consuming process and as an iOS developer (and of course as a human) I always want to...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/","og_locale":"en_US","og_type":"article","og_title":"xcodebuild: Test, build, and archive with command-line - Swift with Reza","og_description":"Deployment of an iOS app to iTunes Connect is time-consuming process and as an iOS developer (and of course as a human) I always want to...","og_url":"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/","og_site_name":"Swift with Reza","article_published_time":"2021-11-09T07:50:10+00:00","article_modified_time":"2022-07-26T07:27:28+00:00","og_image":[{"width":1621,"height":800,"url":"http:\/\/mohammadreza.me\/blog\/wp-content\/uploads\/2021\/11\/xcodebuild.jpg","type":"image\/jpeg"}],"author":"Reza","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Reza","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/","url":"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/","name":"xcodebuild: Test, build, and archive with command-line - Swift with Reza","isPartOf":{"@id":"https:\/\/mohammadreza.me\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/#primaryimage"},"image":{"@id":"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/#primaryimage"},"thumbnailUrl":"https:\/\/mohammadreza.me\/blog\/wp-content\/uploads\/2021\/11\/xcodebuild.jpg","datePublished":"2021-11-09T07:50:10+00:00","dateModified":"2022-07-26T07:27:28+00:00","author":{"@id":"https:\/\/mohammadreza.me\/blog\/#\/schema\/person\/9ab155944216224664701a81bc56cf8c"},"description":"Deployment of an iOS app to iTunes Connect is time-consuming process and as an iOS developer (and of course as a human) I always want to...","breadcrumb":{"@id":"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/#primaryimage","url":"https:\/\/mohammadreza.me\/blog\/wp-content\/uploads\/2021\/11\/xcodebuild.jpg","contentUrl":"https:\/\/mohammadreza.me\/blog\/wp-content\/uploads\/2021\/11\/xcodebuild.jpg","width":1621,"height":800,"caption":"xcodebuild"},{"@type":"BreadcrumbList","@id":"https:\/\/mohammadreza.me\/blog\/2021\/11\/09\/xcodebuild-test-build-archive-and-upload-with-command-line\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/mohammadreza.me\/blog\/"},{"@type":"ListItem","position":2,"name":"xcodebuild: Test, build, and archive with command-line"}]},{"@type":"WebSite","@id":"https:\/\/mohammadreza.me\/blog\/#website","url":"https:\/\/mohammadreza.me\/blog\/","name":"Swift with Reza","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/mohammadreza.me\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/mohammadreza.me\/blog\/#\/schema\/person\/9ab155944216224664701a81bc56cf8c","name":"Reza","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/mohammadreza.me\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1a4d35be7e8c853112a49822b1ccc907e5855a115f93d587800a7d71f2255f01?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1a4d35be7e8c853112a49822b1ccc907e5855a115f93d587800a7d71f2255f01?s=96&d=mm&r=g","caption":"Reza"},"sameAs":["http:\/\/mohammadreza.me\/blog"],"url":"https:\/\/mohammadreza.me\/blog\/author\/mohammadreza\/"}]}},"wps_subtitle":"Deployment of an iOS app to iTunes Connect is time-consuming process and as an iOS developer (and of course as a human) I always want to make process easy. it's very common for iOS developers test, build, archive and upload to iTunes Connect with Xcode. but is there any easier process? the answer is yes, xcodebuild commands.","_links":{"self":[{"href":"https:\/\/mohammadreza.me\/blog\/wp-json\/wp\/v2\/posts\/123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mohammadreza.me\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mohammadreza.me\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mohammadreza.me\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mohammadreza.me\/blog\/wp-json\/wp\/v2\/comments?post=123"}],"version-history":[{"count":26,"href":"https:\/\/mohammadreza.me\/blog\/wp-json\/wp\/v2\/posts\/123\/revisions"}],"predecessor-version":[{"id":161,"href":"https:\/\/mohammadreza.me\/blog\/wp-json\/wp\/v2\/posts\/123\/revisions\/161"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mohammadreza.me\/blog\/wp-json\/wp\/v2\/media\/132"}],"wp:attachment":[{"href":"https:\/\/mohammadreza.me\/blog\/wp-json\/wp\/v2\/media?parent=123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mohammadreza.me\/blog\/wp-json\/wp\/v2\/categories?post=123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mohammadreza.me\/blog\/wp-json\/wp\/v2\/tags?post=123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}