Terraform创建Azure DevOps分支后新增文件失败,报TF401021错误求助
问题分析与解决
问题描述
使用Terraform在Azure DevOps仓库创建develop分支成功,但在该分支下创建test.yml文件时失败,报错信息如下:
Error: Create repositroy file failed, repositoryID:
8249e650-45aa-4242-9bf5-a269cff844e7, branch: develop, file: test.yml.
Error: TF401021: 'develop' is not a valid name for a Git ref.
Parameter name: newPush
代码问题定位
问题出在azuredevops_git_repository_file资源的branch参数配置上:
原代码中直接引用分支短名称:
branch = azuredevops_git_repository_branch.new_branch.name
Azure DevOps的Git API要求分支引用必须使用完整的Git ref格式(即refs/heads/[分支名]),仅传入分支短名称develop不符合该规范。虽然azuredevops_git_repository_branch资源创建分支时允许使用短名称,但操作文件时必须传入完整的ref路径。
修复方案
修改azuredevops_git_repository_file的branch参数,拼接完整的分支引用路径:
# 在新建分支中添加test.yml文件 resource "azuredevops_git_repository_file" "default_pipeline" { repository_id = data.azuredevops_git_repository.myRepo.id file = "test.yml" content = file("${path.module}/assets/test.yml") branch = "refs/heads/${azuredevops_git_repository_branch.new_branch.name}" commit_message = "Add yml file via terraform" overwrite_on_create = true }
调整后API能识别到正确的分支引用,即可成功在目标分支创建文件。
内容的提问来源于stack exchange,提问作者GreenGrassTunnel
相关产品推荐
相关产品推荐

