Azure 拉取请求 | Azure Devops - “您必须在 '+' 运算符之后提供值表达式。”

Posted

技术标签:

【中文标题】Azure 拉取请求 | Azure Devops - “您必须在 \'+\' 运算符之后提供值表达式。”【英文标题】:Azure Pull Request | Azure Devops - " You must provide a value expression following the '+' operator."Azure 拉取请求 | Azure Devops - “您必须在 '+' 运算符之后提供值表达式。” 【发布时间】:2022-01-02 07:06:25 【问题描述】:

我目前正在运行这个 yaml 文件:

trigger:
- none
## notes 
pool:
  vmImage: ubuntu-latest

## Job to calculate semantic version
jobs:
  - job: CalculateVersion
    displayName: Semantic versioning
    
    steps:
      # Checkout with persist credentials
      - checkout: self
        persistCredentials: true

      # Install GitVersion
      - task: gitversion/setup@0
        displayName: Install GitVersion
        inputs:
          versionSpec: '5.x'

      # Retrieve Pull Request Description
      - task: PullRequestDescription@0
        name: RetrievePullRequestDescription
        displayName: Retrieve Pull Request description
        inputs:
          action: 'view'
          outputVariable: 'PullRequest.DescriptionContent'
          isOutput: true
          stripIdentifiers: false

      # Add git commit message that will be picked up by GitVersion ("+semver: patch/minor/major")
      # Depending on the Pull Request description, where the developer has marked the type of change
      - task: PowerShell@2
        displayName: Add git commit message for SemVer
        inputs:
          targetType: inline
          script: |
            Write-Host "Configuring git author info.." -ForegroundColor Cyan
          
            git config user.email "alan.haro@datashieldprotect.com"
            git config user.name "alan.haro"
            Write-Host "Doing git checkout..." -ForegroundColor Cyan
            git checkout -b $("$(System.PullRequest.SourceBranch)".replace('refs/heads/creating-git-tags', ''))
            Write-Host "Checking Pull Request description..." -ForegroundColor Cyan
            $PRdesc = "$(RetrievePullRequestDescription.PullRequest.DescriptionContent)"
            if ($PRdesc -match '(\[x\] \bFix\b)') 
              Write-Host "Adding git (empty) commit message to mark this branch as a 'patch' SemVer increment." -ForegroundColor Cyan
              git commit -a -m "+semver: patch [skip azurepipelines]" --allow-empty
             elseif ($PRdesc -match '(\[x\] \bFeature\b)') 
              Write-Host "Adding git (empty) commit message to mark this branch as a 'minor' SemVer increment." -ForegroundColor Cyan
              git commit -a -m "+semver: minor [skip azurepipelines]" --allow-empty
             elseif ($PRdesc -match '(\[x\] \bBig\b)') 
              Write-Host "Adding git (empty) commit message to mark this branch as a 'major' SemVer increment." -ForegroundColor Cyan
              git commit -a -m "+semver: major [skip azurepipelines]" --allow-empty
             else 
              Write-Host "##vso[task.LogIssue type=error;]Please select the type of change in the Pull Request description, and Re-queue the validation." -ForegroundColor Cyan
              $PRdesc
              exit 1
            
            Write-Host "Doing git push.." -ForegroundColor Cyan
            git push --set-upstream origin $("$(System.PullRequest.SourceBranch)".replace('refs/heads/', ''))
            Write-Host "Done." -ForegroundColor Cyan
          
      # Determine the semantic version & test test
      - task: gitversion/execute@0
        displayName: Determine SemVer

为了确保它运行良好,我必须在新 PR 的 cmets 中传递以下命令:

git commit -a -m "+'semver: minor [skip azurepipelines]'" --allow-empty

这样做,我会遇到以下问题:

" 您必须在 '+' 运算符之后提供一个值表达式。"

有谁知道我还能做些什么来防止这种类型的错误消息?

【问题讨论】:

我不确定。尝试用单引号包裹字符串 '+semver: patch [skip azurepipelines]' 【参考方案1】:

我通过在 PR 描述中添加以下模板解决了我的问题:

说明 感谢您对 Bla Bla 回购的贡献。 在提交此 PR 之前,请确保:

[ ] 修复 [ ] 功能 [ ] 大

注意:如果您想使用不同的术语,则必须更改正则表达式部分。举个例子:

 if ($PRdesc -match '(\[x\] \**bFix**\b)')

同时,您必须在拉取请求中添加的复选框内进行更改,以确保其匹配。

现在,脚本正在运行。如果您想查看为您的项目添加语义版本控制的指南,您必须查看指南的创建者链接:https://www.moderndata.ai/2021/10/automatic-semantic-versioning-in-azure-devops-with-release-notes/。看看我创建的主要问题 - $(System.PullRequest.SourceBranch) no found。

【讨论】:

您的原始任务是 git commit 错误。你的回答如何解决问题? 为 SemVer Powershell 脚本添加 git 提交消息有一些正则表达式将取代复选框,以确保我能够声明我的拉取请求是修复、功能还是大。通过在 PR-Comments 中添加上面的表格解决了这个问题 这就是我的答案,我在我的 PR 中添加了我的 cmets 的模板,然后选择我需要的选项。阅读脚本,您会看到正则表达式要求您提供复选框,如果您在 PR cmets 中添加这些复选框,您将能够使用此脚本。脚本本身没有错,一开始没看懂,现在解决了,分享下我遵循的攻略

以上是关于Azure 拉取请求 | Azure Devops - “您必须在 '+' 运算符之后提供值表达式。”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Azure DevOps 的拉取请求中显示构建状态

具有代码质量的 Azure Devops 拉取请求修饰

是否可以限制谁可以在 Azure DevOps 中完成拉取请求?

给定版本的拉取请求的 Azure DevOps Web 视图

Azure DevOps 上的拉取请求以强制替换而不是合并

在 Azure Devops 上完成拉取请求后,如何自动“git tag -a”?