我正在为项目使用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?
答案 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 you(predefined variables)来找到最适合您的路径的变量。