生成脚本

备注

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

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

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

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

警告

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

保存检测到的脚本

克隆后

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

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

  • 适用于 iOS 的 appcenter-post-clone.sh (Bash & 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 UWP (PowerShell)

预生成

预先生成脚本在实际生成开始之前运行。 若要对本机应用做出响应,请在生成源映射之前运行该脚本。 对于其他平台,它在安装了依赖项(例如 NuGet、CocoaPods 或 Carthage)之后运行。

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

  • 适用于 iOS 的 appcenter-pre-build.sh (Bash & 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 UWP (PowerShell)

后期生成

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

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

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

环境变量

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