【问题标题】:realpath() doesnt show realpath GitLab ci runnerrealpath() 不显示 realpath GitLab ci runner
【发布时间】:2019-07-23 14:13:16
【问题描述】:

代码存储在/var/www/abc -- "CodePath"

运行gitlab-ci(runner)时,代码通过/home/gitlab-runner/builds/4v8bC1n9/0/_gitlabgroup_/_gitprojectname_/abc--"RealPath"调用

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

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

如何将“RealPath”集成到我的代码中,或者重新配置 GitLab 以改用“CodePath”?

【问题讨论】:

  • 也许您在某些实际上是 /var/www/abc 的 VM 中使用 realpath()
  • 我正在使用本地运行程序和 shell 执行,所以据我了解它不应该使用虚拟机?
  • /var/www/abc 是指向您真实路径的符号链接吗?
  • 这是真正的路径

标签: php gitlab gitlab-ci-runner


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    runners特定的配置文件存在,可以配置为described here

    我需要做这些事情:

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

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

    (布尔值,不在引号中) 在我的 yml 中指定一个变量

    variables:
      GIT_CLONE_PATH: $CI_BUILDS_DIR/
    

    在操作系统级别上,对所需的目录进行了一些权限设置,我在本地机器上选择了快速而肮脏的 777

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      相关资源
      最近更新 更多