building ios app with Appcircle

Guide to Automated Mobile CI/CD for Native iOS with Appcircle

Appcircle is a mobile CI/CD platform that provides a fully automated environment to manage mobile app lifecycle end-to-end, transforming DevOps to NoOps with the best practices. Appcircle supports the full lifecycle of Native iOS apps for all CI/CD needs. In this article, we will be building and deploying a Native iOS app with Appcircle with no need for a Mac or any third-party tools.

The first step is getting started with Appcircle. Just go to https://my.appcircle.io/ and register. (Regardless of the login provider you select, you can connect any other provider for the repository connections.)

Creating a Build Profile for a Native iOS Project

In Appcircle, a build profile contains the build workflows and the configuration of a Native iOS app target.

To create your first build profile, click on the orange “Add New” button on the middle of the screen.

build profiles

 

Enter a name for your build profile and select the target operating system (iOS) and the target platform as Objective-C/Swift.

add new profile

You will see your build profile once it has been created. Click on the build profile to connect to a repository that contains a valid Native iOS app.

You can connect GitHub, Bitbucket, Azure, and GitLab repositories to your build profile through oAuth apps. Alternatively, You can connect private repositories through SSH and public repositories directly on GitHub, Bitbucket, GitLab, Azure, and other compatible Git providers.

You can authorize Appcircle to connect to your cloud repository provider account. This will allow you to use auto-build your project with hooks. If you authorize Appcircle to access your repositories, you can select the repository that you want to connect. If you use a private repository using an SSH Key, you need to have an SSH key pair ready and enter your private key to Appcircle so Appcircle can access your repository.

Appcircle will then pull your branches, commits, and other information from your repository.

To test drive the Appcircle platform for Native iOS app builds, you can also use our sample iOS App by forking it or adding it as a public repository: https://github.com/appcircleio/appcircle-sample-ios

repository selection in appcircle

 

Native iOS Application Build Configuration

The build configuration has different flows for iOS and Android and the projects are configured on a branch basis. You can have different configurations for different branches and you can build any of your commits (assuming that they are compatible with the current configuration).

iOS Build Configuration

Click on the gear icon on the top middle to access the build configuration. The first step will be entering the project details. You can enter these details manually or click on the Autofill button to retrieve them from your project to detect the correct path for the Xcode project automatically.
Your iOS project needs to have an Xcode project or an Xcode workspace and a shared scheme to complete the build configuration successfully. Appcircle can fetch these workspaces and shared schemes from your branch automatically.

You can also select a specific Xcode version if you have certain dependencies or if you want to test your build on a specific version.

 

appcircle build configuration

Build Triggers for Auto Builds

The next section, Triggers, is common for iOS.

Appcircle allows you to trigger builds manually or automatically using build triggers.

  • On Every Push: Whenever code is pushed to a configured branch, the build is triggered.
  • On Merge/Pull Request: When a PR is opened, the last commit of the PR is automatically triggered.
  • On Tag Push: Whenever a tagged commit is pushed, the build is triggered for that commit. Commits without any tags are ignored.

appcircle build triggers

Signing Configuration

Appcircle allows you to sign your app for deployment.

Appcircle is unique that it doesn’t require you to generate signing identities with a third-party tool. You can simply create your iOS certificates/profiles within the platform and use them in any project in a centralized manner.

If you have readily available signing identities, you can also upload them once to the Appcircle Signing Identities module and use them centrally in any project. (No need for separate uploads of the same certificate for separate projects.)

For signing Native iOS app, press add, select the bundle ID from the first dropdown and then select a compatible provisioning profile (added from the signing identities module) from the second dropdown.

 

apple single build sign

 

Distribution (Deployment) Configuration

Appcircle is an end-to-end mobile CI/CD tool enables you to build and deploy your apps to mobile devices with full automation.

Distribution is a critical step when it comes to testing your application on real devices. You may need multiple testers and test groups to download, install, and test your application and make sure it works on different devices and operating system versions.

Distribution configuration allows you to set up which testing groups will receive your application after the build is complete. You can manually send your binary file to testers or Appcircle can do this for you.

For more information on how to set up testing groups and deploy your app after the build, please refer to the following document: https://docs.appcircle.io/distribute/create-or-select-a-distribution-profile.

You can select a previously created distribution profiles. Use the toggle that you want to distribute your own app automatically, and select the related distribution profile. You can enable other distribution methods such as Publish Module or Enterprise App Store.

If the target profile has auto-send configured, your testers will receive the latest version automatically.

 

appcircle build distribution

 

Environment Variables Configuration

The final tab is to add environment variables to the build. For advanced use cases, you can define variables and secrets to be incorporated during the build in the Environment Variables submodule so that you don’t need to store certain keys and configurations within the repository.

 

Workflows for Advanced Build Configuration

Appcircle is a simple, but flexible platform. You can make basic changes in a simple user interface with the build configuration and use the workflows for advanced use cases. A workflow is a ladder of steps taken to build your applications. Each step has a different purpose and the workflow can be customized by modifying step parameters and inputs, running custom scripts, or re-ordering steps. Workflows allow you to have complete control on your build process and enhance it with third-party services and features.

Also, note that the workflows are set up by default, so you don’t need to set them up for builds.

For more information on the workflows, you can refer to the following document: https://docs.appcircle.io/workflows/why-to-use-workflows

You have a wide variety of options with workflows. For instance, if you want to run a specific command before or after the build, you can add a custom script step at any point in the workflow. If you want to deploy your app with a third-party service instead of Appcircle, you can configure it with the workflows.

 

push workflow editing

 

Starting a Build and After a Build

To start your first build, just press the start build button – the play button above the actions columns (or push some code to your repo if auto-build is configured.)

You will see the build progress and the log in real-time.

 

build logs

Once your build is complete, you can now download the binary file or deploy it to distribute module manually (if autodistribute is enabled, it will be sent automatically after a successful build).

You can also view or download your build logs anytime.

 

app build list

 

Testing the Native iOS App

With Appcircle, you can use the standard unit testing workflows by adding the related iOS test steps or by running custom scripts.