在多个Gitlab项目gitlab-ci.yml文件下使用shell脚本功能

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

我有多个 gitlab 项目,我想创建一个在多个项目下有用的模板。

我一个项目下有2个文件

function.sh
function.yml

问题: 在 function.yml 下,当我在 before-script 中使用 default 关键字时,无论在何处使用此模板,default 关键字都有可能被覆盖,并且该函数无法使用。编写 function.yml 的更好方法是什么,这样它会很有用。

当前

function.yml

default:
  before_script: source scripts/functions.sh

现在我想将 function.yml 文件包含在其他 gitlab.yml 文件下,这样他们就可以直接使用 yml 文件中的函数。

例如。

include:
  - local: template/function.yml

stages:
  - testproject

testproject:
  stage: testproject
  script:
    - echoFunction "This is a pattern derived from the other yml file" #function call from function.yml file
shell gitlab include gitlab-ci
1个回答
0
投票

您可以使用以下方法降低 GitLab CI/CD 配置文件中的复杂性和重复配置:

  • 延长
  • !参考

!reference
示例:

函数.yml

.default:
  before_script:
    - source scripts/functions.sh

.gitlab-ci.yml

include:
  - local: template/function.yml

stages:
  - testproject

testproject:
  stage: testproject
  after_script:
      - !reference [.default, before_script]
  script:
    - echoFunction "This is a pattern derived from the other yml file" #function call from function.yml file

extends
示例:

函数.yml

.default:
  before_script:
    - source scripts/functions.sh

.gitlab-ci.yml

include:
  - local: template/function.yml

stages:
  - testproject

testproject:
  stage: testproject
  extends: .default
  script:
    - echoFunction "This is a pattern derived from the other yml file" #function call from function.yml file
© www.soinside.com 2019 - 2024. All rights reserved.