{"id":10522,"date":"2015-11-18T07:00:00","date_gmt":"2015-11-18T07:00:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/visualstudioalm\/2015\/11\/18\/macincloud-visual-studio-team-services-build-and-improvements-to-ios-build-support\/"},"modified":"2019-02-14T17:36:36","modified_gmt":"2019-02-15T01:36:36","slug":"macincloud-visual-studio-team-services-build-and-improvements-to-ios-build-support","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/devops\/macincloud-visual-studio-team-services-build-and-improvements-to-ios-build-support\/","title":{"rendered":"MacinCloud Visual Studio Team Services Build and Improvements to iOS Build Support"},"content":{"rendered":"<p>Visual Studio Team Services (formerly Visual Studio Online) and Team Foundation Services 2015 supports a <a href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkID=533772\">cross-platform build system<\/a> that allows you to quickly and easily configure builds that run on Windows, Linux, and even OSX. All Visual Studio Team Services accounts come with a free Windows based hosted build agent but Xcode \/ iOS builds have not had a cloud hosted option. This can be problematic for organizations that would prefer not to manage Macs in their datacenters or for smaller organizations that would prefer not to maintain dedicated Mac hardware for CI.<\/p>\n<p>&nbsp;<\/p>\n<p>To resolve this challenge, we&#8217;ve partnered with <a href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkID=691834\">MacinCloud to introduce a VS Team Services \/ VSO build agent plan<\/a>. Setup is streamlined and MacinCloud servers come pre-installed with the software you need to get up and running in as few steps as possible. The plan is currently in preview $30\/mo per agent with no limits on build hours. While you&#8217;ll still need to sign up for the Apple Developer Program to obtain signing certificates and provisioning profiles necessary to build and release your app, a MacinCloud agent can even be used with the free tier of VS Team Services as you are provided one complementary &#8220;private&#8221; agent slot.<\/p>\n<p>&nbsp;<\/p>\n<p>In this blog post we&#8217;ll cover how easy it is for you to add a MacinCloud agent to a VS Team Services account and highlight a number of other improvements we&#8217;ve made to better support building projects on Macs.<\/p>\n<h2>5 Steps to Mac Based Cloud Build Support in VS Team Services<\/h2>\n<p>There are just 5 easy steps to get yourself up and running with Mac based builds in VS Team Services.<\/p>\n<ol>\n<li>\n<div><a href=\"https:\/\/www.visualstudio.com\/en-us\/products\/what-is-visual-studio-online-vs.aspx\">Sign up for VS Team Services<\/a> \u2013 You can even use MacinCloud with the free tier of VSO!<\/div>\n<p>&nbsp;<\/li>\n<li>\n<div>Sign up for <a href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkID=691834\">MacinCloud&#8217;s VS Team Services \/ VSO plan<\/a> and you&#8217;ll get access to the VSO\/VS Team Services Agent feature in the MacinCloud portal. (For questions, please contact <a href=\"mailto:support@macincloud.com\">support@macincloud.com<\/a>).<\/div>\n<p>&nbsp;<\/li>\n<li>\n<div>Next, add your user to the <strong>Agent Pool Administrators<\/strong> and <strong>Agent Pool Service Accounts<\/strong> groups in VS Team Services.<\/div>\n<ol>\n<li>Go to Account Admin (gear upper right) &gt; Control Panel &gt; Agent Pools tab &gt; All pools<\/li>\n<li>\n<div>Add your user to Agent Pool Administrators and Agent Pool Service Accounts groups<\/div>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/45\/92\/7558.1.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2015\/11\/7558.1.png\" alt=\"\" border=\"0\" \/><\/a><\/li>\n<\/ol>\n<p>&nbsp;<\/li>\n<li>\n<div>Create an &#8220;Access Token&#8221; for the agent in VS Team Services<\/div>\n<ol>\n<li>In VS Team Services, click on your user name in the upper right hand corner &gt; My Profile<\/li>\n<li>Now go to Security &gt; Personal Access Tokens &gt; Add<\/li>\n<li>Give it a name, set the timeout to <strong>1 yr<\/strong>, select <strong>All Scopes<\/strong>, and grab the token<\/li>\n<\/ol>\n<p>&nbsp;<\/li>\n<li>\n<div>In the MacinCloud Portal, setup your agent!<\/div>\n<ol>\n<li>Click on Developer &gt; VSO Agent (Preview) and click the edit button on one of the unused agent slots in the list<\/li>\n<li>\n<div>Enter your VSO domain (https:\/\/mydomain.visualstudion.com), the access token you created in step 1, and give it a unique name for your VSO instance and click Save.<\/div>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/45\/92\/8306.2.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2015\/11\/8306.2.png\" alt=\"\" border=\"0\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/li>\n<li>You can also use this same screen later to upload any number of certificate and provisioning if needed. However, we&#8217;ve got some features that should allow you to skip this step completely for Xcode and Cordova projects!<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p><em>Important Note: You are provided <span style=\"text-decoration: underline\">one<\/span> complementary &#8220;private&#8221; agent slot in your VS Team Services \/ VSO instance for free. This includes any MacinCloud agent. However, the free tier also gives you access to a Hosted Windows agent as well (for a total of 2) and you can purchase additional private slots as needed. <\/em><\/p>\n<h2>Create a Build Definition for Your Project<\/h2>\n<p>Now that you&#8217;re up and running, use VS Team Services to <a href=\"https:\/\/www.visualstudio.com\/en-us\/docs\/build\/apps\/index\" target=\"_blank\">create a build definition<\/a> for your project!<\/p>\n<h2>Xcode &amp; React Native Projects<\/h2>\n<p>All VS Team Services instances now have an updated Xcode Build step that provides additional options including the ability to simply reference a certificate and mobile provisioning file in your repository and have the VSO agent handle installing and managing certificates for you. Certs are then managed local to the project to take the guesswork out of certificate management. Perfect for MacinCloud!<\/p>\n<p>Setting up the Xcode Build step is pretty self-explanatory, but you can <a href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkID=691931\">check out the detailed tutorial<\/a> to see how you can use it to test and publish test results to VS Team Services using <a href=\"https:\/\/github.com\/facebook\/xctool\">xctool<\/a> and even run tests in MacinCloud with Xcode 7 or up. In addition, if you are new to managing signing and provisioning in a CI environment, we also have a <a href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkID=691933\">cert management tutorial<\/a> that can fill you in on the details.<\/p>\n<p>React Native projects can also use this same build step and we&#8217;re working to improve setup further. See this <a href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkID=699380\">blog post<\/a> for information on current setup steps.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/45\/92\/0726.3.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2015\/11\/0726.3.png\" alt=\"\" border=\"0\" \/><\/a><\/p>\n<h2>Cordova Projects<\/h2>\n<p>A new <a href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkID=691188\">VS Team Services \/ VSO extension<\/a> makes setting up Cordova projects in a CI environment simple. It includes the same cert management features as Xcode Build, caches multiple versions of Cordova for improved performance, and more. These tasks should work with any Cordova CLI compliant project including those created in Tools for Apache Cordova or command line tools like <a href=\"http:\/\/ionicframework.com\/\">Ionic<\/a>.<\/p>\n<p>Simply install the VS Team Services <a href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkID=691188\">Cordova Extension<\/a> and use the included Cordova or Ionic steps. The build steps are easy to configure, but check out the <a href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkID=691186\">detailed tutorial<\/a> for full setup details including using Karma to test your apps.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/45\/92\/3122.4.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2015\/11\/3122.4.png\" alt=\"\" border=\"0\" \/><\/a><\/p>\n<h2>Xamarin iOS Projects<\/h2>\n<p><del>Currently Xamarin iOS projects require a manual activation of your Xamarin license in MacinCloud and you&#8217;ll need to add signing certificates to MacinCloud&#8217;s servers through their portal. Follow <a href=\"http:\/\/developer.xamarin.com\/guides\/android\/getting_started\/installation\/offline_activation\/\">Xamarin&#8217;s Offline Activation<\/a> steps and work with Xamarin and MacinCloud support to complete your activation.<\/del><\/p>\n<p><del>In the near future you&#8217;ll be able to use the Xamarin License build step to activate your license and take advantage of the same signing features available for Xcode and Cordova today.<\/del><\/p>\n<p>You are no longer required to manually activate your Xamarin license.\u00a0 Please see https:\/\/www.visualstudio.com\/en-us\/docs\/build\/apps\/mobile\/xamarin for the latest documentation.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/45\/92\/7002.5.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2015\/11\/7002.5.png\" alt=\"\" border=\"0\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h2>Summary<\/h2>\n<p>We&#8217;re committed to making building Xcode and iOS projects in a CI environment easier than ever before with our cloud and on-premises solutions. We hope that you find these improvements and MacinCloud&#8217;s great new offering useful. <span style=\"color: #424242;font-family: Segoe UI;font-size: 10pt;background-color: white\">We&#8217;re always interested in your feedback on how we can make things even better, so please contact us via\u00a0<a href=\"http:\/\/visualstudio.uservoice.com\/forums\/121579-visual-studio-2015\/category\/30925-team-foundation-server-visual-studio-online\"><span style=\"color: #883399\">UserVoice<\/span><\/a><\/span> with your ideas and suggestions!<span style=\"color: #424242;font-family: Segoe UI;font-size: 10pt;background-color: white\"> You can also connect with MacinCloud via <a href=\"mailto:support@macincloud.com\">email<\/a> or <a href=\"https:\/\/twitter.com\/MacinCloud\">Twitter<\/a> with any questions, issues, or suggestions you may have for their exciting new offering. <\/span><\/p>\n<p><span style=\"color: #424242;font-family: Segoe UI;font-size: 10pt;background-color: white\">Get started with <a href=\"https:\/\/go.microsoft.com\/fwlink\/?LinkId=307137\">Visual Studio Team Services<\/a> and <a href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkID=691834\">MacinCloud<\/a> today!<\/span><\/p>\n<div>\n<table style=\"border-collapse: collapse\" border=\"0\">\n<colgroup>\n<col style=\"width: 162px\" \/>\n<col style=\"width: 516px\" \/><\/colgroup>\n<tbody valign=\"top\">\n<tr>\n<td style=\"padding: 2px\">\u00a0<a href=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/45\/92\/0363.1.jpg\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2015\/11\/0363.1.jpg\" alt=\"\" border=\"0\" \/><\/a><\/td>\n<td style=\"padding: 2px\"><strong>Chris Patterson<span style=\"color: #424242;font-family: Segoe UI;font-size: 9pt\">, <\/span><\/strong>Principal <span style=\"color: #424242;font-family: Segoe UI;font-size: 9pt\">Program Manager, Visual Studio Team Services <\/span><\/p>\n<p><a href=\"https:\/\/twitter.com\/chrisrpatterson\"><span style=\"font-family: Segoe UI;font-size: 9pt\">@chrisrpatterson<\/span><\/a><\/p>\n<p><span style=\"color: #424242;font-family: Segoe UI;font-size: 9pt\">Chris Patterson is a Principal Program Manager working on Team Foundation Server. Over his career he has worked for a number of different software companies on technologies ranging from Classic ASP and VB through Java and .NET. Currently he is working on bringing the Build automation features of TFS to the cloud.<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 2px\">\u00a0<a href=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/45\/92\/7624.chuck.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2015\/11\/7624.chuck_.png\" alt=\"\" border=\"0\" \/><\/a><\/td>\n<td style=\"padding: 2px\"><span style=\"color: #424242;font-family: Segoe UI;font-size: 9pt\"><strong>Chuck Lantz<\/strong>, Senior Program Manager, Visual Studio Client Tools <\/span><\/p>\n<p><a href=\"https:\/\/twitter.com\/chuxel\"><span style=\"font-family: Segoe UI;font-size: 9pt\">@chuxel<\/span><\/a><\/p>\n<p><span style=\"color: #424242;font-family: Segoe UI;font-size: 9pt\">Chuck spent over 15 years as developer, advocate, and architect in a variety of mid and large scale enterprise IT shops. He brought his passion for app development to Microsoft in 2012 and is currently focused on mobile app development. <\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 2px\">\u00a0<a href=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/45\/92\/1263.david.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2015\/11\/1263.david_.png\" alt=\"\" border=\"0\" \/><\/a><\/td>\n<td style=\"padding: 2px\"><strong>David Estey-Ang<\/strong>, Vice President of Operations, Moboware Inc.<\/p>\n<p><a href=\"mailto:David@MacinCloud.com\"><span style=\"font-family: Segoe UI;font-size: 9pt\">David@MacinCloud.com<\/span><\/a><\/p>\n<p><span style=\"color: #424242;font-family: Segoe UI;font-size: 9pt\">David has seven years of operational management experience in finance and technology. Since 2014, David has managed operations and played an integral role in new product development and organizational strategy at MacinCloud, a Moboware Inc. service.<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 2px\"><\/td>\n<td style=\"padding: 2px\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Visual Studio Team Services (formerly Visual Studio Online) and Team Foundation Services 2015 supports a cross-platform build system that allows you to quickly and easily configure builds that run on Windows, Linux, and even OSX. All Visual Studio Team Services accounts come with a free Windows based hosted build agent but Xcode \/ iOS builds [&hellip;]<\/p>\n","protected":false},"author":167,"featured_media":45953,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[253,226,1],"tags":[],"class_list":["post-10522","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure-devops-server","category-ci","category-devops"],"acf":[],"blog_post_summary":"<p>Visual Studio Team Services (formerly Visual Studio Online) and Team Foundation Services 2015 supports a cross-platform build system that allows you to quickly and easily configure builds that run on Windows, Linux, and even OSX. All Visual Studio Team Services accounts come with a free Windows based hosted build agent but Xcode \/ iOS builds [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts\/10522","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/users\/167"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/comments?post=10522"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts\/10522\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/media\/45953"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/media?parent=10522"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/categories?post=10522"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/tags?post=10522"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}