Azure DevOps Pipeline如何获取多资源仓库的分支名称与环境变量
解决方案
你可以直接通过Azure DevOps Pipeline为资源仓库预设的专属变量获取对应信息,无需额外拉取仓库代码即可读取,具体操作如下:
1. 直接读取内置资源仓库变量
所有在resources.repositories下声明的仓库,都可以通过resources.repositories.<仓库别名>.<属性名>的格式直接读取属性,你需要的分支、提交标识等信息都有对应的内置属性:
- 分支/标签信息:
resources.repositories.<别名>.ref - 对应版本的完整提交SHA:
resources.repositories.<别名>.sha - 仓库所属项目名:
resources.repositories.<别名>.project - 仓库完整名称:
resources.repositories.<别名>.name
你给出的示例配置对应的变量调用示例如下:
steps: - script: | # 输出仓库one的信息 echo 仓库one分支:$(resources.repositories.one.ref) echo 仓库one提交哈希:$(resources.repositories.one.sha) # 输出仓库two的信息 echo 仓库two分支:$(resources.repositories.two.ref) echo 仓库two提交哈希:$(resources.repositories.two.sha) # 输出仓库three的信息 echo 仓库three分支:$(resources.repositories.three.ref) echo 仓库three提交哈希:$(resources.repositories.three.sha) displayName: 打印所有资源仓库属性
2. 获取资源仓库对应流水线的BuildNumber
如果你需要的是每个资源仓库对应的独立流水线的构建号(即$(Build.BuildNumber)),可以通过两种方式实现:
- 方式一:将三个仓库对应的流水线也声明为
pipeline类型的资源,直接通过resources.pipelines.<流水线别名>.runName读取对应流水线的最新构建号 - 方式二:在步骤中调用Azure DevOps CLI或者REST接口,根据仓库名、分支名查询对应分支的最新成功构建的BuildNumber
3. 导出为自定义环境变量
如果需要把这些属性导出为全局环境变量给后续所有步骤使用,可以通过日志命令实现:
steps: - script: | echo "##vso[task.setvariable variable=one_branch]$(resources.repositories.one.ref)" echo "##vso[task.setvariable variable=one_sha]$(resources.repositories.one.sha)" displayName: 导出仓库属性为环境变量 # 后续步骤可以直接通过$(one_branch)、$(one_sha)读取对应值
内容的提问来源于stack exchange,提问作者Re1ter
相关产品推荐
相关产品推荐

