在子项目中获取gitlab父项目详细信息

在子项目中获取gitlab父项目详细信息,gitlab,gitlab-ci,gitlab-api,Gitlab,Gitlab Ci,Gitlab Api,我正在使用下面两个gitlab存储库 父Gitlab repo-应用程序代码,例如-Angular应用程序 子Gitlab repo-对于Gitlab管道,只有Gitlab-ci.yml文件,其中包含运行管道的脚本 我使用以下步骤从父级调用管道/子项目gitlab-ci.yml文件 父Gitlab repo-Gitlab-ci.yml文件 include: - project: 'my-group/child-project' ref: master file: '/te

我正在使用下面两个gitlab存储库

  • 父Gitlab repo-应用程序代码,例如-Angular应用程序
  • 子Gitlab repo-对于Gitlab管道,只有Gitlab-ci.yml文件,其中包含运行管道的脚本
  • 我使用以下步骤从父级调用管道/子项目gitlab-ci.yml文件

    父Gitlab repo-Gitlab-ci.yml文件

      include:
      - project: 'my-group/child-project'
        ref: master
        file: '/templates/.gitlab-ci-template.yml'
    
    stages:
      - test
      - build
    
    before_script:
    - export PARENT_PROJECT_NAME = ?
    - export PARENT_PROJECT_PIPELINE_ID = ?
    - export PARENT_PROJECT_BRANCH_NAME = ?
    
    
    job 1:
      stage: test
      script: 
        - echo "Runnig test for project ${PARENT_PROJECT_NAME}"
        - node_modules/.bin/ng test
    
    
    release_job:
      stage: build
      script: node_modules/.bin/ng build --prod
      artifacts:
        name: "project-$CI_COMMIT_REF_NAME"
        paths:
          - dist/
      only:
        - tags
    
    子项目-gitlab-ci.yml文件

      include:
      - project: 'my-group/child-project'
        ref: master
        file: '/templates/.gitlab-ci-template.yml'
    
    stages:
      - test
      - build
    
    before_script:
    - export PARENT_PROJECT_NAME = ?
    - export PARENT_PROJECT_PIPELINE_ID = ?
    - export PARENT_PROJECT_BRANCH_NAME = ?
    
    
    job 1:
      stage: test
      script: 
        - echo "Runnig test for project ${PARENT_PROJECT_NAME}"
        - node_modules/.bin/ng test
    
    
    release_job:
      stage: build
      script: node_modules/.bin/ng build --prod
      artifacts:
        name: "project-$CI_COMMIT_REF_NAME"
        paths:
          - dist/
      only:
        - tags
    
    如何在运行管道的子项目中获取父回购详细信息,如父项目名称、管道id和分支名称


    一种方法是在父项目中定义变量并在子项目中使用,但是有没有其他方法可以直接访问子项目中的父项目详细信息?

    因为您是
    包括子项目的配置,而不是
    触发它,这两个管道定义文件在管道启动之前合并为一个,因此这种方法与将子项目定义的内容放在父项目中没有实际区别


    因此,如果管道在父项目上运行,则所有的项目都将基于父项目。例如,像
    $CI\u COMMIT\u REF\u NAME
    $CI\u PROJECT\u NAME
    这样的变量将指向父项目和父项目的分支。

    如果您可以使用真正的“父子”管道gitlab功能(这里不是这种情况),那么您可以将其连接到下游管道。为什么不能将子管道放在(实际管道)在父级?由于架构设计,我们使所有项目的管道配置通用。以使事情一致。