【问题标题】:How to pass sh command inside withCredentials for maven in Jenkins file如何在 Jenkins 文件中为 maven 的 withCredentials 传递 sh 命令
【发布时间】:2022-01-18 18:45:12
【问题描述】:

我总是在下面的 Jenkinsfile 代码的第 6 行 (Dsonar.branch.name) 中收到未找到的错误。如果我将第 6 行交换为 Dsonar.sources,则表示找不到源。

withCredentials([string(credentialsId: 'sonar_token', variable: 'token')]) {
sh"""
mvn sonar:sonar \
-Dsonar.projectKey=app \
-Dsonar.host.url=https://sonarqube.test.dev \
-Dsonar.login="917336a835asdf3528c863498"\
-Dsonar.exclusions=$env.WORKSPACE/apps/core-app/src/test
-Dsonar.branch.name=$env.BRANCH_NAME
-Dsonar.sources=$env.WORKSPACE/apps/
-Dsonar.exclusions=$env.WORKSPACE/registry/apps/support-app/src/test
-Dsonar.exclusions=src/apitest/**,src/test/**
"""
}

    
Error below,
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:13 min
[INFO] Finished at: 2022-01-18T07:15:59Z
[INFO] ------------------------------------------------------------------------
+ -Dsonar.branch.name=feature/docker-build
/home/jenkins/agent/workspace/nt-registry_feature_docker-build@tmp/durable-d9e51887/script.sh: 3: -Dsonar.branch.name=feature/docker-build: not found

【问题讨论】:

  • 前四行末尾的反斜杠表示命令在下一行继续。在第五行你没有反斜杠,所以它总是认为下一行是一个新命令。确保在 mvn 命令的每一行上添加反斜杠,最后一行除外。

标签: shell jenkins


【解决方案1】:

我用下面的函数代替了 sh 命令。它按预期工作。

sonarResult = sonarqubeScan( 服务器名称:'sonarqube', sonarScannerExec: "$env.WORKSPACE/sonar-scanner-4.0.0.1744-linux/bin/sonar-scanner", credentialsId: 'sonar_token', 来源:“。”, addlArgs:config.sonar.sonarAdditionalArguments )

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2020-08-20
  • 2022-11-14
  • 1970-01-01
  • 2019-01-22
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 1970-01-01
  • 2018-02-26
相关资源
最近更新 更多