我有一个BuildKite管道,它有两个命令步骤和一个块步骤。除其他外,第一个命令步骤收集大量信息并将其放入环境变量中。然后,该块运行,并要求用户继续。假设已批准,则第二个命令将运行,但没有以前设置的环境变量(单独的步骤,可以是单独的代理,等等)。
最简单的可复制的:
steps:
- label: "Test setting variable"
command: |
export MY_VAR=SomeValue
- wait: ~
- label: "Test using variable"
command: |
echo MY_VAR=$$MY_VAR有没有办法告诉BuildKite将导出的环境变量添加到管道范围的变量中?我有一个wait,所以第二步在第一步完成之前不会运行。
我意识到我可以使用buildkite-agent meta-data set/get。如果没有更好的办法我会这么做的。谢谢。
发布于 2022-07-01 01:10:52
您可以为整个管道创建一个全局env部分:
env:
MY_VAR: SomeValue
steps:
...这里设置的变量对所有步骤都可用。
不过,不确定您是否有要在此设置的值,听起来这些值只是在步骤中计算出来的。
作为另一种选择,您可以尝试将值导出到文件中,将文件存储为工件,然后按照所需的步骤还原它:
- label: "First step"
commands:
- echo export MY_VAR=SomeValue > shared_vars.sh
artifact_paths:
- shared_vars.sh
- label "Second step"
commands:
- buildkite-agent artifact download shared_vars.sh .
- source shared_vars.sh
- echo MY_VAR=$$MY_VAR这是一个未经测试的伪代码,但我使用了类似的方法来修复Bitbucket管道中的相同问题,而且效果很好。
https://stackoverflow.com/questions/71918304
复制相似问题