Перейти к содержимому

CI/CD интеграция

import { Tabs, TabItem } from ‘@astrojs/starlight/components’;

Интегрируйте загрузку билдов в ваш CI/CD пайплайн. Uply предоставляет готовые шаблоны для популярных платформ.

Как это работает

Каждая интеграция выполняет 3 шага:

  1. Установка — скачивает upcli нужной версии
  2. Загрузка — вызывает upcli upload --json с параметрами
  3. Вывод — пробрасывает результат (build_id, platform, status) в outputs пайплайна

Создание CLI-токена

  1. Откройте Uply Console
  2. Перейдите в Настройки проектаCLI-токены
  3. Создайте токен с правом UPLOAD_BUILDS
  4. Сохраните токен в секретах вашей CI/CD платформы

Платформы

Используйте готовый Composite Action:

- uses: uply-dev/cli-templates@v1
with:
cli-token: ${{ secrets.UPLY_CLI_TOKEN }}
file: app/build/outputs/apk/release/app-release.apk

Параметры

ПараметрОбязателенОписаниеПо умолчанию
cli-tokenдаТокен uply_*
fileдаПуть к .apk / .ipa
channelнетID каналаиз токена
nameнетНазвание билда
descriptionнетОписание билда
versionнетВерсия upclilatest
base-urlнетURL APIhttps://api.getuply.io

Outputs

OutputОписание
build-idID загруженного билда
platformANDROID / IOS
statusUPLOADED

Полный пример

name: Upload to Uply
on:
push:
tags: ['v*']
jobs:
upload:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# ... ваши шаги сборки ...
- name: Upload to Uply
id: uply
uses: uply-dev/cli-templates@v1
with:
cli-token: ${{ secrets.UPLY_CLI_TOKEN }}
file: app/build/outputs/apk/release/app-release.apk
name: "${{ github.ref_name }}"
- name: Print result
run: echo "Build ID: ${{ steps.uply.outputs.build-id }}"

Подключите готовый шаблон через include:

include:
- remote: 'https://getuply.io/ci/gitlab.yml'
upload_to_uply:
stage: deploy
extends: .uply-upload
variables:
UPLY_FILE: "app/build/outputs/apk/release/app-release.apk"

Переменные

ПеременнаяОбязательнаОписание
CLI_TOKENдаТокен uply_* (из CI/CD Variables, masked)
UPLY_FILEдаПуть к .apk / .ipa
UPLY_CHANNELнетID канала
UPLY_BUILD_NAMEнетНазвание билда
UPLY_BUILD_DESCRIPTIONнетОписание билда

Outputs

После выполнения job’а доступны переменные (через dotenv artifact):

  • UPLY_BUILD_ID

  • UPLY_PLATFORM

  • UPLY_STATUS

GitVerse использует GitHub Actions-совместимый формат. Подключение аналогично GitHub Actions:

- uses: uply-dev/cli-templates@v1
with:
cli-token: ${{ secrets.UPLY_CLI_TOKEN }}
file: app/build/outputs/apk/release/app-release.apk

Gitflic не поддерживает переиспользуемые шаблоны. Скопируйте пример в .gitflic-ci.yml:

stages:
- upload
upload_build:
stage: upload
image: alpine:latest
script:
- apk add --no-cache curl jq
- curl -fsSL https://getuply.io/install.sh | sh
- |
upcli upload \
--cli-token "$CLI_TOKEN" \
--file "$APK_PATH" \
--name "v${CI_COMMIT_TAG}" \
--json > uply-result.json
artifacts:
paths:
- uply-result.json

Скопируйте сниппет в ваш Jenkinsfile:

pipeline {
agent any
environment {
UPLY_CLI_TOKEN = credentials('uply-cli-token')
}
stages {
stage('Upload to Uply') {
steps {
sh 'curl -fsSL https://getuply.io/install.sh | sh'
sh """
upcli upload \
--cli-token \${UPLY_CLI_TOKEN} \
--file app/build/outputs/apk/release/app-release.apk \
--name "v\${BUILD_NUMBER}" \
--json > uply-result.json
"""
}
post {
success {
archiveArtifacts artifacts: 'uply-result.json'
}
}
}
}
}

Токен хранится в Jenkins Credentials как Secret text.

Troubleshooting

Error: unauthorized / 401

  • Проверьте что токен начинается с uply_
  • Убедитесь что токен добавлен в секреты CI/CD платформы
  • Проверьте что у токена есть право UPLOAD_BUILDS

Error: file not found

  • Проверьте путь к файлу — он должен быть относительным от корня репозитория
  • Убедитесь что шаг сборки выполнился до шага загрузки
  • Проверьте формат: только .apk и .ipa

Error: download failed (HTTP 404)

  • Проверьте версию upcli — возможно указана несуществующая версия
  • Используйте version: latest (по умолчанию)

Error: request timeout

  • Файл может быть слишком большим (лимит 1 ГБ)
  • Проверьте сетевое соединение runner’а
  • upcli автоматически повторяет запросы при временных ошибках (до 3 раз)