|
|
@ -0,0 +1,63 @@ |
|
|
|
# Xamarin iOS Build |
|
|
|
|
|
|
|
Follow these steps to create a VSTS build for your eShopOnContainers app (iOS) |
|
|
|
|
|
|
|
**Note**: This document assumes basic knowledge about creating builds and configuring external VSTS connections |
|
|
|
|
|
|
|
## Creating the build |
|
|
|
|
|
|
|
Despite the _"Get Sources"_ task there are three tasks more in the build: |
|
|
|
|
|
|
|
1. Build Xamarin iOS Project |
|
|
|
2. Copy generated packages |
|
|
|
3. Publish the build artifact. |
|
|
|
|
|
|
|
![iOS Build Steps](images/android-ios.png) |
|
|
|
|
|
|
|
Let's discuss each of them. |
|
|
|
|
|
|
|
### Build the project |
|
|
|
|
|
|
|
Add a "Xamarin iOS" task with following configuration: |
|
|
|
|
|
|
|
1. `eShopOnContainers-iOS.sln` in "Solution". This solution has been created ex professo for the build. |
|
|
|
2. Ensure that the "Create App Package" checkbox is enabled |
|
|
|
|
|
|
|
**About signing & Provisioning section** |
|
|
|
|
|
|
|
In order to deploy your app to a physical device you must sign it using a certificate with a provisioning profile. Refer to [this blog |
|
|
|
post of the Xamarin team](https://blog.xamarin.com/continuous-integration-for-ios-apps-with-visual-studio-team-services/) for more info. |
|
|
|
|
|
|
|
Basically you have three options for setting the certificate (p12 file) and the provisioning profile: |
|
|
|
|
|
|
|
1. Use MacInCloud VSTS agent and setup the p12 file and provisioning profile in the setup [https://blogs.msdn.microsoft.com/visualstudioalm/2015/11/18/macincloud-visual-studio-team-services-build-and-improvements-to-ios-build-support/](https://blogs.msdn.microsoft.com/visualstudioalm/2015/11/18/macincloud-visual-studio-team-services-build-and-improvements-to-ios-build-support/) |
|
|
|
2. Use a custom mac machine with the certificate and provisioning profile installed. In this case you don't have to do anything else. |
|
|
|
3. Have the p12 file and the provisioning profile reachable on somewhere |
|
|
|
|
|
|
|
If you choose option 3, you need to download the certificate and the provisioning profile into the build agent (using a previous build task). |
|
|
|
Once downloaded two files, you have to specify the location of both in the "Signing & Provisioning Section". |
|
|
|
|
|
|
|
![iOS Build Step 1](images/ios-build-step1.png) |
|
|
|
|
|
|
|
### Copy generated files to output folder |
|
|
|
|
|
|
|
Add a "Copy files" task with following configuration: |
|
|
|
|
|
|
|
1. `src/Mobile/eShopOnContainers/eShopOnContainers.iOS/bin/iPhone/$(BuildConfiguration)` in "Source Folder" |
|
|
|
2. `**/*.ipa` in "Contents" |
|
|
|
3. `$(Build.ArtifactStagingDirectory)` in "Target Folder" |
|
|
|
4. Ensure that "Clean Target folder" (under "Advanced" section) is checked |
|
|
|
|
|
|
|
This way we copy the generated IPA in the _Build.ArtifactStagingDirectory_ folder (and remove any previous IPA generated by a previous build). |
|
|
|
|
|
|
|
![iOS Build Step 2](images/ios-build-step2.png) |
|
|
|
|
|
|
|
### Publishing build artifact |
|
|
|
|
|
|
|
Add a "Publish Build Artifacts" task, with following configuration: |
|
|
|
|
|
|
|
1. `$(Build.ArtifactStagingDirectory)` in "Path to publish" |
|
|
|
2. `drop` in "Artifact Name" |
|
|
|
3. `Server` in "Artifact Type" |
|
|
|
|
|
|
|
![Android Build Step 3](images/ios-build-step3.png) |