web-dev-qa-db-ja.com

Jenkinsのgitプラグインは、ローカルマシンからリポジトリのクローンを作成できません。エラーコード128

エラー:

Failed to connect to repository : Command "/usr/bin/git ls-remote -h file:///home/myuser/path/to/project HEAD" returned status code 128:
stdout:
stderr: fatal: 'home/myuser/path/to/project' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

私は以下を試しました:

  • chmod 777リポジトリフォルダー(.gitディレクトリを含むフォルダー)
  • chownedからjenkins:jenkinsリポジトリフォルダ上
  • このローカルリポジトリフォルダから別のフォルダにクローンを作成しようとしました:これは機能します!

上記のコマンドを実行すると:/usr/bin/git ls-remote -h file:///home/myuser/path/to/project HEAD on cmd私はブランチを取得します。

私の質問は次のとおりです。

  1. なぜgit ls-remote -h ...必要なときに呼び出されるコマンドgit clone ...
  2. ローカルリポジトリからコードを取得するようにjenkins gitプラグインを構成する方法

私の環境:

RHEL 5.9

Jenkins 1.519がサービスとしてインストールされています(Webコンテナなし)

Gitプラグイン

18
Vikram

Jenkinsをサービスとしてインストールする場合、デフォルトでは、Jenkins/home/jenkinsのようにユーザーディレクトリを作成しません。 Jenkinsのデフォルトのホームディレクトリは/var/lib/jenkinsに設定されています。私の回避策から、ご想像のとおり、jenkinsは他のユーザーディレクトリからローカルリソースにアクセスするのに問題があります。

クローンリポジトリをJenkinsのデフォルトのホームディレクトリの下、つまり/var/lib/jenkinsの下に移動したので、Repository URLin Jenkinsプロジェクト構成は次のようになります:file:///${JENKINS_HOME}/repo/<myprojectname>

UPDATE:上記は問題なく動作します...しかし、 このブログ からそれを行うためのより良い方法を見つけました

手順の概要は次のとおりです。

/etc/init.d/jenkinsスクリプトを検索します。いくつかの$JENKINS変数が定義されています。これにより、ジェンキンスのsysconfig、つまり/etc/sysconfig/jenkinsが表示されます。 jenkinsインスタンスを停止します。

Sudo /sbin/service jenkins stop

バックアップを取る

cp /etc/sysconfig/jenkins /etc/sysconfig/jenkins.bak

このファイルで、次のプロパティを変更します。

$JENKINS_USER="<your desired user>"

関連するすべてのJenkinsディレクトリの所有権を変更します。

chown -R <your desired user>:<your user group> /var/lib/jenkins

chown -R <your desired user>:<your user group> /var/cache/jenkins

chown -R <your desired user>:<your user group> /var/log/jenkins

Jenkinsを再起動すると、そのエラーは消えるはずです

Sudo /sbin/service jenkins start

このエラーは今すぐ消えるはずです!

16
Vikram

この質問が出されて久しぶりですが、今日この問題があり、リソースがほとんどありません。おそらく、人々はgitリポジトリにリモートで接続する傾向があるためです。

Straceを使用して、jenkinsが正確に何をしているかを確認しましたが、はい、権限に問題がありました。

しかし、私は答え2よりも簡単な方法でそれを解決しました-gitサーバーグループにジェンキンスを追加することで-私の場合、git1:root# gpasswd -a jenkins git1 root# service jenkins restart

8
Bulba

WindowsでJenkinsを実行していますが、同じ問題が発生しました。 Jenkinsサービスをラップトップにユーザーとしてログインさせることで、これを解決することができました。

(Windows 7)

  1. タスクマネージャーを開きます(Ctrl + Shift +エスケープ)
    1. (Windows 10のみ)をクリックします More Details ポップアップウィンドウの左下隅
  2. サービスタブに移動します
  3. クリック Services... ボタン
  4. サービスのリストで「Jenkins」を見つけます
  5. 「Jenkins」を右クリックして、プロパティをクリックします。
  6. Jenkinsのプロパティウィンドウのログオンタブをクリックします
  7. このアカウント:の下でログオン:を選択します
  8. ユーザー名とパスワードを入力してください
  9. クリック OK
  10. Jenkinsサービスを再起動します
  11. その後、ボブはあなたの叔父です。
6
Greg Burghardt
  1. Jenkinsがgit cloneコマンドを使用するのは、プロジェクト用にワークスペースが構成されているときのみです。その他のインスタンスはgit ls-remoteコマンドを使用します。

  2. Jenkinsを構成したときに同じ問題が発生しました。 SSHキーをいじって解決しました。これも構成の問題のようです。 JenkinsアカウントにSSHキーが設定されているかどうかを確認します。

また、提供されているリンクで、SSHの構成手順をステップごとに参照してください。これは正確な解決策を提供しないかもしれませんが、解決策を示すことができます。

http://oodlestechnologies.com/blogs/How-to-setup-Jenkins-With-Grails-on-Ubunt

3
Mir S Mehdi

file:///の代わりに、ssh://この答え のように使用することもできます。

ssh://YOUR_USER@localhost/PATH_TO_YOUR_PROJECT

標準のsshセットアップを行う必要があることに注意してください。

  1. ssh-keygenにまだキーペアがない場合は、~/.sshを使用してキーペアを生成します
  2. 秘密鍵(デフォルトは~/.ssh/id_rsa)をJenkins(プロジェクト設定、gitリポジトリ、資格情報)に貼り付けます
  3. 公開鍵を~/.ssh/authorized_keysに貼り付けます
0
xjcl

他の解決策は私にとって少し「ハッキー」だと思います。私が行ったのは、Jenkinsホームフォルダを/ Users/Shared /から/ Users/[myacccount] /に移動することでした。このようにして、私のJenkinsは私のリポジトリと私のAndroid SDKにアクセスできるようになります(Jenkinsを使用する場所であるため)。次に、JENKINS_HOME環境変数を変更します。これを行うには、にJENKINS_HOMEを入力します。私の.bash_profile(ただし、これを行う方法は他にもあります)。

注:私はOSXを使用しています

0
gilsaints88