web-dev-qa-db-ja.com

Git over SSHを使用したJenkins(Windowsサービス)

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
_

私は何かを逃したと確信しているが、私は何がわからない。

助言?

3

私は密接に関連している次の記事を読んでいます: 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が静的に割り当てられたホームのパスを使用するようになったため、これで解決しました。このマシンの他のユーザーに対してこのアプローチでセキュリティの問題が発生しないことを確認してください。

4
Alexander Pacha

Jenkinsがクローンを作成するときにreallyチェックする必要がある唯一のパラメータは、%HOME%環境変数値です。
Jenkinsセッションの「セット」(環境変数)を表示し、HOMEが定義されているかどうか、定義されている場合は、どのパスに定義されているかを確認する必要があります。

リマインダー:

  • Windowsは、デフォルトではHOMEを定義していません
  • msysgitのデフォルトはHOMEから%USERPROFILE%

変数を表示するには、 パラメーター化されたビルド機能 を使用します。

Builderの名前でパラメーターを参照します。 「env」コマンドを使用して変数を表示し、続いてechoステートメントを使用して値の参照を示しています。

command Shell in parametrized Jenkins job

1
VonC