You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Concourse Pipeline中设置变量并复用命令执行结果

在Concourse Pipeline中保存并复用命令执行结果

要实现将gh release view | head -n 1 | cut -f 1的执行结果作为变量供后续步骤使用,核心是利用Concourse的task outputs/inputs机制共享数据,具体实现如下:

1. 编写获取版本号的Task

创建一个task执行目标命令,将结果写入output目录的文件中,供后续任务读取:

jobs:
- name: fetch-and-use-release-version
  plan:
  - task: fetch-release-version
    config:
      platform: linux
      image_resource:
        type: docker-image
        source: {repository: alpine/git} # 替换为你已配置好gh命令的镜像
      outputs:
      - name: release-version # 定义输出目录,用于存储结果文件
      run:
        path: sh
        args:
        - -c
        - |
          # 执行命令并将结果写入output目录的文件
          gh release view | head -n 1 | cut -f 1 > release-version/version.txt

2. 在后续Task中读取并使用变量

通过inputs引入之前的output目录,读取文件内容转为变量:

- task: use-release-version
    config:
      platform: linux
      image_resource:
        type: docker-image
        source: {repository: alpine}
      inputs:
      - name: release-version # 引入前一个task的输出目录
      run:
        path: sh
        args:
        - -c
        - |
          # 读取文件内容赋值给变量
          RELEASE_VERSION=$(cat release-version/version.txt)
          # 后续步骤直接使用该变量
          echo "当前最新版本: $RELEASE_VERSION"
          # 这里可添加业务逻辑,如用版本号构建镜像、生成发布说明等

关键注意点

  • outputs/inputs名称一致:前一个task的outputs名称必须和后续task的inputs名称完全匹配,Concourse才会自动挂载目录。
  • 镜像兼容性:确保使用的镜像已安装gh命令,且已完成Github登录配置(你已确认这部分没问题)。
  • 文件写入路径:必须将结果写入outputs定义的目录下,否则后续任务无法访问到数据。

内容的提问来源于stack exchange,提问作者Sachin Kainth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 07:50:35