2017-10-13 9 views
0

私たちはTFS 2017サーバで過去2ヶ月間Sonarqubeを使用してきました。全体的には非常に役に立ちましたが、数週間前に、Sonarqubeが401エラー(Unauthorized)を返すため、ビルドの1つが失敗し始めました。Sonarqube TFSタスクがエラーを返す(401)1つのプロジェクトで無許可である

2017-10-12T15:11:19.7921253Z ##[error]16:11:19.729 Failed to request and parse ' http://sonarqube.local:9000/api/settings/values?component=MYPROJECTNAME%3Amaster ': The remote server returned an error: (401) Unauthorized.

2017-10-12T15:11:19.7921253Z ##[error]16:11:19.729 Could not authorize while connecting to the SonarQube server. Check your credentials and try again.

この好奇心事は、他のプロジェクトから他のビルドは、同じAPIトークンを使用して、絶対にうまく働いているということです。私は失敗したプロジェクトで新しいSonarqubeエンドポイントを作成しました。そして同じことが起こった場合にのみ同じAPIキーを使用して再度良いプロジェクトを作成しました。 1つは上記のエラーで失敗し、もう1つは問題ありません。

これはsonarqube自体の中のセキュリティ/権限オプションであったかもしれないと思ったので、全く新しいsonarqubeプロジェクトを作成しようとしましたが、もう1つのTFSプロジェクトは失敗しました。

この問題は、TFSプロジェクトのセキュリティ設定に起因すると思われますが、良いプロジェクトと悪いプロジェクトを比較した後、何が原因か分かりません。同じように設定されているようです。私は良いビルドと悪いビルドの両方でデバッグを有効にし、出力を比較しました。

グッド:

2017-10-12T15:13:07.1067146Z ##[debug]Processed: ##vso[task.setvariable variable=MSBuild.SonarQube.ServerPassword;]


2017-10-12T15:13:07.2785974Z ##[debug] arguments = /c ""Y:\2017_agent_work_tasks\SonarQubeScannerMsBuildBegin_15b84ca1-b62f-4a2a-a403-89b77a063157\3.0.2\SonarQubeScannerMsBuild\MSBuild.SonarQube.Runner.exe" begin /k:"MYPROJECTNAME" /n:"MYPROJECTNAME" /v:"20171012.7" /d:sonar.host.url="http://sonarqube.local:9000/" /d:sonar.login=******** /d:sonar.cs.vscoveragexml.reportsPaths="***.coveragexml" /d:sonar.branch="master""

私の知る限り、両者の唯一の本当の違いは良いビルドがないのに対し、「失敗」ビルドはどこからsonar.passwordを拾っているということです悪い:

2017-10-12T15:11:19.5733714Z ##[debug]Processed: ##vso[task.setvariable variable=MSBuild.SonarQube.ServerPassword;]********


2017-10-12T15:11:19.5733714Z ##[debug] Path: Z:\2017_agent_work_tasks\SonarQubeScannerMsBuildBegin_15b84ca1-b62f-4a2a-a403-89b77a063157\3.0.2\SonarQubeScannerMsBuild\MSBuild.SonarQube.Runner.exe 2017-10-12T15:11:19.5733714Z ##[debug] Arguments: begin /k:"MYPROJECTNAME" /n:"MYPROJECTNAME" /v:"20171012.3" /d:sonar.host.url="http://sonarqube.local:9000/" /d:sonar.login=******** /d:sonar.password=******** /d:sonar.cs.vscoveragexml.reportsPaths="***.coveragexml" /d:sonar.branch="master"

(注:このインスタンス内の別のビルドエージェントには良い/悪いRANは、薬剤は同一であり、私は「良い」プロジェクトは「悪いながら、私たちのエージェントのすべてで動作することが確認できましたが、 "プロジェクトはすべてのエージェントで同じ結果で失敗します)。

しかし、このパスワードがどこから得られているのかわかりません。リポジトリにはsonar.propertiesファイルがありません。確かに私は失敗したTFSプロジェクトのリポジトリをクローンし、それを作業中のTFSプロジェクトのリポジトリにプッシュし、ビルドを複製して動作させました。

私はSonarqube自体からログをチェックしましたし、彼らは

役に立つ未満の私は何を見逃しているだろうか?

TFS 2017 15.117.26714.0

Sonarqubeは6.5.0.27846

Sonarqubeタスクのバージョンである3.0.2

EDITです:私はビルドを編集することで、このための一時的な回避策を得るために管理していますタスクはsonar.passwordをコマンドラインに挿入しないでください。これはうまくいきます。それは、根本的な問題は、この神秘的なパスワードを「どこかから」引き出す作業だが、私はそれを拾う場所をまだ失っていることを証明している。私は何が多くの情報を見つけることができませんMSBuild.SonarQube.ServerPassword

答えて

1

(401)未承認に基づいています。一般に、TFSのSonarQubeサービスエンドポイントに認証トークンを指定する必要があります。click! SonarQubeのユーザートークンを取得するにはthese stepsに従ってください。ただし、トラブルシューティングを行って1つのプロジェクトが機能し、別のものが機能しませんでした。あなたの問題。

SonarQube.Analysis.xmlのsonar.loginsonar.passwordプロパティがコメントアウトされていることを確認してください。そうでない場合、トークンは使用されません。

ビルド定義とビルドビルドの比較をお勧めします。別の方法は、悪いプロジェクトのためのソナー・クベ関連タスクでのみ新しいビルド定義を作成することです。認証が機能するかどうかを確認するには、ビルド定義に関連する問題の場合は絞り込みます。

関連する問題