首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Gitlab Runner -每个构建的新文件夹

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

Stack Overflow用户
提问于 2018-09-13 15:58:06
回答 3查看 14.4K关注 0票数 7

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

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

但是我想每次创建一个“现在”文件夹:

  • builds/a3ac64e9/1/yproject/myproject
  • builds/a3ac64e9/2/yproject/myproject
  • builds/a3ac64e9/3/yproject/myproject
  • 诸若此类

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

有办法这样配置Gitlab Runner吗?

EN

回答 3

Stack Overflow用户

发布于 2019-06-27 08:55:36

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

在文本编辑器中打开config.toml:(关于在哪里找到这里的更多信息)

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

代码语言:javascript
运行
复制
[runners.custom_build_dir]
  enabled = true

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

代码语言:javascript
运行
复制
variables:
    GIT_CLONE_PATH: '$CI_BUILDS_DIR/$CI_JOB_ID/$CI_PROJECT_NAME'

不幸的是,目前是一个问题GIT_CLONE_PATH中使用GIT_BUILDS_DIR,如果您使用的是Windows和Powershell,那么如果您的所有运行程序都有相同的构建目录:GIT_CLONE_PATH: 'C:\GitLab-Runner/builds/$CI_JOB_ID/$CI_PROJECT_NAME',您可能不得不这样做。

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

票数 9
EN

Stack Overflow用户

发布于 2018-09-15 08:16:20

您可能想读下面的答案更改gitlab-runner的构建中间路径

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

从概念上讲,这种方法并不适合;构建目录不是一个部署目录,它是一个临时目录,用于从构建或部署,而在shell执行器上可以修复这个问题。

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

代码语言:javascript
运行
复制
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/

将项目命名为project1projectn,您的所有项目都可以使用同一个.gitlab-ci.yml文件。

票数 3
EN

Stack Overflow用户

发布于 2018-09-14 15:28:41

您不能仅通过Gitlab运行器配置来实现这一点,但是您可以创建2个运行程序,并使用onlytags关键字组合将它们专门分配给每个分支。

假设您的两个分支名为masterdevelop,并且两个运行程序被标记为master_runnerdevelop_runner标记,那么您的.gitlab-ci.yml可以如下所示:

代码语言:javascript
运行
复制
master_job:
   <<: *your_job
   only:
     - master
   tags:
     - master_runner

develop_job:
   <<: *your_job
   only:
     - develop
   tags:
     - develop_runner

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52317543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档