Bic*_*ops 5 ruby bash xcode cocoapods xcode-bots
我用以下内容启动了预集成触发器
cd "${XCS_PRIMARY_REPO_DIR}"
pwd
pod install --verbose
Run Code Online (Sandbox Code Playgroud)
它给了我
pod: command not found
Run Code Online (Sandbox Code Playgroud)
简单吧?找不到pod二进制文件,我只是将它指向路径.简单.
cd "${XCS_PRIMARY_REPO_DIR}"
pwd
/usr/local/bin/pod install --verbose
Run Code Online (Sandbox Code Playgroud)
这给了我以下几点
env: ruby_executable_hooks: No such file or directory
Run Code Online (Sandbox Code Playgroud)
这让我觉得ruby没有设置为触发器运行的权利.现在了解构建服务器终端中的一个简单的"pod安装"修复了所有这些并运行良好和花花公子.该项目肯定在构建服务器上正确构建.
所以,既然我认为环境搞砸了,我会尝试从包装器目录运行它,这应该设置好又好.这就是为什么它是正确的?每当我需要ruby在构建的运行脚本阶段运行时,这在历史上都有效.所以在这里我们继续触发.
~/.rvm/wrappers/ruby-2.2.3@global/pod install
Run Code Online (Sandbox Code Playgroud)
我在构建服务器的终端测试了这个,它很酷,所以我把它放到触发器中我得到这个
/Users/XcodeServer/.rvm/wrappers/ruby-2.2.3@global/pod: line 7: exec: pod: not found
Run Code Online (Sandbox Code Playgroud)
:/好吧我破解了pod源,看看第7行的内容
exec pod "$@"
Run Code Online (Sandbox Code Playgroud)
我不是一个红宝石人,但对我来说没有任何意义.哦是的,我尝试将cocoapods直接下载到usr/local/bin,而不是让它安装到其他目录中,首先卸载所有cocoapods然后执行以下操作
sudo gem install -n /usr/local/bin cocoapods --pre
Run Code Online (Sandbox Code Playgroud)
我把--pre因为我需要1.1.0.rc.2来修复构建swift 3的bug.任何人,这一切都行不通.似乎其他人都可以简单地说
cd /path/to/proj/
pod install
Run Code Online (Sandbox Code Playgroud)
进入他们的Xcode机器人触发器并让它们工作.
我有触发器在构建服务器上运行一个脚本来执行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
Run Code Online (Sandbox Code Playgroud)
记住在命名脚本时使用'sh'后缀.然后在你的bot触发器中运行这样的脚本
sh ~/Path/to/Scripts/podUpdateHack.sh
Run Code Online (Sandbox Code Playgroud)
有点傻但它有效,¯\ _(ツ)_ /¯哦,是的,所有那些愚蠢的逃避是因为BS_SRCROOT是XCode机器人的环境变量,它引用环境变量$ XCS_PRIMARY_REPO_DIR.您只需将其替换为$ XCS_PRIMARY_REPO_DIR并删除eval即可.我不记得是谁定义了可能来自工作空间的PODS_DIR,而BS_EXECUTABLE_NAME是对项目中可执行文件名的重新定义,因为此时它不存在.
希望有助于同性恋.
#!/bin/sh
cd ProjectDirectory
/usr/local/bin/pod install
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1605 次 |
| 最近记录: |