Azure Pipeline Build.Repository.Name 替换不需要的前缀
AzurePipeline Build.Repository.Name replace unwanted prefix
在 Azure Pipleine YAML 版本中,Build.Repository.Name 预定义变量在我的例子中包含 workspace/reponame
值。
我想删除 workspace/
前缀并在后续步骤中使用结果。
我尝试了很多方法都没有成功,但是替换表达式似乎对我有好处。
一个尝试过的解决方案:
variables:
myVariable: $[replace(variables['Build.Repository.Name'], 'workspace/', '')]
steps:
- bash: echo $(myVariable) # show nothing
正如我在文档中所读,Build.Repository.Name
在此阶段无法访问
以下运行时调用显示正确的值
steps:
- bash: echo $(Build.Repository.Name) # shows: workspace/reponame
我可以做类似的事情吗?正确的方法是什么?
- bash: echo $(replace('$(Build.Repository.Name)', 'workspace/', ''))
根据我的测试,替换表达式可以正常工作。
由于我的repo名称不包含/
,我切换到另一个预定义变量($(build.sourcebranch)
(例如refs/heads/master
))进行测试。
这里有两种方法:
1.Replace表达式:
variables:
myVariable: $[replace(variables['BUILD.SOURCEBRANCH'], 'refs/heads/', '')]
steps:
- bash: echo $(myVariable)
2.Bash 脚本:
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
SUBSTRING=$(echo $(BUILD.SOURCEBRANCH)| cut -d'/' -f 3)
echo $SUBSTRING
echo "##vso[task.setvariable variable=myvalue]$SUBSTRING"
- task: Bash@3
inputs:
targetType: 'inline'
script: |
echo $(myvalue)
结果:
对于您的情况,您可以尝试以下 bash 脚本:
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
SUBSTRING=$(echo $(Build.Repository.Name)| cut -d'/' -f 2)
echo $SUBSTRING
echo "##vso[task.setvariable variable=myvalue]$SUBSTRING"
- task: Bash@3
inputs:
targetType: 'inline'
script: |
echo $(myvalue)
在 Azure Pipleine YAML 版本中,Build.Repository.Name 预定义变量在我的例子中包含 workspace/reponame
值。
我想删除 workspace/
前缀并在后续步骤中使用结果。
我尝试了很多方法都没有成功,但是替换表达式似乎对我有好处。
一个尝试过的解决方案:
variables:
myVariable: $[replace(variables['Build.Repository.Name'], 'workspace/', '')]
steps:
- bash: echo $(myVariable) # show nothing
正如我在文档中所读,Build.Repository.Name
在此阶段无法访问
以下运行时调用显示正确的值
steps:
- bash: echo $(Build.Repository.Name) # shows: workspace/reponame
我可以做类似的事情吗?正确的方法是什么?
- bash: echo $(replace('$(Build.Repository.Name)', 'workspace/', ''))
根据我的测试,替换表达式可以正常工作。
由于我的repo名称不包含/
,我切换到另一个预定义变量($(build.sourcebranch)
(例如refs/heads/master
))进行测试。
这里有两种方法:
1.Replace表达式:
variables:
myVariable: $[replace(variables['BUILD.SOURCEBRANCH'], 'refs/heads/', '')]
steps:
- bash: echo $(myVariable)
2.Bash 脚本:
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
SUBSTRING=$(echo $(BUILD.SOURCEBRANCH)| cut -d'/' -f 3)
echo $SUBSTRING
echo "##vso[task.setvariable variable=myvalue]$SUBSTRING"
- task: Bash@3
inputs:
targetType: 'inline'
script: |
echo $(myvalue)
结果:
对于您的情况,您可以尝试以下 bash 脚本:
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
SUBSTRING=$(echo $(Build.Repository.Name)| cut -d'/' -f 2)
echo $SUBSTRING
echo "##vso[task.setvariable variable=myvalue]$SUBSTRING"
- task: Bash@3
inputs:
targetType: 'inline'
script: |
echo $(myvalue)