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

如何通过Shell脚本配置Azure DevOps Linux代理环境并传递环境变量?

在Linux Azure Pipelines代理中传递Shell脚本的环境变量给后续任务

当然可以实现,Linux代理上有两种可靠的方式让Shell脚本里的变量被同作业后续任务访问:

方法1:写入代理环境变量文件

Linux管道代理会自动加载$(Agent.TempDirectory)/env文件中的环境变量,你可以在Shell脚本里把需要传递的变量追加到这个文件中:

修改你的Shell脚本env.sh:

# 原有业务逻辑和export语句
export APP_VERSION=1.0.0
export BUILD_TYPE=release

# 将变量写入代理环境文件
echo "APP_VERSION=$APP_VERSION" >> "$AGENT_TEMPDIRECTORY/env"
echo "BUILD_TYPE=$BUILD_TYPE" >> "$AGENT_TEMPDIRECTORY/env"

然后在Pipeline中执行这个脚本即可,后续任务就能直接读取这些变量:

jobs:
  - job: BuildLinux
    steps:
      - task: ShellScript@2
        inputs:
          scriptPath: /my/path/env.sh
      - task: Bash@3
        inputs:
          targetType: 'inline'
          script: |
            echo "当前APP版本:$APP_VERSION"
            echo "构建类型:$BUILD_TYPE"

方法2:使用Pipeline变量设置命令(官方推荐)

Azure Pipelines提供了##vso[task.setvariable]命令,可以直接将变量设置为管道级别的变量,后续任务无需额外配置就能访问:

修改你的Shell脚本env.sh:

# 原有业务逻辑
APP_VERSION=1.0.0
BUILD_TYPE=release

# 设置Pipeline变量
echo "##vso[task.setvariable variable=APP_VERSION]$APP_VERSION"
echo "##vso[task.setvariable variable=BUILD_TYPE]$BUILD_TYPE"

Pipeline使用示例和方法1一致,后续任务同样可以直接使用$APP_VERSION和$BUILD_TYPE。

两种方法的区别

  • 方法1是修改代理进程的环境变量,所有后续在该代理上运行的任务都会继承这些变量;
  • 方法2是设置Pipeline的任务级变量,更符合Pipeline的变量管理规范,如果你需要将变量传递到其他作业,还可以添加isoutput=true参数实现跨作业传递。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 01:02:51