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

Deployment Gitlab Runner-每个构建的新文件夹,deployment,gitlab,gitlab-ci,gitlab-ci-runner,Deployment,Gitlab,Gitlab Ci,Gitlab Ci Runner,我正在使用Gitlab CI进行我的项目。当我启动开发分支时,它会在我的测试环境(远程服务器)上运行测试并更新代码 但是gitlab运行程序已经在使用相同的构建文件夹:builds/a3ac64e9/0/myproject/myproject 但我希望每次都创建一个now文件夹: builds/a3ac64e9/1/yproject/myproject builds/a3ac64e9/2/yproject/myproject builds/a3ac64e9/3/yproject/myproje

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

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

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

  • builds/a3ac64e9/1/yproject/myproject
  • builds/a3ac64e9/2/yproject/myproject
  • builds/a3ac64e9/3/yproject/myproject
  • 等等
使用这个,我可以通过更改指向最后一个runner目录的符号链接来更新我的网站


有没有这样配置Gitlab Runner的方法?

您不能仅通过Gitlab CI Runner配置来实现这一点,但您可以创建2个运行程序,并通过使用仅
标记的组合将它们专门分配给每个分支

假设您的两个分支被命名为
master
develope
,并且两个运行程序被标记为
master\u runner
developer\u runner
标记,那么您的
.gitlab ci.yml
可以如下所示:

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

develop_job:
   <<: *your_job
   only:
     - develop
   tags:
     - develop_runner
master\u作业:

您可能需要阅读以下答案

我会把我的答案转寄到这里:

从概念上讲,这种方法不是可行的;生成目录不是部署目录,它是一个临时目录,用于从生成或部署,而在shell执行器上,这是可以修复的

因此,您需要使用下面的
gitlab ci.yml
脚本从该目录部署到正确的部署目录

stages:
- deploy

variables:
  TARGET_DIR: /home/ab12/public_html/$CI_PROJECT_NAME

deploy:
  stage: deploy
  script:
     mkdir -pv $TARGET_DIR
     rsync -r --delete ./ $TARGET_DIR
  tags:
    - myrunner
这将在/home/ab12/public\u html中移动您的
项目文件/


将项目命名为
project1
projectn
,您的所有项目都可以使用相同的
.gitlab ci.yml
文件。

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

在文本编辑器中打开config.toml:(有关在何处找到它的更多信息)

[runners.custom\u build\u dir]下设置
enabled=true
(更多信息)

在.gitlab-ci.yml文件中的
variables
set
GIT\u CLONE\u PATH
下。它必须以
$CI\u BUILDS\u DIR/
开头,例如
$CI\u BUILDS\u DIR/$CI\u JOB\u ID/$CI\u PROJECT\u NAME
,这可能会为您提供所需的内容,但如果您有多个阶段,它们将具有不同的作业ID。或者,您可以尝试
$CI\u BUILDS\u DIR/$CI\u COMMIT\u SHA
,这将为每次提交提供一个唯一的文件夹。(更多信息)

不幸的是,在
GIT_CLONE_PATH
中使用
GIT_BUILDS_DIR
,如果您正在使用,那么您可能需要做类似的工作,如果您的所有运行者都有相同的构建目录:
GIT_CLONE_PATH:'C:\GitLab Runner/BUILDS/$CI_JOB\u ID/$CI\u PROJECT\u NAME'

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

根据您的需要
[runners.custom_build_dir]
  enabled = true
variables:
    GIT_CLONE_PATH: '$CI_BUILDS_DIR/$CI_JOB_ID/$CI_PROJECT_NAME'