我需要访问每个bot集成期间动态创建的文件夹。其中一个是这样的 -
/库/开发商/ XcodeServer /集成/高速缓存/ a3c682dd0c4d569a3bc84e58eab88a48 /DerivedData/Build/Products/Debug-iphonesimulator/my.app
我想在一个post触发器中找到这个文件夹,我该怎么办呢?基于wwdc谈话,它似乎是一些环境变量,如' XCS_INTEGRATION_RESULT'和XCS_ERROR_COUNT等正在使用。我也可以在日志中看到类似PROJECT_DIR的内容。
但是我无法从命令行访问这些变量中的任何一个(是因为我的用户不同于僵尸程序吗?) 另外,我在哪里可以找到此CI系统创建的变量列表?
答案 0 :(得分:24)
我一直在回应设置到机器人日志,我的机器人脚本的第一行就是
set
在集成完成后查看日志时,它将位于触发输出中。
XCS_ANALYZER_WARNING_CHANGE=0
XCS_ANALYZER_WARNING_COUNT=0
XCS_ARCHIVE=/Library/Developer/XcodeServer/Integrations/Integration-76eb5292bd7eff1bfe4160670c2d4576/Archive.xcarchive
XCS_BOT_ID=4f7c7e65532389e2a741d29758466c18
XCS_BOT_NAME='Reader'
XCS_BOT_TINY_ID=00B0A7D
XCS_ERROR_CHANGE=0
XCS_ERROR_COUNT=0
XCS_INTEGRATION_ID=76eb5292bd7eff1bfe4160670c2d4576
XCS_INTEGRATION_NUMBER=15
XCS_INTEGRATION_RESULT=warnings
XCS_INTEGRATION_TINY_ID=FF39BC2
XCS_OUTPUT_DIR=/Library/Developer/XcodeServer/Integrations/Integration-76eb5292bd7eff1bfe4160670c2d4576
XCS_PRODUCT='Reader.ipa'
XCS_SOURCE_DIR=/Library/Developer/XcodeServer/Integrations/Caches/4f7c7e65532389e2a741d29758466c18/Source
XCS_TESTS_CHANGE=0
XCS_TESTS_COUNT=0
XCS_TEST_FAILURE_CHANGE=0
XCS_TEST_FAILURE_COUNT=0
XCS_WARNING_CHANGE=36
XCS_WARNING_COUNT=36
答案 1 :(得分:9)
@Viktor是正确的,这些变量仅在各自的会话期间存在。 @Pappy列出了这些变量的绝佳列表。
它们可以在如下的脚本中使用:
IPA_PATH="${XCS_OUTPUT_DIR}/${XCS_BOT_NAME}.ipa"
echo $IPA_PATH
答案 2 :(得分:3)
我不熟悉Xcode Server,但通常是Unix / CI系统,当导出环境变量时,它们只将它导出到当前会话。
如果要持久设置环境变量,则必须在初始化程序文件中设置它,如〜/ .bash_profile或〜/ .bashrc,以便在shell会话启动时始终设置/加载(例如:登录时)使用终端 - 确切的文件取决于你开始的shell类型。
将这些持久导出也没有多大意义,因为在这种情况下如果运行不同的集成,这些只会覆盖彼此导出的环境变量(它们会设置相同的环境变量)。
这就是为什么通过环境变量进行通信的系统通常不会将变量写入持久性初始化文件,而只是export变量。使用导出,可以从导出该变量的进程访问该变量,并从进程启动的子进程中访问。
例如在bash脚本中,如果你导出一个变量,你可以在导出后从bash脚本访问它,也可以从bash脚本开始的任何命令/程序访问它,但是当bash脚本完成了再也无法访问的环境。
修改强> 稍微澄清一下:您应该能够从Xcode Server运行的后触发脚本访问这些环境变量,但您很可能无法从终端/命令行访问这些变量。
我在哪里可以找到此CI系统创建的变量列表?
您可以使用env命令打印所有可用的环境变量。在bash脚本中,只需在新行中键入 env ,如下所示:
#!/bin/bash
env
这将打印所有可用的环境变量(不仅仅是Xcode Server定义的变量!) - 如果需要,您可以将其简单地传输到文件中进行检查,如下所示:
#!/bin/bash
env > $HOME/envinspect.txt
运行此脚本后,您只需在用户的主文件夹中打开envinspect.txt文件即可。