CI时如何跨Job修改变量?

例如我在pipeline中定义了变量:

variables:
  buildVersion: "UNKNWON"

来保证我在之后的job中能够根据该变量做出调整

但是如果我在某些使用了该变量的job之前需要修改该变量的话(比如根据当前的时间,Runner的tags,触发分支等等)
似乎是没有办法的,搜索了英文官方的相关文档和案例之后
目前最佳的方案也只有WebAPI本地文件的形式来保存和修改该变量

请问除了这个两个方案还有其他能够在pipeline中直接修改的方式吗?

PS:不一定要使用variables其他能够跨job使用的变量手段也可以

1 个赞

可以考虑在before_script这种job中写一个shell脚本,用于实现变量赋值的判断逻辑:

before_script:
  - export DOCKER_UPSTREAM=$(./detect-version.sh)

my_job:
  - image: our_image:$DOCKER_UPSTREAM
  - script:
    - ...

如果我需要在JOB中修改某变量呢?

JOB中可以给全局变量重新赋值,我理解你的意思不是简单的重新赋值,而是涉及到逻辑判断之后才输出一个值。

是的,请问如何赋值?像简单的shell变量一样吗,还是有什么spel语法,我没有查到,请问可以给个demo片段吗

image

1 个赞