Gitlab Runner-每个版本的新文件夹

时间:2018-09-13 15:58:07

标签: 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/myproject
  • 依此类推

使用此方法,我可以通过更改指向最后一个跑步者目录的符号链接来更新我的网站。

是否可以通过这种方式配置Gitlab Runner?

2 个答案:

答案 0 :(得分:1)

您可能想阅读以下答案Changing the build intermediate paths for gitlab-runner

我将在这里重新发布我的答案:

从概念上讲,这种方法不是要走的路。构建目录不是部署目录,它是临时目录,用于从中构建或部署 ,而在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

这会将您的projectfiles移动到/ home / ab12 / public_html /

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

答案 1 :(得分:0)

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

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

enabled = true下设置[runners.custom_build_dir](更多信息here

[runners.custom_build_dir]
  enabled = true

在您的.gitlab-ci.yml文件中,在variables下设置GIT_CLONE_PATH。它必须以$CI_BUILDS_DIR/开头,例如$CI_BUILDS_DIR/$CI_JOB_ID/$CI_PROJECT_NAME,这可能会为您提供所需的信息,尽管如果您有多个阶段,则它们将具有不同的工作ID。另外,您可以尝试$CI_BUILDS_DIR/$CI_COMMIT_SHA,这将为您的每次提交提供一个唯一的文件夹。 (更多信息here

variables:
    GIT_CLONE_PATH: '$CI_BUILDS_DIR/$CI_JOB_ID/$CI_PROJECT_NAME'
  

很遗憾,GIT_BUILDS_DIR中有currently an issue使用GIT_CLONE_PATH,如果您使用的是Windows and Powershell,那么您可能必须执行以下操作,如果您所有的跑步者都具有相同的构建目录:GIT_CLONE_PATH: 'C:\GitLab-Runner/builds/$CI_JOB_ID/$CI_PROJECT_NAME'

您可能想看看variables available to youpredefined variables)来找到最适合您的路径的变量。