# Mobile App CI/CD

Starting from **ONEWEB version 4.0.0.19**, Page Designer provides built‑in **CI/CD (Continuous Integration and Continuous Deployment)** capabilities for mobile applications.\
This feature allows developers to build mobile applications as **APK** for Android or **IPA** for iOS and publish them directly to the respective app stores.

The **CI/CD** configuration screen is available under the **Deployment** section of the Mobile Application. Users can select either **Android** or **iOS** as the target platform and follow the guided workflow to build and release the application.

{% hint style="info" %}
**Note**:\
CI stands for *Continuous Integration* and CD stands for *Continuous Deployment*.
{% endhint %}

***

### Build and Release Android Application

ONEWEB supports both **Unsigned APK** and **Signed APK** builds for Android applications.

#### Unsigned APK

For an **Unsigned APK**, the build process can be started immediately without providing additional credentials.

***

#### Signed APK

To generate a **Signed APK**, the following information must be provided before initiating the build:

* Keystore file (`.jks`)
* Alias name
* Keystore password
* Key password

For more details on Android app signing, refer to the official documentation:\
<https://developer.android.com/studio/publish/app-signing>

<figure><img src="https://2015371994-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMpDjHWFRUtZ5nJcSfVXd%2Fuploads%2FsC1IF1tGde3OgxPhwm8R%2Fimage.png?alt=media&#x26;token=07526363-4dff-4e05-bab1-6b8631b9f6f7" alt=""><figcaption></figcaption></figure>

Once all required details are entered, click the **Build Android** button under the **Release** section to start building the signed APK.

<figure><img src="https://2015371994-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMpDjHWFRUtZ5nJcSfVXd%2Fuploads%2FM05TeRSq4Y39aDhM7GZI%2Fimage.png?alt=media&#x26;token=eae20b42-f4c4-493e-984d-298e19302ade" alt=""><figcaption></figcaption></figure>

***

#### Publish Signed APK to Google Play Store

A signed APK can be released to **Internal Testing** on Google Play Console.\
To enable publishing, complete the following prerequisites:

1. Create a **Google Developer account**.
2. Create a **Service Account** for the project *Google Play Android Developer*.\
   This process provides an email address and a private key in **JSON** format.
3. Add the service account email as a user in Google Play Console and grant appropriate permissions.
4. Upload the private key (**JSON file**) to Page Designer.

<figure><img src="https://2015371994-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMpDjHWFRUtZ5nJcSfVXd%2Fuploads%2FPj9Z41Ib1gGZB02uTQuX%2Fimage.png?alt=media&#x26;token=5a9882e1-0311-4135-9de5-4b9345701d71" alt=""><figcaption></figcaption></figure>

After the signed build is completed, click the **Actions** button for the build artifact and select **Play Store**.

<figure><img src="https://2015371994-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMpDjHWFRUtZ5nJcSfVXd%2Fuploads%2FhvPDPlH38aW372OVG2EW%2Fimage.png?alt=media&#x26;token=d2ee497e-4a75-4c40-89de-d406f7ef7786" alt=""><figcaption></figcaption></figure>

***

### Build and Release iOS Application

To build an iOS application, a valid **Apple Developer account** is required.

#### iOS Certificate Preparation

Export the certificate file in **`.p12`** format using **Keychain Access** on macOS, or generate a certificate (`.cer`) using the **Certificate Signing Request (CSR)** provided by Page Designer.

For more information, refer to:\
<https://support.staffbase.com/hc/en-us/articles/115003458931-Creating-the-iOS-Distribution-Certificate>

***

#### Create Provisioning Profile

Once the certificate is ready, create a provisioning profile in the Apple Developer portal:

* Log in to your Apple Developer account.
* Navigate to **Certificates, Identifiers & Profiles**.
* Select the required provisioning profile type.
* Select the **App ID**.
* Select the certificate used for signing the application.
* Select devices to include in the profile.
* Assign a name and generate the provisioning profile.

***

#### Upload Certificate and Provisioning Profile

Upload the generated **Certificate** and **Provisioning Profile** to the application in Page Designer.

<figure><img src="https://2015371994-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMpDjHWFRUtZ5nJcSfVXd%2Fuploads%2F5JRTvOdLU5lSXNVwS18q%2Fimage.png?alt=media&#x26;token=e859f6e2-a5de-4957-b3b5-a7c1fca78d74" alt=""><figcaption></figcaption></figure>

***

#### Build iOS Application

After uploading the required credentials, initiate the iOS build for **Development** or **Distribution**.

<figure><img src="https://2015371994-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMpDjHWFRUtZ5nJcSfVXd%2Fuploads%2FG3UIzPN9cxU30xqAEAK8%2Fimage.png?alt=media&#x26;token=76a42119-dbf6-4c40-a34a-e3f1a0a17305" alt=""><figcaption></figcaption></figure>

***

#### Publish IPA to App Store (TestFlight)

The generated **Distribution IPA** can be released to **TestFlight** on the App Store.

To connect to the App Store, enter:

* Apple ID
* App ID
* Application‑specific password

<figure><img src="https://2015371994-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMpDjHWFRUtZ5nJcSfVXd%2Fuploads%2F6c2P2aUzzghj8CLEnqAY%2Fimage.png?alt=media&#x26;token=f2950d1b-b099-4490-bf63-f09dc7b8d6a6" alt=""><figcaption></figcaption></figure>

After the build is completed, click the **Actions** button for the IPA and select **App Store**.

<figure><img src="https://2015371994-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMpDjHWFRUtZ5nJcSfVXd%2Fuploads%2FkvOLFoZiYLXKL84dwS6C%2Fimage.png?alt=media&#x26;token=19f3a3dd-2d57-49dd-b8b1-437d6e2488a8" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.onewebstack.com/oneweb-platform-th/building-apps/ui-page-designer/ux-ui-components/pages/create-your-first-mobile-app/mobile-app-ci-cd.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
