Pod安装在Xcode Bots Trigger中

时间:2016-09-15 22:39:36

标签: ruby xcode bash cocoapods xcode-bots

我使用以下

启动了预集成触发器
cd "${XCS_PRIMARY_REPO_DIR}"
pwd
pod install --verbose

它给了我

pod: command not found

简单吧?找不到pod二进制文件,我只是将它指向路径。容易。

cd "${XCS_PRIMARY_REPO_DIR}"
pwd
/usr/local/bin/pod install --verbose

这给了我以下

env: ruby_executable_hooks: No such file or directory

这让我觉得ruby没有设置为触发器运行的权利。现在了解构建服务器终端中的一个简单的“pod安装”修复了所有这些并运行良好和花花公子。该项目肯定在构建服务器上正确构建。

因为我认为环境搞砸了,我会尝试从包装目录运行它,应该设置好又好。这就是为什么它是正确的?每当我需要ruby在构建的运行脚本阶段运行时,这在历史上都有效。所以在这里我们继续触发。

~/.rvm/wrappers/ruby-2.2.3@global/pod install

我在构建服务器的终端测试了这个,它很酷,所以我把它放到触发器中,我得到了这个

/Users/XcodeServer/.rvm/wrappers/ruby-2.2.3@global/pod: line 7: exec: pod: not found

:/好吧我破解了pod来源,看看第7行的内容

exec pod "$@"

我不是红宝石,但对我来说没什么意义。哦是的,我尝试将cocoapods直接下载到usr / local / bin,而不是让它安装到其他目​​录中,首先卸载所有cocoapods然后执行以下操作

sudo gem install -n /usr/local/bin cocoapods --pre

我把--pre,因为我需要1.1.0.rc.2来修复构建swift 3的错误。任何人,一切都行不通。似乎其他人都可以简单地把

cd /path/to/proj/
pod install

进入他们的Xcode bot触发器并让它们工作。

3 个答案:

答案 0 :(得分:8)

我让触发器在构建服务器上运行了一个执行pod安装的脚本。

因此,在构建服务器上创建一个包含以下内容的shell脚本:

#make sure the encoding is correct
export LANG=en_US.UTF-8

# fix the path so Ruby can find it's binaries
export PATH=/usr/local/bin:$PATH
echo "PATH: $PATH"

# update or install depending on what we got
if [ -d ${PODS_DIR} ]; then 
    # pods directory exist
    echo "=================="
    echo "   Delete Pods"
    echo "=================="

    # delete cocoapods files if they exist
    rm -rf "${PODS_DIR}"
    eval rm "${BS_SRCROOT}/Podfile.lock"
    eval rm -rf "${BS_SRCROOT}/${BS_EXECUTABLE_NAME}.workspace"
    echo "Deleted Pods directory ${PODS_DIR}"
    echo "Deleted ${BS_EXECUTABLE_NAME}.workspace"
    echo "Deleted Podfile.lock"
else 
    # no need to delete pod files
    echo "Pods NOT detected at ${PODS_DIR}"
fi

echo "=================="
echo "   Install Pods"
echo "=================="

# make sure we are where we need to be
eval cd "${BS_SRCROOT}"
pwd
~/.rvm/wrappers/ruby-2.2.3@global/pod install

在命名脚本时,请记住使用'sh'后缀。然后在你的bot触发器中运行像这样的脚本

sh ~/Path/to/Scripts/podUpdateHack.sh

有点傻但它有效,¯\ _(ツ)_ /¯哦,是的,所有那些愚蠢的逃避都存在,因为BS_SRCROOT是XCode机器人的环境变量,它引用环境变量$ XCS_PRIMARY_REPO_DIR。您只需将其替换为$ XCS_PRIMARY_REPO_DIR并删除eval即可。我不记得是谁定义了可能来自工作空间的PODS_DIR,而BS_EXECUTABLE_NAME是对项目中可执行文件名的重新定义,因为此时它不存在。

希望有助于同性恋。

答案 1 :(得分:2)

#!/bin/sh
cd ProjectDirectory
/usr/local/bin/pod install

答案 2 :(得分:1)

设置默认路径,执行.bash_profile,然后您的机器人就像普通用户一样运行

#!/bin/sh
cd $XCS_PRIMARY_REPO_DIR
PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands"
. ~/.bash_profile
bundle install
pod install --repo-update

P.S。 bundle install安装我的Gemfile中指定的所有gems,看起来像这样(所以每个bot可以有不同的gem要求):

source 'https://rubygems.org'
gem 'cocoapods', '1.3.1'