現在、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
この問題を解決するには、自分をプロジェクトメンバーとして追加する必要がありました。これはプライベートリポジトリです。異なる許可設定でランナーが失敗したかどうかはわかりませんが、可能性は高いです。
このヘルプ 記事 gitlabでこの問題の概要を説明しています。
新しい許可モデルを導入すると、ビルドが失敗する場合があります。これは、プロジェクトが他のプロジェクトのソースにアクセスしようとし、適切な権限がないためです。ビルドログで、403または禁止されたアクセスメッセージに関する情報を探します。
管理者として、ユーザーがアクセスしようとしているグループまたはプロジェクトのメンバーであることを確認できます。ユーザーは、すべてが正しいことを確認するために、失敗したビルドを再試行します。
プロジェクトページで、設定ギアをクリックし、[メンバー]をクリックします。自分(またはビルドを生成するユーザー)をプロジェクトのメンバーとして追加します。 「マスター」ロールを使用しましたが、 このドキュメント に基づいているため、おそらく「レポーター」ロールを最低限使用できます。レポーターの役割は、「プロジェクトコードのプル」に引き続きアクセスできる最小の特権です。これにより403エラーが削除され、続行できました。
これは、現在のディレクトリをbefore_scriptに出力するcd
コマンドを追加する必要があるようです。次に、そのフォルダーの親にアクセスするためのアクセス許可を修正します。 gitlabランナーをc:\glrunner
にインストールした場合、おそらくc:\glrunner\builds
パーミッションを修正する必要があります。
2番目の問題は、buildsフォルダーを削除して、新しいgitクローンを強制する必要がある場合があることです。
Gitlabランナーサービスのログイン資格情報をgitlabuser
に変更することができます。これは、gitlabランナーがデフォルトで使用しているLOCAL SYSTEMアカウントよりも特権が少ない場合があります。
ログインしているユーザーを知りたい場合は、set
をbefore_scriptにも追加すると、環境変数のダンプが取得されます。それから、どのアカウントがログインしているか、そのUSERPROFILEがどこにあるかなどを確認できます。