生成脚本
重要
Visual Studio App Center 计划于 2025 年 3 月 31 日停用。 虽然可以继续使用 Visual Studio App Center,直到它完全停用,但你可以考虑迁移到几个建议的替代方法。
注意
生成脚本允许自定义生成;但在此过程中发现的问题超出了 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 & 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
环境变量
可以使用预定义、自定义或脚本内环境变量来帮助编写生成脚本,有关详细信息,请参阅 环境变量指南 。