SonarQube:如何在YAML文件中使用Bash变量给sonar.pullrequest.key赋值
问题原因
你当前的配置存在3个核心错误导致变量无法生效:
- 你在if语句末尾加的管道符
|会启动独立子shell执行条件判断逻辑,子shell内赋值的pr_number变量作用域无法传递给后续的sonar-scanner命令,是变量未定义的核心原因 - 多行
run命令的YAML语法书写错误,没有正确声明多行脚本块 github.event.release是对象类型,不是数值ID,即使赋值成功也不符合SonarQube的参数格式要求,且非PR触发场景不需要配置sonar.pullrequest.key参数
修正后的配置
name: SonarQube on: push: branches: - master pull_request: branches: - master jobs: sonarqube: runs-on: ubuntu-latest steps: - name: Run sonarqube run: | if [[ -n "${{ github.event.number }}" ]]; then # PR触发场景传入PR编号 sonar-scanner -Dsonar.pullrequest.key=${{ github.event.number }} else # 普通push场景不需要配置PR相关参数 sonar-scanner fi
修正说明
- 用
|声明整个run字段为多行shell脚本,所有命令在同一个shell上下文执行,不存在变量跨作用域问题 - 直接在条件分支内执行对应逻辑,不需要额外定义中转变量,规避了变量赋值失效问题
- 按SonarQube的使用规则区分触发场景传参,避免传入无效的非数值参数
内容的提问来源于stack exchange,提问作者har17bar
相关产品推荐
相关产品推荐

