我试图通过 azure devops 管道锁定我的 azure devops 存储库之一中的分支,但出现以下错误。对这个错误有什么想法吗?
“错误:路径 '/obisvt/_apis' 的控制器未找到或未实现 IController。操作返回 404 状态代码。”
trigger: none
appendCommitMessageToRunName: false
pool:
vmImage: 'ubuntu-latest'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.x' # Required to use Azure CLI
- task: UseDotNet@2 # Ensures .NET is available if needed
inputs:
packageType: 'sdk'
version: '6.0.302'
- bash: echo ${AZURE_DEVOPS_CLI_PAT} | az devops login
env:
AZURE_DEVOPS_CLI_PAT: $(System.AccessToken)
displayName: 'Login Azure DevOps Extension'
- script:
az repos ref lock --repository "test" --org "https://dev.azure.com/test/project1" --project "OBISVT" --name "main_test"
我可以用您的 yaml 重现该错误。这是因为
az repos ref lock
的参数不正确。
对于
--org
,您应该只使用organization url
,就像https://dev.azure.com/orgname
一样,删除多余的project1
。
此外,对于
--name
,格式应类似于heads/my_branch
,前面加上heads/
。
示例如下:
az repos ref lock --repository "reponame" --org "https://dev.azure.com/orgname" --project "projectname" --name "heads/main_test"
请检查文档az repos ref lock以获取命令详细信息。
此外,您使用
$(system.accesstoken)
登录devops,身份指向构建服务身份,这可能没有具有锁定目标分支的适当权限,建议从用户帐户创建Personal access token
。
完整的yaml如下,请将值修改为您的值:
trigger: none
appendCommitMessageToRunName: false
pool:
vmImage: 'ubuntu-latest'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.x' # Required to use Azure CLI
- task: UseDotNet@2 # Ensures .NET is available if needed
inputs:
packageType: 'sdk'
version: '6.0.302'
# use $AZURE_DEVOPS_CLI_PAT for echo, and add --organization for login if it's not current organization.
- bash: echo $AZURE_DEVOPS_CLI_PAT | az devops login
env:
AZURE_DEVOPS_CLI_PAT: $(pat)
displayName: 'Login Azure DevOps Extension'
- script:
az repos ref lock --repository "test" --org "https://dev.azure.com/orgname" --project "OBISVT" --name "heads/main_test"
您也可以删除
login task
,直接为脚本添加 pat 标记,也可以。
- script:
az repos ref lock --repository "test" --org "https://dev.azure.com/orgname" --project "OBISVT" --name "heads/main_test"
env:
AZURE_DEVOPS_EXT_PAT: $(pat)