Скрипты сборки

Важно!

Прекращение поддержки Центра приложений Visual Studio запланировано на 31 марта 2025 г. Хотя вы можете продолжать использовать Центр приложений Visual Studio до полного прекращения его использования, существует несколько рекомендуемых вариантов, на которые можно перейти.

Узнайте больше о сроках поддержки и альтернативных вариантах.

Примечание

Скрипты сборки позволяют настраивать сборки; но проблемы, возникающие в ходе этого процесса, выходят за рамки область поддержки Центра приложений. Если один из сценариев завершается сбоем, вся сборка сообщит о сбое, даже если основная сборка до этого момента прошла успешно.

Вы можете добавлять пользовательские скрипты сборки, которые выполняются на предварительно определенных этапах во время сборки: после клонирования, перед сборкой, после сборки. Поместите скрипты в формате, указанном ниже, рядом с файлом уровня проекта (.xcodeproj, .csproj, .slnили package.json) или на уровне модуля (build.gradle), выбранным в конфигурации сборки, и мы запустим их в качестве пользовательских шагов сборки.

В Центре приложений приложения, не относящиеся к UWP, созданы на основе macOS, поэтому они могут использовать скрипты Bash. Приложения UWP созданы на основе Windows, поэтому они могут использовать скрипты PowerShell. Многие аналогичные задачи можно выполнять в любом формате скрипта, но при миграции между ними может потребоваться выполнить некоторое преобразование. Например, для macOS Bash требуется использование окончаний строк в стиле UNIX (LF).

Коллекцию примеров скриптов сборки можно найти в выделенном общедоступном репозитории GitHub. Вы можете использовать примеры скриптов, изменять их или отправлять новые запросы на вытягивание с помощью наиболее полезных сценариев для остального сообщества.

Предупреждение

Когда Центр приложений обнаруживает скрипты сборки в первый раз, вы изменяете расположение скриптов или изменяете место хранения CocoaPods; Чтобы применить изменения, нажмите кнопку Сохранить или Сохранить & Сборка в конфигурации сборки. При этом Центр приложений выполняет анализ для индексирования дерева репозитория и обновляет определение сборки.

Сохранение обнаруженных скриптов.

После клонирования

Скрипт после клонирования выполняется сразу после клонирования репозитория, но до того, как мы сделаем что-либо еще в конце.

Чтобы выполнить скрипты после клонирования, добавьте следующий файл рядом с файлом проекта в репозитории:

  • appcenter-post-clone.sh (Bash для iOS & Android)

    #!/usr/bin/env bash
    
    # Example: Clone a required repository
    git clone https://github.com/example/SomeProject
    
    # Example: Install App Center CLI
    npm install -g appcenter-cli
    
  • appcenter-post-clone.ps1 (PowerShell для UWP)

Предварительная сборка

Скрипт перед сборкой выполняется перед началом фактической сборки. Для React Native приложений скрипт выполняется перед созданием исходных карт. Для других платформ она выполняется после установки зависимостей, например из NuGet, CocoaPods или Carthage.

Чтобы запустить скрипты перед сборкой, добавьте следующий файл рядом с файлом проекта в репозитории:

  • appcenter-pre-build.sh (Bash для iOS & Android)

    #!/usr/bin/env bash
    
    # Example: Change bundle name of an iOS app for non-production
    if [ "$APPCENTER_BRANCH" != "main" ];
    then
        plutil -replace CFBundleDisplayName -string "\$(PRODUCT_NAME) Beta" $APPCENTER_SOURCE_DIRECTORY/MyApp/Info.plist
    fi
    
  • appcenter-pre-build.ps1 (PowerShell для UWP)

После сборки

Скрипт после сборки выполняется после завершения сборки и копирует все необходимые артефакты в выходной каталог. Скрипт после сборки будет выполняться даже в случае сбоя сборки.

Чтобы запустить скрипты после сборки, добавьте следующий файл рядом с файлом проекта в репозитории:

  • appcenter-post-build.sh (Bash для iOS & Android)

    if [ "$AGENT_JOBSTATUS" == "Succeeded" ]; then
        HOCKEYAPP_API_TOKEN={API_Token}
        HOCKEYAPP_APP_ID={APP_ID}
    
        # Example: Upload main branch app binary to HockeyApp using the API
        if [ "$APPCENTER_BRANCH" == "main" ];
         then
            curl \
            -F "status=2" \
            -F "ipa=@$APPCENTER_OUTPUT_DIRECTORY/MyApps.ipa" \
            -H "X-HockeyAppToken: $HOCKEYAPP_API_TOKEN" \
            https://rink.hockeyapp.net/api/2/apps/$HOCKEYAPP_APP_ID/app_versions/upload
        else
            echo "Current branch is $APPCENTER_BRANCH"
        fi
    fi
    
  • appcenter-post-build.ps1 (PowerShell для UWP)

Переменные среды

Вы можете использовать предварительно определенные, пользовательские или встроенные переменные среды для написания скриптов сборки. Дополнительные сведения см. в руководстве по переменным среды .