2016-10-12 24 views
4

私は現在、CI統合用のマルチランナーとgitlab.com(ローカルインストールではない)を使用しています。これは私のプロジェクトの一つではうまくいくが、別のプロジェクトでは失敗する。gitlab runner要求されたURLがエラーを返しました:403

MSBuildバージョン14.0.23107.0で私のホストに2012R2を使用しています。私は以下のエラーがアクセス拒否メッセージである403を示していることを知っています。私の問題は、変更する権限の設定を見つけることです。

エラーメッセージ:

Running with gitlab-ci-multi-runner 1.5.3 (fb49c47) Using Shell executor... Running on WIN-E0ORPCQUFHS...

Fetching changes...

HEAD is now at 6a70d96 update runner file remote: Access denied fatal: unable to access ' https://gitlab-ci-token:[email protected]/##REDACTED##/ADInactiveObjectCleanup.git/ ': The requested URL returned error: 403 Checking out 60ea1410 as Production...

fatal: reference is not a tree: 60ea1410dd7586f6ed9535d058f07c5bea2ba9c7 ERROR: Build failed: exit status 128

gitlab-ci.ymlファイル:

variables: 
    Solution: ADInactiveObjectCleanup.sln 

before_script: 
    #- "echo off" 
    #- 'call "%VS120COMNTOOLS%\vsvars32.bat"' 
    ## output environment variables (usefull for debugging, propably not what you want to do if your ci server is public) 
    #- echo. 
    #- set 
    #- echo. 

stages: 
    - build 
    #- test 
    #- deploy 

build: 
    stage: build 
    script: 
    - echo building... 
    - '"%ProgramFiles(x86)%\MSBuild\14.0\Bin\msbuild.exe" "%Solution%" /p:Configuration=Release' 
    except: 
    #- tags 

答えて

7

この問題を解決するには、自分自身をプロジェクトメンバーとして追加する必要がありました。これはプライベートレポです。私はそれによってランナーが異なる権限設定で失敗するかどうかは分かりませんが、可能性は高いです。

このヘルプarticleは、この問題の概要を説明しています。

With the new permission model in place, there may be times that your build will fail. This is most likely because your project tries to access other project's sources, and you don't have the appropriate permissions. In the build log look for information about 403 or forbidden access messages.

As an Administrator, you can verify that the user is a member of the group or project they're trying to have access to, and you can impersonate the user to retry the failing build in order to verify that everything is correct.

プロジェクトページからギアをクリックし、メンバーをクリックします。自分自身(またはユーザー生成ビルド)をメンバーとしてプロジェクトに追加します。私は "Master"ロールを使用しましたが、this documentに基づいて、おそらく "Reporter"ロールを最低限使用することができます。レポーターの役割は、「プル・プロジェクト・コード」にまだアクセスしていない最小限の特権です。これにより私の403エラーが取り除かれ、私は続けていくことができました。

+0

環境変数dumpにはビルドを開始した人の電子メールがあります。その人の権利によって、特定のサーバー側要素の成功と失敗が決まります。あれは正しいですか? –

+0

私は環境変数をダンプしません。あなたが 'before_script'ブロックに達する前にランナーの停止をクローン/プルできない場合。 –

+0

ああ、それは少しの失敗事例です。 gitlabランナーのconfig.tomlに、gitクローンが失敗したときに実行されるシェルコマンドのオプションがあるので、そういうものを見つけ出すことができます。 –

0

あなたbefore_scriptにカレントディレクトリを印刷するcdコマンドを追加追加する必要があるようにこれが見えます。次に、そのフォルダの親にアクセスするためのアクセス許可を修正します。 gitlabランナーをc:\ glrunnerにインストールした場合は、おそらくc:\ glrunner \ buildsの修正が必要です。

2番目の問題は、ビルドフォルダを削除して新しいgitクローンを強制的に強制する必要があることです。

gitlabランナーサービスのログイン資格情報をgitlabuserに変更することができます。管理者以外のアカウントである必要があります.Gitlabランナーがデフォルトで使用しているLOCAL SYSTEMアカウントよりも優先権が少ない場合があります。

誰がログインしているか知りたい場合は、setをbefore_scriptに追加すると、環境変数のダンプが取得されます。そこから、ログインしているアカウント、USERPROFILEがどこにあるのかなどを確認できます。

+0

私はあなたのすべての提案を一度に1つずつテストしました。それはまだそれを修正しませんでしたが、正しい方向に見て私を得た。あなたの提案はすべて、問題がランナーやシステムにインストールされていないことを確認することができました。この問題はgitlab.comのプロジェクト権限に存在していました。すぐに私の決議を掲載します。 –

+0

あなたのコントロール下にないシステム上の問題を解決することは確かに難しいです。私は、あなたがこのような許可の問題を見て解決するのを助けるためのツールを必要としていると推測しています。ランナーの '〜/ .ssh/id_rsa.pub'キーがgitlabに認識されていることを確認するだけで簡単ですか? –

+0

さらに簡単です。私は自分が既に所有しているプロジェクトに自分自身を加えなければなりませんでした... –

関連する問題