Gitlab Runner - 每个构建的新文件夹

Pet*_*ore 4 deployment gitlab gitlab-ci gitlab-ci-runner

我在我的项目中使用 Gitlab CI。当我推送开发分支时,它会运行测试并更新我的测试环境(远程服务器)上的代码。

但是 gitlab runner 已经在使用相同的构建文件夹: builds/a3ac64e9/0/myproject/myproject

但我想每次都创建一个 now 文件夹:

  • builds/a3ac64e9/1/yproject/myproject
  • builds/a3ac64e9/2/yproject/myproject
  • builds/a3ac64e9/3/yproject/myproject
  • 等等

使用它,我可以通过更改指向最后一个运行器目录的符号链接来更新我的网站。

有没有办法以这种方式配置 Gitlab Runner?

Ste*_*uer 5

虽然将构建目录用作部署目录没有意义,但您可以设置自定义构建目录

在文本编辑器中打开config.toml:(在哪里可以找到它的详细信息点击这里

设置enabled = true[runners.custom_build_dir](更多信息在这里

[runners.custom_build_dir]
  enabled = true
Run Code Online (Sandbox Code Playgroud)

在您的 .gitlab-ci.yml 文件中,在variablesset下GIT_CLONE_PATH。它必须以$CI_BUILDS_DIR/,例如开头$CI_BUILDS_DIR/$CI_JOB_ID/$CI_PROJECT_NAME,这可能会给你你正在寻找的东西,尽管如果你有多个阶段,它们会有不同的作业 ID。或者,您可以尝试$CI_BUILDS_DIR/$CI_COMMIT_SHA,这将为每次提交提供一个唯一的文件夹。(更多信息在这里

variables:
    GIT_CLONE_PATH: '$CI_BUILDS_DIR/$CI_JOB_ID/$CI_PROJECT_NAME'
Run Code Online (Sandbox Code Playgroud)

不幸的是,当前使用GIT_BUILDS_DIRin存在问题GIT_CLONE_PATH,如果您使用的是Windows 和 Powershell,那么如果您的所有运行程序都具有相同的构建目录,则您可能必须执行以下操作作为解决方法:GIT_CLONE_PATH: 'C:\GitLab-Runner/builds/$CI_JOB_ID/$CI_PROJECT_NAME'

您可能需要查看可用变量预定义变量)以找到最适合您的路径的变量。


jer*_*emf 1

仅通过 Gitlab CI 运行程序配置无法实现此目的,但您可以创建 2 个运行程序,并使用 和only关键字的组合将它们专门分配给每个分支tags

假设您的两个分支被命名为masterdevelop,并且两个跑步者已被标记为master_runnerdevelop_runner标签,您的.gitlab-ci.yml代码可能如下所示:

master_job:
   <<: *your_job
   only:
     - master
   tags:
     - master_runner

develop_job:
   <<: *your_job
   only:
     - develop
   tags:
     - develop_runner
Run Code Online (Sandbox Code Playgroud)

<<: *your_job是您可以分解的实际工作)