首页 > 解决方案 > 检测脚本是否在 Buildbot 的上下文中运行

问题描述

可以由Buildbot运行的脚本ShellCommand检测它是否确实在 Buildbot 的上下文中运行(例如,与在 shell 中手动启动相反)?

例如,Buildbot 是否设置了任何环境变量(例如CI_JOB_STAGE脚本可以检查的 GitLab?

我正在寻找一个便携性良好的解决方案,因此设置一个专有环境变量,例如在某些 Buildbot 构建器级别或检查脚本的父进程并不是我想要的。

标签: gitlab-cibuildbot

解决方案


至少,它可以检测它是在交互式会话中(手动启动时)还是非交互式启动(从脚本或在本例中为buildbox builder)。
在 bash 会话中,$-将显示为 shell 设置的当前选项。

更改您的工作以包含对脚本的调用:

scriptshell=$- ./myscript.sh

在您的脚本中:

if [[ ${scriptshell} != *i* ]]; then
    echo "non-interractive (script)"
else
    echo "interractive (manual launch)
fi

推荐阅读