本地运行程序文件存储在哪里?

WoJ*_*WoJ 2 gitlab gitlab-ci gitlab-ci-runner

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

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

script:
  - date > hello.txt
Run Code Online (Sandbox Code Playgroud)

我应该去哪里寻找hello.txt

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

Rek*_*vni 7

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

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

/home/gitlab-runner/builds/$RUNNER_TOKEN_KEY/$CONCURRENT_ID/$NAMESPACE/$PROJECT_NAME
Run Code Online (Sandbox Code Playgroud)

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


另一点要添加的是,在脚本中,您还可以回显位置文件,并且还可以指定在运行器上保存文件的位置,例如:

script:
  - echo ${CI_PROJECT_DIR}
  - date > ${CI_PROJECT_DIR}/hello.txt
Run Code Online (Sandbox Code Playgroud)

有关更多选项,请参阅GitLab 的预定义环境变量


默认情况下,所有作业都在此目录中${CI_PROJECT_DIR},因此当您开始一个script部分时,您通常可以安全地假设您位于此目录中,而无需执行cd ${CI_PROJECT_DIR}例如。

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

如果 shell 运行程序共享相同的构建目录,请注意处理并发性。

哈!