【问题标题】:Where are local runner files stored?本地运行器文件存储在哪里?
【发布时间】:2020-12-16 17:11:25
【问题描述】:

我将 gitlab.com 与我自己的跑步者一起使用(它们在我的服务器上执行)。

.gitlab-ci.yml 中的script 条目在shell 上下文中执行时,文件在哪里创建?例如,对于下面在 shell runner 上运行的示例

script:
  - date > hello.txt

我应该在哪里寻找hello.txt

这个问题的具体原因是出于清理目的:我想删除我的跑步者创建的旧目录并用临时数据填充。

【问题讨论】:

  • 检查~gitlab-runner/builds 目录。应该有你的 repo 的副本,并在这个副本中查找 .gitlab-ci.yml 的位置。
  • @DmitriChubarov:谢谢。这很有趣,因为我在那里看到了 3 个子文件夹,其中 2 个名称对应于我的两个跑步者的 gitlab 分配的名称。今天使用了第三个目录,我今天更新了代码。我想知道它是从哪里来的(里面只有我的代码,这不是黑客或类似的东西)。如果您不介意将您的评论变成答案,我很乐意接受。

标签: gitlab gitlab-ci gitlab-ci-runner


【解决方案1】:

这里有很多选项,所以我将添加,这取决于

如果你有一个标准的 Linux shell 运行器,没有任何额外的配置,并且按照 GitLab 建议的方式安装,你将有一个类似于以下行的路径:

/home/gitlab-runner/builds/$RUNNER_TOKEN_KEY/$CONCURRENT_ID/$NAMESPACE/$PROJECT_NAME

可以使用运行器config.toml 中的builds_dir 选项更改此目录。


另外一点要补充的是,在你的脚本中,你还可以回显位置文件,还可以指定在运行器上保存文件的位置,例如:

script:
  - echo ${CI_PROJECT_DIR}
  - date > ${CI_PROJECT_DIR}/hello.txt

更多选项请见GitLab's pre-defined environment variables


默认情况下,所有作业都在此${CI_PROJECT_DIR} 中,因此当您启动script 部分时,您通常可以放心地假定您在此目录中,而不必例如执行cd ${CI_PROJECT_DIR}

您也很可能希望在此 ${CI_PROJECT_DIR} 中完成所有工作,因为 GitLab 运行器还会在新工作开始时处理清理工作。默认情况下,运行程序在签出存储库后执行git clean -ffdx,因此在此示例中,将在继续作业之前删除hello.txt 文件。请参阅git clean flags 了解更多信息。

如果 shell 运行器共享相同的构建目录,请注意 handling concurrency

HTH!

【讨论】:

  • 感谢您的详细解答。我找到了文件。逐字复制之前的评论:这很有趣,因为我在那里看到 3 个子文件夹,其中 2 个名称对应于我的两个跑步者的 gitlab 分配的名称。今天使用了第三个目录,我今天更新了代码。我想知道它是从哪里来的(里面只有我的代码,这不是黑客或类似的东西)。
猜你喜欢
  • 1970-01-01
  • 2016-02-06
  • 1970-01-01
  • 2023-02-25
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 2016-05-29
相关资源
最近更新 更多