Microsoft App Center构建失败:多个命令生成'appcenter-pre-build.sh'

问题描述 投票:0回答:1

前奏

我正在将App Center for CI用于我的应用程序的CI,默认情况下为“推钩”,每次我推送到分支时都会重新构建。我的任务是将API端点作为App Center变量传递,该端点在“构建配置”中配置。

enter image description here

此外,我有appcenter-pre-build.sh脚本,它与.xcworkspace文件位于同一目录中(如official documentation中所述)。脚本本身看起来像这样:

#!/usr/bin/env bash

echo "EXECUTING APPCENTER_PRE_BUILD SCRIPT"

if [ -z "$VERSION_CODE_SHIFT" ]
then
    echo "You need define the VERSION_CODE_SHIFT variable in App Center"
    exit
fi

if [ -z "$ENDPOINT" ]
then
    echo "You need define the ENDPOINT variable in App Center"
    exit
fi

PLIST_PATH="VideoApp/VideoApp/Info.plist"

VERSION_CODE=$((VERSION_CODE_SHIFT + APPCENTER_BUILD_ID))

APP_CENTER_CURRENT_PLATFORM="ios"

if [ "$APP_CENTER_CURRENT_PLATFORM" == "ios" ]
then
    plutil -replace CFBundleVersion -string "$VERSION_CODE" $PLIST_PATH
    echo "Updated version code in $PLIST_PATH to new value: $VERSION_CODE"
    plutil -replace CFBundleShortVersionString -string "\${MARKETING_VERSION}.$VERSION_CODE" $PLIST_PATH
    echo "Updated marketing version in $PLIST_PATH to new value: \${MARKETING_VERSION}.$VERSION_CODE"
    plutil -replace HubEndpoint -string "$ENDPOINT" $PLIST_PATH
    echo "Updated HubEndpoint in $PLIST_PATH to new value: $ENDPOINT"
fi

因此,基本上,我从App Center中提取环境变量并修改Info.plist,然后在代码中使用其属性来设置API端点。另外,如您所见,应用程序的版本正在以类似的方式进行修改。

问题

App Center构建最终会失败,并出现以下错误:

error: Multiple commands produce '/Users/runner/Library/Developer/Xcode/DerivedData/VideoApp-gpxrsqjtrulyrqamenreayeeatqj/Build/Intermediates.noindex/ArchiveIntermediates/Video-Community/InstallationBuildProductsLocation/Applications/PC365.app/appcenter-pre-build.sh':

1) Target 'Video-Community' (project 'VideoApp') has copy command from '/Users/runner/runners/2.168.2/work/1/s/VideoApp/VideoApp/appcenter-pre-build.sh' to '/Users/runner/Library/Developer/Xcode/DerivedData/VideoApp-gpxrsqjtrulyrqamenreayeeatqj/Build/Intermediates.noindex/ArchiveIntermediates/Video-Community/InstallationBuildProductsLocation/Applications/PC365.app
/appcenter-pre-build.sh'
2) Target 'Video-Community' (project 'VideoApp') has copy command from '/Users/runner/runners/2.168.2/work/1/s/VideoApp/appcenter-pre-build.sh' to '/Users/runner/Library/Developer/Xcode/DerivedData/VideoApp-gpxrsqjtrulyrqamenreayeeatqj/Build/Intermediates.noindex/ArchiveIntermediates/Video-Community/InstallationBuildProductsLocation/Applications/PC365.app
/appcenter-pre-build.sh'


warning: duplicate output file '/Users/runner/Library/Developer/Xcode/DerivedData/VideoApp-gpxrsqjtrulyrqamenreayeeatqj/Build/Intermediates.noindex/ArchiveIntermediates/Video-Community/InstallationBuildProductsLocation/Applications/PC365.app/appcenter-pre-build.sh' on task: CpResource /Users/runner/runners/2.168.2/work/1/s/VideoApp/appcenter-pre-build.sh /Users/runner/Library/Developer/Xcode/DerivedData/VideoApp-gpxrsqjtrulyrqamenreayeeatqj/Build/Intermediates.noindex/ArchiveIntermediates/Video-Community/InstallationBuildProductsLocation/Applications/PC365.app
/appcenter-pre-build.sh (in target 'Video-Community' from project 'VideoApp')

** ARCHIVE FAILED **

##[error]Error: /usr/bin/xcodebuild failed with return code: 65

所以它以某种方式产生了该脚本的副本。

对我来说,这很奇怪,因为脚本没有分配给任何目标,而是在Xcode之外创建的。

ios xcode bash continuous-integration visual-studio-app-center
1个回答
0
投票

我想,问题是有关某些King ob脚本缓存的。我已经从存储库中删除了appcenter-pre-build.sh,进行了推送,并在App Center中进行了构建(这次没有错误),然后再次添加了脚本,进行了推送,它才开始工作。

© www.soinside.com 2019 - 2024. All rights reserved.