web-dev-qa-db-ja.com

Jenkins:ssh-agentプラグインとgitプラグインを一緒に使用する

したがって、次の状況が発生します。プロジェクトごとに専用ユーザーがいるサーバー(例:foo)と、jenkinsユーザーとして実行されるjenkinsサーバー。 fooユーザーのSSHキーペアを生成し、公開キーをデプロイキーとしてgithubリポジトリに追加しました。 (私はfooユーザーでリポジトリのクローンを作成できることを確認しました)

Jenkinsでは、「ManageJenkins」>「ManageCredentials」で、ユーザー名「foo」と「Global」スコープのfooの秘密鍵を持つ「SSHusernamewithprivatekey」として認証を設定します。

そこで、Jenkinsジョブを正しいワークスペース(たとえば、ユーザーfooの完全な所有権を持つ/home/foo/deployment)と資格情報「foo」を使用します。 「ソースコード管理」には、リポジトリのSSH URL([email protected]:foo/foo.gitなど)を使用したかったのですが、アクセス許可の問題があることがすぐに通知されます。

Failed to connect to repository : Command "git -c core.askpass=true ls-remote -h [email protected]:foo/foo.git HEAD" returned status code 128:
stdout: 
stderr: Permission denied (publickey). 
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

HttpsバージョンのURL( https://github.com/foo/foo.git )を使用すると、エラーは表示されなくなりますが、ジョブを実行すると、コンソール出力に次のエラーが表示されます。 :

Started by user developer
[EnvInject] - Loading node environment variables.
Building in workspace /home/foo/deployment
Cloning the remote Git repository
Cloning repository https://github.com/foo/foo.git
 > git init /home/foo/deployment # timeout=10
ERROR: Error cloning remote repo 'Origin'
hudson.plugins.git.GitException: Could not init /home/foo/deployment
    [long stacktrace]
Caused by: hudson.plugins.git.GitException: Command "git init /home/foo/deployment" returned status code 1:
stdout: 
stderr: /home/foo/deployment/.git: Permission denied
    [long stacktrace]
ERROR: null
Finished: FAILURE

キーペアはパスフレーズを使用していません。これを最初に機能させる場合は、パスフレーズを追加したいと思います。 Jenkinsは、Ubuntu 14.04.2 LTS(GNU/Linux 3.13.0-65-generic x86_64)ボックスで実行されます。

ここで何が欠けていますか?私が提供した資格情報が使用されていないようです。これが、アクセス許可で爆発する理由を説明しています。しかし、なぜそれらが使用されていないのか分かりませんか?そして、なぜgit@ URLを使用できないのですか?

git initでパーミッションの問題が発生するため、/home/foo/deploymentで手動で実行しましたが、Jenkinsジョブを再実行すると、git fetchでチョークが発生し、パーミッションの問題が発生します。

1
Creynders

ああ、とてもばかげた私。 SSHユーザーエージェントは、明らかにjenkinsユーザーがfooとしてリモートリポジトリに接続することのみを許可しますが、ローカルファイルシステムに書き込むためのアクセス許可を付与しません。

1
Creynders