触发子管道:构建目录问题

问题描述 投票:0回答:1

我有一个基于父子触发器的管道。我已启用 build_dir 覆盖并在 .yml 中提供克隆路径,如下所示。另请注意,其他一些开发人员也在使用相同的运行器同时进行一些实验,但没有 git 策略,并在特定目录中检查。

In config.toml

  [runners.custom_build_dir]
     enabled = true
  builds_dir = "//opt/app/abc"


In parent yml

variables:
  GIT_CLONE_PATH: $CI_BUILDS_DIR/$CI_PROJECT_PATH/project/pipeline

stages:
  - build
  - trigger-services

trigger_s1:
  interruptible: false
  stage: trigger-services
  needs: [build]
  trigger:
    include: s1.gitlab-ci.yml
    strategy: depend
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
      changes:
        paths:
          - abc/**/*          
      allow_failure: false



In s1.yml
---------------------

variables:
  GIT_CLONE_PATH: $CI_BUILDS_DIR/$CI_PROJECT_PATH/project/pipeline

workflow:
  rules:
    - if: $CI_PIPELINE_SOURCE == "parent_pipeline"

stages:
  - test

test:
  stage: test
  script: 
    - echo "Running the Unit Test Cases!"

现在我面临的问题是

1-我可以看到克隆目录在多次运行中不断变化。例如,它间歇性地选择/home/abc,有时选择/opt/abc/

2-另一个问题是当它在父作业中选择正确的补丁时,子管道作业会抛出错误,例如

错误:作业失败:GIT_CLONE_PATH =“ Correct_path”必须位于“a_random_path”内

gitlab 是否正在某处查寻这些构建和克隆路径?有什么方法可以在执行之前清理/重置它吗?

3-实现此管道工作(将正确的存储库传递给子作业)的最佳方法是什么?

gitlab-ci
1个回答
0
投票

所以问题出在跑步者的工作方向上。如果您以非 root 用户身份启动 runner 并且不传递任何工作目录作为 arg,它将采用当前目录作为工作目录。 在管道上触发繁荣!它期望您的克隆路径应该与该运行程序的工作目录相同。 修复 - 从 builds_dir 运行运行程序或将其作为工作目录参数传递。

gitlab-runner run --working-directory='/opt/app/abc'

© www.soinside.com 2019 - 2024. All rights reserved.