生成脚本

重要

Visual Studio App Center 计划于 2025 年 3 月 31 日停用。 虽然可以继续使用 Visual Studio App Center,直到它完全停用,但你可以考虑迁移到几个建议的替代方法。

详细了解支持时间线和替代方法。

注意

生成脚本允许自定义生成;但在此过程中发现的问题超出了 App Center 支持的范围。 如果其中一个脚本失败,则整个生成将报告失败,即使到该点的主要生成成功也是如此。

可以添加在生成时在预定义阶段运行的自定义生成脚本: 克隆后预生成生成后。 将采用下面指定格式的脚本放在生成配置中选择的项目级 (.xcodeproj.csproj.slnpackage.json) 文件或模块级 build.gradle () 文件旁边,我们将将其作为自定义生成步骤运行。

在 App Center 中,非 UWP 应用基于 macOS 构建,因此它们可以使用 Bash 脚本。 UWP 应用基于 Windows 构建,因此可以使用 PowerShell 脚本。 许多类似的任务都可以以任一脚本格式完成,但如果在它们之间迁移,则可能需要执行一些转换。 例如,macOS Bash 要求使用 UNIX 样式的行尾 (LF) 。

可以在 专用的公共 GitHub 存储库中找到生成脚本示例的集合。 可以随意使用示例脚本、对其进行修改,或者使用最有用的脚本提交新的拉取请求,供社区其他成员使用。

警告

当 App Center 首次检测到生成脚本时,或者你更改了脚本的位置,或者更改了 CocoaPods 的存储位置;必须通过单击生成配置中的 “保存 ”或“ 保存 & 生成 ”按钮来应用更改。 执行此操作时,App Center 会运行分析来为存储库树编制索引并更新生成定义。

保存检测到的脚本

克隆后

克隆存储库后立即运行克隆后脚本,但在我们执行任何其他操作之前运行。

若要在克隆后运行脚本,请在存储库中的项目文件旁边添加以下文件:

  • 适用于 iOS & Android) 的 appcenter-post-clone.sh (Bash

    #!/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
    
  • 适用于 UWP) 的appcenter-post-clone.ps1(PowerShell

预生成

预生成脚本在实际生成开始之前运行。 对于React Native应用,脚本在生成源映射之前运行。 对于其他平台,它在安装依赖项(例如 NuGet、CocoaPods 或 Carthage)后运行。

若要运行脚本预生成,请在存储库中的项目文件旁边添加以下文件:

  • 适用于 iOS & Android) 的 appcenter-pre-build.sh (Bash

    #!/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
    
  • 适用于 UWP) 的appcenter-pre-build.ps1(PowerShell

生成后

生成后脚本在生成完成后运行,并将所有必要的项目复制到输出目录。 即使生成失败,生成后脚本也会运行。

若要在生成后运行脚本,请在存储库中的项目文件旁边添加以下文件:

  • 适用于 iOS & Android) 的 appcenter-post-build.sh (Bash

    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
    
  • 适用于 UWP) 的appcenter-post-build.ps1(PowerShell

环境变量

可以使用预定义、自定义或脚本内环境变量来帮助编写生成脚本,有关详细信息,请参阅 环境变量指南