Windowsサービスとして実行されているJenkinsを構成して、gitサーバー(gitosis)に接続し、リポジトリのクローンを作成するのに苦労しています。 Jenkinsは標準を使用するように設定されています Gitプラグイン 。
すべてが私たちによってホストされています。Jenkinsサーバーは_win.foo.com
_上にあり、gitosisはLinuxサーバー(_git.foo.com
_)上で実行されています。
_win.foo.com
_にRDPする場合、コマンドラインから(_git.exe clone --progress -o Origin [email protected]:myproject.git myproject
_)を問題なく複製できます。
Jenkinsはサービスとして実行されており、同じユーザーアカウントで実行されていないため、_.ssh
_フォルダーを_%SystemRoot%\System32\config\systemprofile
_(_%USERPROFILE%
_環境変数で定義)とC:\Program Files (x86)\Git\
ですが、完全に再起動した後でも、これらはどちらもJenkinsによって検出されていないようです。
_git.exe
_と_git.cmd
_の両方を使用してみました。どちらの場合も喜びはありません。
Jenkinsは次のエラーメッセージで失敗しています:
_ERROR: Error cloning remote repo 'Origin' : Could not clone [email protected]:myproject.git
ERROR: Cause: Error performing command: C:\Program Files (x86)\Git\cmd\git.cmd clone --progress -o Origin [email protected]:myproject.git C:\Program Files (x86)\Jenkins\jobs\myproject\workspace
Command "C:\Program Files (x86)\Git\cmd\git.cmd clone --progress -o Origin [email protected]:myproject.git C:\Program Files (x86)\Jenkins\jobs\myproject\workspace" returned status code 128: Cloning into C:\Program Files (x86)\Jenkins\jobs\myproject\workspace...
Access denied
fatal: The remote end hung up unexpectedly
_
私は何かを逃したと確信しているが、私は何がわからない。
助言?
私は密接に関連している次の記事を読んでいます: Git for Windowsに秘密のRSAキーの場所を教えてください そしてそれは良いヒントを与えてくれました:HOME-変数は重要です、しかし、それは私が思ったようにはうまくいきませんでした。
多くの調査と試行の結果、この記事を見つけました: http://markashleybell.com/portable-git-windows-setting-home-environment-variable.html
実際、サービスアカウントからsshを実行する場合、通常どおりWindowsで環境変数を設定するだけでは不十分ですが、キーが実際に見つかるように構成を変更します。
関連する短い概要:
C:\ Program Files\Git\etc\profileに移動し、次の行を追加します
HOME="/c/Users/YourUserAccount"
前
# normalize HOME to unix path
HOME="$(cd "$HOME" ; pwd)"
Gitalwaysが静的に割り当てられたホームのパスを使用するようになったため、これで解決しました。このマシンの他のユーザーに対してこのアプローチでセキュリティの問題が発生しないことを確認してください。
Jenkinsがクローンを作成するときにreallyチェックする必要がある唯一のパラメータは、%HOME%
環境変数値です。
Jenkinsセッションの「セット」(環境変数)を表示し、HOME
が定義されているかどうか、定義されている場合は、どのパスに定義されているかを確認する必要があります。
リマインダー:
HOME
を定義していませんHOME
から%USERPROFILE%
へ変数を表示するには、 パラメーター化されたビルド機能 を使用します。
Builderの名前でパラメーターを参照します。 「
env
」コマンドを使用して変数を表示し、続いてechoステートメントを使用して値の参照を示しています。