> For the complete documentation index, see [llms.txt](https://docs.getupdraft.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.getupdraft.com/integrations/gitlab-ci/gitlab-api-upload.md).

# GitLab app distribution for iOS builds

## Preconditions

### Setting up a Build Runner

A build runner is a physical or virtual machine that has the necessary tools to run your builds. As an iOS Dev, you probably know you need a macOS Machine with Xcode Tools to build your iOS apps. In our Office, we use Mac Minis for this.&#x20;

Once you have a machine that can handle iOS Builds, you can follow the steps in the [GitLab Documentation](https://docs.gitlab.com/runner/install/osx.html#homebrew-installation-alternative) to set up your own runner. Make sure to specify the same `tag` as you used in your `.gitlab-ci.yml` file to restrict the runner to accept only iOS Builds.&#x20;

If you've read until here, you have earned our respect! We hope our guide has been helpful to you. If you have any questions, feel free to contact our support.

## Quick Start&#x20;

* Login into Updraft Toolpage [getupdraft.com/login ](https://getupdraft.com/login)
* Go to your Profile within the Sidebar
* Copy your **API Key** as well as the **App Key** of your App&#x20;
  * Your API Key you find in your Profile. The App Key you will find on the application overview. The App key differs for each environment.
* Go to your Project Settings in Gitlab and select CI/CD

![Gitlab CI/CD Variables Settings](/files/-LtKzDBeiri4itYZJnO_)

* Expand your Variables
* **Give a name for your API Key: UPDRAFT\_API\_KEY**
* Paste your Updraft API Key in the Input Value field and click on **Save Variable**
* **Give a name for your App Key: UPDRAFT\_APP\_KEY**
* Paste your Updraft App Key in the Input Value field and click on **Save Variable**

![Updraft API Key and Updraft App Key](/files/-LtL3ZqLFCpYhiVUUWW8)

## Add a job to your `.gitlab-ci.yml`

To deploy to [Updraft](https://getupdraft.com), add a job to your `.gitlab-ci.yml` configuration.

## Example of .gitlab-cy.yml file for iOS app distribution

```
stages:
  - build_updraft

deploy:
  stage: build_updraft
  only:
  - release
  script:
  - |
    curl \
      -F whats_new="Gitlab build" \
      -F "app=@android.apk" \
      -X PUT https://getupdraft.com/api/app_upload/$UPDRAFT_APP_KEY/$UPDRAFT_API_KEY/

```

### Repository

Example how the root file repository should look like.

![](/files/-LvABi2csgIt60sMbNm0)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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.getupdraft.com/integrations/gitlab-ci/gitlab-api-upload.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.
