【问题标题】:Detect whether script is running in the context of Buildbot检测脚本是否在 Buildbot 的上下文中运行
【发布时间】:2021-10-23 00:01:17
【问题描述】:

可能由BuildbotShellCommand 运行的脚本能否检测它是否确实在 Buildbot 的上下文中运行(例如,相对于在 shell 中手动启动)?

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

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

【问题讨论】:

    标签: gitlab-ci buildbot


    【解决方案1】:

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

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

    scriptshell=$- ./myscript.sh
    

    在您的脚本中:

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

    【讨论】:

    • 这看起来很有希望,但是是否有一个变体可以使来自 shell 的调用保持不变(./myscript.sh)?更改 Buildbot 中的调用,例如进入... ./myscript.sh 就可以了。
    • @rookie099 如果没有设置scriptshell在调用脚本之前,我从来没有设法让它工作。因此我的提议。
    • 是的,我明白了。 (这也有点像检查父进程。)
    猜你喜欢
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 2011-05-07
    • 2016-01-13
    相关资源
    最近更新 更多