jenkins không kết nối được với kho git


11

Tôi không thể định cấu hình url kho lưu trữ git theo cách mà Jenkins có thể truy cập.

trong "Dự án> Cấu hình> Quản lý mã nguồn" Tôi đặt URL Kho lưu trữ thành "git @ store: kho lưu trữ / testproject.git"

Tôi nhận được lỗi này:

Failed to connect to repository : Command "/usr/bin/git -c core.askpass=true ls-remote -h git@store:repositories/testproject.git HEAD" returned status code 128:
stdout: 
stderr: Permission denied, please try again. 
Permission denied, please try again. 
Permission denied (publickey,password). 
fatal: Could not read from remote repository.

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

truy cập với URL đó hoạt động trên shell:

jenkins@dilbert:~$ /usr/bin/git -c core.askpass=true ls-remote -h git@store:repositories/testproject.git
git@store's password: 
4fd35a4f528e2f2921a52cfd03918b7cbde3d253    refs/heads/master

Tôi được yêu cầu nhập mật khẩu và nó hoạt động.

Tôi đã liên kết cùng một mật khẩu với thông tin đăng nhập trong Jenkins với "git /" và tôi cũng đã thử "git @ store /". Không có làm việc.

Xin lưu ý rằng đây không phải là về github, mà là về một kho git cục bộ.

cập nhật:

thêm khóa pub từ chủ jenkins vào nô lệ xây dựng, đã giúp cấu hình hoạt động:

ssh-copy-id jenkins@dilbert

bây giờ các bản dựng đang thất bại:

 > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > /usr/bin/git config remote.origin.url git@store:repositories/testproject.git # timeout=10
Fetching upstream changes from git@store:repositories/testproject.git
 > /usr/bin/git --version # timeout=10
 > /usr/bin/git -c core.askpass=true fetch --tags --progress git@store:repositories/testproject.git +refs/heads/*:refs/remotes/origin/*
ERROR: Error fetching remote repo 'origin'
hudson.plugins.git.GitException: Failed to fetch from git@store:repositories/testproject.git
    at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:735)
    at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:983)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1016)
    at hudson.scm.SCM.checkout(SCM.java:484)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1270)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:609)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:531)
    at hudson.model.Run.execute(Run.java:1751)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:89)
    at hudson.model.Executor.run(Executor.java:240)
Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git -c core.askpass=true fetch --tags --progress git@store:repositories/testproject.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout: 
stderr: Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
fatal: Could not read from remote repository.

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

cửa hàng là bậc thầy của jenkins, Dilbert là nô lệ xây dựng. ssh từ chủ đến công trình nô lệ.

jenkins@store:~$ ssh dilbert uptime
 16:06:21 up 3 days, 18:53, 13 users,  load average: 0,31, 0,38, 0,50

Bất kỳ ý tưởng làm thế nào để gỡ lỗi này?

Câu trả lời:


5

xác thực hoạt động thông qua ssh. bạn đã thêm khóa ssh công khai của người dùng jenkins vào người dùng git trên máy chủ git của bạn chưa?

hãy cho tôi biết nếu bạn cần hướng dẫn về cách thiết lập xác thực ssh và tôi sẽ chỉnh sửa bài đăng này tại đây.

/BIÊN TẬP:

rất vui vì bạn đã chạy nó Tôi đã xem trên trang web chính thức của jenkins để xem hướng dẫn chi tiết về phần ssh của cấu hình, nhưng tôi không thể tìm thấy.

vì vậy đây là một tổng quan nhanh - cho tôi biết nếu đây là những gì bạn cần.

  1. nô lệ jenkins (cỗ máy xây dựng) kết nối với máy chủ git (jenkins master)
  2. máy xây dựng chạy như người dùng jenkins (ví dụ jenkins @ Dilbert: ~ $)
  3. git-server chạy như người dùng git (ví dụ: git @ store: ~ $)
  4. Khóa công khai jenkins @ Dilbert cần được đặt trong git @ store ủy quyền
  5. chạy jenkins@dilbert:~/.ssh$ ssh-copy-id git@stoređể sao chép khóa công khai jenkins @ Dilbert ssh vào máy chủ git

bạn có thể vui lòng giải thích người dùng ssh-key thêm vào đâu không?
Jörg Beyer

người dùng Jenkins nên có mình quán rượu-key lưu trong <Jenkins dùng nhà dir> / ssh / id_rsa.pub này một nhu cầu để được thêm vào <git dùng nhà dir> / ssh / authorized_keys..
kindaleek

làm "jenkins @ store: ~ / .ssh $ ssh-copy-id git @ store" get jenkins để chấp nhận cấu hình (đó là một cải tiến), nhưng việc xây dựng một nô lệ jenkins từ xa đã thất bại. bất kỳ ý tưởng?
Jörg Beyer

tốt để đọc. Thật không may, trải nghiệm của tôi với git kết thúc khá nhiều ở đó ... nhưng tôi nhớ một vấn đề tương tự trong công việc. Bây giờ tôi có thể nhầm, nhưng bạn phải làm việc như một người dùng (ví dụ Joerg Beyer) trên nền tảng git, phải không? vui lòng xác minh quyền ở đó (bạn có thể thay đổi quyền của người dùng trong giao diện web cho từng nhóm mà họ thuộc về). hãy thử đặt nó thành nhà phát triển để thử nghiệm / EDIT: bạn đã viết nô lệ jenkins từ xa - nếu nó sử dụng một cặp khóa khác, bạn cần thêm khóa công khai vào git's ủy quyền một lần nữa
kindaleek 22/03/2015

không chắc. Tôi cập nhật câu hỏi. Tôi cần thêm khóa ssh nào?
Jörg Beyer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.