web-dev-qa-db-ja.com

gitlab runner要求されたURLはエラーを返しました:403

現在、CI統合用のマルチランナーでgitlab.com(ローカルインストールではありません)を使用しています。これは私のプロジェクトの1つではうまく機能しますが、別のプロジェクトでは失敗します。

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

エラーメッセージ:

Gitlab-ci-multi-runner 1.5.3(fb49c47)での実行Shell executorの使用... WIN-E0ORPCQUFHSでの実行...

変更を取得しています...

HEADは現在6a70d96更新ランナーファイルリモートにあります:アクセス拒否致命的:アクセスできません ' https:// gitlab-ci-token:[email protected]/##REDACTED##/ADInactiveObjectCleanup.git/ = ':要求されたURLはエラーを返しました:403 Productionとして60ea1410をチェックアウトしています...

致命的:参照はツリーではありません:60ea1410dd7586f6ed9535d058f07c5bea2ba9c7エラー:ビルドに失敗しました:終了ステータス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
12
Todd S

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

このヘルプ 記事 gitlabでこの問題の概要を説明しています。

新しい許可モデルを導入すると、ビルドが失敗する場合があります。これは、プロジェクトが他のプロジェクトのソースにアクセスしようとし、適切な権限がないためです。ビルドログで、403または禁止されたアクセスメッセージに関する情報を探します。

管理者として、ユーザーがアクセスしようとしているグループまたはプロジェクトのメンバーであることを確認できます。ユーザーは、すべてが正しいことを確認するために、失敗したビルドを再試行します。

プロジェクトページで、設定ギアをクリックし、[メンバー]をクリックします。自分(またはビルドを生成するユーザー)をプロジェクトのメンバーとして追加します。 「マスター」ロールを使用しましたが、 このドキュメント に基づいているため、おそらく「レポーター」ロールを最低限使用できます。レポーターの役割は、「プロジェクトコードのプル」に引き続きアクセスできる最小の特権です。これにより403エラーが削除され、続行できました。

21
Todd S

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

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

Gitlabランナーサービスのログイン資格情報をgitlabuserに変更することができます。これは、gitlabランナーがデフォルトで使用しているLOCAL SYSTEMアカウントよりも特権が少ない場合があります。

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

0
Warren P