Building Ionic apps

Setting up Ionic apps in Nevercode

Ionic is a complete open-source SDK for hybrid mobile app development. Built on top of AngularJS and Apache Cordova, Ionic provides tools and services for developing hybrid mobile apps using Web technologies like CSS, HTML5, and Sass. Apps can be built with these Web technologies and then distributed through native app stores to be installed on devices by leveraging Cordova1.

This tutorial guides you through setting up your iOS app in Nevercode. Nevercode doesn't require any kind of additional software from your side and you don’t even have to write any tedious configuration files full of technical boilerplate. We’ll scan your repository and from what you have there our builders find everything they need. You’ll just have to confirm what configuration you want to build.

The guide covers how to:

Ionic Project Structure

To identify an app as Ionic, Nevercode looks for a "signature" comprised of 2 components. Note that for Ionic 2 both these steps are generated automatically, when you add a new app with ionic start command. If apps are created with older Ionic versions, you'd need to provide one extra step.

  • Cordova namespace must be correctly specified in the config.xml file in the root folder of your project. Here's what this looks like :
    <widget id="com.your.project" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">

  • the presence of the ionic.project or ionic.config.json file in the root folder of you project. This file is not created immediately after a new Ionic one project is started from the CLI. You could add it manually, but even though it’s tiny and simple, why not let Ionic do it for you: just run ionic serve from your project’s folder. This will open a browser window in which you can see your shiny new app, but more importantly it will create the ionic.project file. Don't forget to add it to source control and commit.

If your project began its life as Ionic, and you've run ionic serve, then everything should be in place. However, users who are converting their existing projects to Ionic (we usually see this with Cordova and PhoneGap projects) need to take extra care to ensure that all these elements of the Ionic "signature" are present and committed to source control before adding their project to Nevercode.

Specify app repository

  1. Click Add a new app on Nevercode dashboard.
  2. Select the appropriate option for where your app repository is hosted. See Specifying app repository for details.
    If you selected Other and need to configure authentication method, see Authenticating repository access and Defining checkout URL for details.
That's how your dashboard looks like after you've signed up.

That's how your dashboard looks like after you've signed up.

Define build configuration

After specifying app repository, Nevercode takes a first look at it by listing the branches in this repository. The next step for you is to select the branch you want Nevercode to scan for projects from.

  1. Select a branch from the dropdown that Nevercode should scan. Note that you can change the branch later if needed.
  2. Click Scan branch. Nevercode scans the repository from the specified branch. This includes cloning the repository, looking for projects from it and searching for the configurations.

All these actions can be monitored real-time from your browser via the live log window.

We're scanning your repo, looking for apps to build.

We're scanning your repo, looking for apps to build.

Once scanning the branch has finished, you need to do the following:

  1. Select a project or a workspace. The Project selection here means a directory in your repository where your Ionic configuration file config.xml is stored.
  2. Select an option in Configuration dropdown, so Nevercode knows whether to build either debug or release version of your app.
  3. Select the platform for which you'd like to build your app for (Android or iOS, or for both platforms).

Now that you are done with the build configuration, all that is left to provide the corresponding code signing files.

Configuring your project.

Configuring your project.

Manage dependencies

Usually Ionic applications depend on additional Node modules. Nevercode installs the dependencies listed out in your project's package.json file automatically with npm install right after your repository is cloned for building.

Sign code

In depth overview of signing Android binaries is available under section Signing Android binaries in Cordova.

To sign iOS binaries please follow the corresponding tutorial for iOS apps.

Signing configuration in build configuration file

Please note that for iOS applications Nevercode respects the signing configuration provided in build.json configuration file as described in Cordova documentation. But you'd still have to upload the provisioning profiles and code signing certificates as described in section Code signing.

Run tests

You can enable testing of your Ionic apps via a custom test step. Please take a look at our in-depth documentation for testing hybrid applications to see how you can set that up.

Publish your build artefacts

Build distribution is an integral part of app development life cycle. Nevercode supports publishing your build artefacts to several distribution channels such as:

If you'd like to generate a release build of your app for publishing to the Apple App Store, there are a few additional steps you need to take. These are detailed in Ionic documentation.

Manage build versions

To make your build version management easy, Nevercode exports two environment variables that you can use in your build scripts: NEVERCODE_BUILD and NEVERCODE_BUILD_NUMBER. You can read more about it from Incrementing Ionic app version.

Troubleshooting

What commands does Nevercode run to build my Ionic app?

For the sake of debugging your builds, it may be helpful for you to know what happens under the hood when Nevercode builds your Ionic project. The following commands are executed:

  1. ionic platform rm <platform>
  2. ionic platform add <platform>
  3. ionic build <platform> --<target> --device

If your project has multiple platforms, commands 1-3 will be executed once for each platform. In the 3rd command, <target> represents either debug or release, as per your build settings.

Nevercode does not find my Ionic project or it detects it as a native application instead

Important!

Once Nevercode has incorrectly detected the repository with a given platform (be it Android, iOS or Cordova or Ionic), additional rescans will not change the platform.

To try again you must delete the existing app and add it from scratch.

The most likely cause is that your application does not meet the three requirements specified above in the Ionic Project Structure section. You are probably making use of the npm, bower and gulp toolchain to template your project which can throw Nevercode off, because in that case the necessary files for proper detection are not in place when scanning the project.

The easiest way to fix this issue is to add a custom build step (a post-clone script, NC_POST_CLONE_SCRIPT) which installs the necessary dependencies and performs the extra tasks which are required for initializing your project.

Here is an example of a post-clone script which initializes an Ionic project.

#!/bin/sh
set -e

bower install
gulp

Building Ionic apps

Setting up Ionic apps in Nevercode