realpath()不显示realpath GitLab CI运行器

时间:2019-07-23 14:13:16

标签: php gitlab gitlab-ci-runner

代码存储在/var/www/abc-“ CodePath”

运行gitlab-ci(运行程序)时,通过/home/gitlab-runner/builds/4v8bC1n9/0/_gitlabgroup_/_gitprojectname_/abc-“ RealPath”

调用代码

我正在使用本地运行程序和shell执行。

当我在PHP代码中使用realpath()函数时,使用gitlab ci Runner而不是“ RealPath”时,它仍然显示“ CodePath”。

如何在代码中集成“ RealPath”,或者重新配置GitLab以使用“ CodePath”?

2 个答案:

答案 0 :(得分:0)

Runner cli选项记录在这里:https://docs.gitlab.com/runner/executors/shell.html#overview

环境变量中提供了运行作业以及将您的源克隆到的路径:

CI_PROJECT_DIR

  

克隆存储库以及运行作业的完整路径。如果设置了GitLab Runner的builds_dir参数,则相对于builds_dir的值设置此变量。有关更多信息,请参见GitLab Runner的高级配置。

您没有说明如何使用realpath(path) ...

  

尽管必须提供路径,但该值可以是空字符串。在这种情况下,该值将解释为当前目录。

那么也许您在某处对chdir('/var/www/abc');进行了硬编码?

在调用realpath()之前执行chdir(getenv('CI_PROJECT_DIR'));时-它应使用CI目录。假设您使用的realpath不带参数。

也:也许您可以进行一些更改,并使用当前目录的内置常量之一:https://www.php.net/manual/en/language.constants.predefined.php

答案 1 :(得分:0)

感谢madflow提到了变量,我设法弄清楚了以下内容:

跑步者特定的配置文件存在,可以将其配置为described here

我需要做这些事情:

在config.toml中指定启用[runners.custom_build_dir]部分

builds_dir = "/var/www/abc"
[runners.custom_build_dir]
  enable = true

在我的yml中指定一个变量

variables:
  GIT_CLONE_PATH: $CI_BUILDS_DIR/

在OS级别上,有一些用于所需目录的特权设置,我在本地机器上进行了快速而肮脏的777操作