资源上的Concourse管道变量

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

我想声明具有默认值的变量并在大厅资源中使用它

例如在 pipeline.yml 的开头,声明了以下变量。

PROJECT: hello-world

然后在资源/资源类型中使用它,例如

groups:
  - name: ((PROJECT))
    jobs:
      - pull-request
      - create-artifacts

现在出现类似错误

  - groups.((PROJECT)): '((PROJECT))' is not a valid identifier: must start with a lowercase letter

实际上只有在设置管道时传递

--var PROJECT=hello-world
时才解析变量。

好奇;为什么它没有引用

pipeline.yml
中声明的变量 我不想在设置管道时传递任何额外的参数,想在 yml 本身中声明它。

请帮忙。


更新: 上面的问题是通过锚点和别名解决的,如下所示

PROJECT: &PROJECT hello-world


groups:
  - name: *PROJECT
    jobs:
      - pull-request
      - create-artifacts

但同样不适用于资源

REPOSITORY_NAME: &REPOSITORY_NAME hello-world-repo

resources:
  - name: pull-request-branch
    check_every: 1m
    type: pull-request
    icon: source-pull
    source:
      repo: cahcommercial/*REPOSITORY_NAME

请帮忙。

yaml concourse concourse-pipeline
1个回答
0
投票

问题1:

PROJECT: &PROJECT hello-world


groups:
  - name: *PROJECT
    jobs:
      - pull-request
      - create-artifacts

Q2

REPOSITORY_NAME: &REPOSITORY_NAME
  repo: owner/hello-world-repo

resources:
  - name: pull-request-branch
    check_every: 1m
    type: pull-request
    icon: source-pull
    source:
      <<: *REPOSITORY_NAME

但我仍然更喜欢从命令行传递变量是额外的强大选项。

https://concourse-ci.org/vars.html#static-vars

fly -t target set-pipeline --pipeline pipeline-name \
  -c pipeline.yml \
  -v PROJECT=hello-world \

然后在 pipeline.yml 中使用变量语法

groups:
  - name: ((PROJECT))
    jobs:
      - pull-request
      - create-artifacts
© www.soinside.com 2019 - 2024. All rights reserved.