2010-03-15 25 views
15

Tôi có Hudson (hệ thống tích hợp liên tục) với plugin git chạy trên Dịch vụ Windows Tomcat. msysgit được cài đặt và thư mục bin msysgit nằm trong đường dẫn. PuTTY/Pageant/plink được cài đặt và msysgit được cấu hình để sử dụng chúng.Cách định cấu hình plugin Hudson và git bằng khóa SSH

Khi tôi chạy một công việc mà cố gắng để clone kho git tôi nhận được lỗi sau:

$ git clone -o origin [email protected]:project.git "e:\HUDSON_HOME\jobs\Project Trunk\workspace" 
ERROR: Error cloning remote repo 'origin' : Could not clone [email protected]:project.git 
ERROR: Cause: Error performing git clone -o origin [email protected]:project.git e:\HUDSON_HOME\jobs\Project Trunk\workspace 
Trying next repository 
ERROR: Could not clone from a repository 
FATAL: Could not clone 
hudson.plugins.git.GitException: Could not clone 
  1. Chạy git clone git -o gốc @ hostname: project.git "e: \ HUDSON_HOME \ jobs \ Project Trunk \ workspace "từ dòng lệnh hoạt động mà không có lỗi.
  2. Tôi đã xác nhận rằng vấn đề của tôi không giống như Hudson git clone error vì git nằm trong đường dẫn và tôi không gặp bất kỳ lỗi nào về việc thực thi git trên trang Định cấu hình của Hudson.

Điều này khiến tôi tin rằng vấn đề là người dùng sở hữu dịch vụ Windows Tomcat/Hudson (Hệ thống cục bộ) không có khóa SSH được thiết lập để có thể sao chép kho lưu trữ git.

Câu hỏi của tôi là, làm thế nào tôi có thể thiết lập mọi thứ để git plugin/msysgit biết sử dụng khóa SSH cụ thể khi cố gắng sao chép? Tôi không nghĩ rằng cuộc thi sẽ hoạt động vì dịch vụ Tomcat đang chạy như người dùng "Hệ thống cục bộ", nhưng tôi có thể sai. Tôi đã thử thiết lập Pageant lên như một dịch vụ (bằng cách sử dụng runassvc.exe), đi qua khóa thích hợp, và có nó chạy như là "Hệ thống địa phương". Dịch vụ Tomcat/Hudson dường như không thể nhìn thấy chìa khóa từ dịch vụ cuộc thi. Có bất kỳ kỹ thuật nào khác để thiết lập khóa không?

Cảm ơn.

CHỈNH SỬA: Cuộc thảo luận trên http://n4.nabble.com/Hudson-with-git-and-ssh-td375633.html cho thấy rằng người khác có câu hỏi tương tự. ssh-agent đã được đề xuất và công cụ này đi kèm với msysgit nhưng tôi không chắc chắn làm thế nào để sử dụng nó kết hợp với dịch vụ Hudson. Tuy nhiên, đầu mối tốt nếu có ai có thể lấp đầy khoảng trống. Cảm ơn Peter đã bình luận với liên kết.

Ngoài ra, cuộc thảo luận về http://n4.nabble.com/questions-about-git-and-github-plug-ins-td383420.html bắt đầu với cùng một câu hỏi. Tôi đang cố gắng hồi sinh chuỗi đó.

+0

có giao diện tại đây http://n4.nabble.com/Hudson-with-git-and-ssh-td375633.html –

+0

Cảm ơn Peter. Tôi cũng bắt gặp sợi chỉ đó. Tôi đã không chắc chắn làm thế nào để sử dụng ssh-agent với Hudson chạy như một dịch vụ. Tôi cũng hy vọng một phương pháp chính thức hơn đã được phát triển kể từ khi cuộc thảo luận diễn ra. Tôi sẽ chỉnh sửa bài đăng đề cập đến ssh-agent. – jlpp

Trả lời

6

Chúng tôi sử dụng Hudson, kiểm tra mã nguồn từ git bằng khóa ssh. Tuy nhiên, chúng tôi thực sự có Hudson trên một máy chủ ubuntu. ssh cặp khóa Hudson sống ở ~hudson/id_rsa~hudson/id_rsa.pub

Vì vậy, thích ứng với lời khuyên của chúng tôi dành cho Windows thiết lập:

Các nhà phát triển Windows dựa trên đội ngũ của chúng tôi sử dụng MSysGit và thường xuyên kiểm tra mã thông qua git qua ssh - nhưng không sử dụng Putty/Pageant. Chúng tôi thấy Pageant rất đau do một số lỗi giao thức với thông tin đăng nhập. Thay vào đó, họ đã cấu hình git để sử dụng openSSH (đây là một trong các tùy chọn trong khi cài đặt). Cặp khóa công khai/riêng tư của họ sau đó sẽ hiển thị ở ~username/id_rsa~username/id_rsa.pub và tất cả đều hoạt động.

Vì vậy, tôi khuyên bạn nên thay đổi cấu hình git của mình để sử dụng OpenSSH thay vì pageant. Nếu không có gì khác, bạn sẽ không cần phải lo lắng về việc bắt đầu cuộc thi.

Bạn có thể sử dụng PuttyGen để tạo khóa. Tuy nhiên, nếu bạn đang sử dụng OpenSSH thay vì pageant, bạn sẽ cần phải xuất một khóa riêng phù hợp (từ một trong các menu ở trên cùng của PuttyGen) và lưu nó thành id_rsa và sao chép và dán khóa công khai từ GUI của PuttyGen (nó cho thấy nhưng sẽ không lưu một phiên bản phù hợp cho OpenSSH) và lưu nó là id_rsa.pub.Điều này là do Putty sử dụng định dạng hơi khác so với OpenSSH.

Ngoài ra, tất nhiên, bạn luôn có thể lưu trữ máy chủ hudson của bạn trên máy chủ ubuntu (hoặc là một thực một hoặc thông qua VirtualBox)

+0

Đây là câu trả lời hay, William. Tôi nghĩ rằng nếu tôi thay đổi người dùng chạy dịch vụ Windows Tomcat/Hudson từ "Hệ thống cục bộ" thì tôi có thể sử dụng phương pháp này. Trước khi tôi làm, tôi tự hỏi nếu có bất kỳ cách nào để làm điều này mà không thay đổi chủ sở hữu dịch vụ.Tôi sẽ cho người khác cơ hội trả lời. Cảm ơn một lần nữa. – jlpp

+1

Đây là phương pháp mà chúng tôi đã sử dụng trên cửa sổ của chúng tôi nô lệ. Người dùng có tên Hudson đã được thiết lập, khóa riêng được đặt trong ~ hudson/.ssh/id_rsa, máy chủ git được đăng ký trong ~ hudson/.ssh/known_hosts và dịch vụ nô lệ hudson đã được thay đổi để đăng nhập với tư cách người dùng hudson. Các lưu ý duy nhất tôi có là: Nếu Cygwin được cài đặt trên cửa sổ cài đặt đảm bảo rằng bạn có hudson đặt biến CYGWIN để trống, nếu không mingw sẽ ném các lỗi cho phép khóa riêng. – Guildencrantz

+1

@jlpp: Chúng tôi gặp vấn đề tương tự khi cố gắng kiểm tra các chi nhánh bzr ở Hudson, chúng tôi đã kết thúc chạy dịch vụ cửa sổ Tomcat dưới tài khoản người dùng cục bộ thay vào đó và hoạt động tốt. – Pete

7

Một lưu ý quan trọng cho các cửa sổ (mà tôi muốn đính kèm vào câu trả lời này bởi vì tôi tìm thấy câu hỏi này rất nhanh, nhưng tìm thấy chi tiết bổ sung này tôi chỉ cần sau nhiều giờ tìm kiếm):

Git muốn biến môi trường% HOME% được đặt thành thư mục của người dùng (IE C: \ Documents and Settings \ hudsonuser) ... đó là cách nó biết để tìm trong đó cho các thư mục .ssh với các tập tin quan trọng!

Tôi đã tìm thấy điều này ra here on server fault (nhưng không có đủ danh tiếng ở đó để upvote nó).

+1

cảm ơn! Tôi đã thêm HOME và nó đã làm việc cho tôi! –

3

tôi thấy tôi đã phải sử dụng một chiến thuật khác nhau để làm việc này trên Ubuntu (với Jenkins, không Hudson, mặc dù nếu không nó trông giống như về cơ bản cùng một vấn đề. Tôi đã kiểm tra biến %HOME% môi trường thông qua việc Jenkins GUI và nhìn thẳng

Mấu chốt tôi muốn sử dụng để xác định Jenkins vào kho riêng Github đã tồn tại chúng tôi đã copy những để /var/lib/jenkins/.ssh -... cả id_rsaid_rsa.pub tập tin cho rằng chìa khóa và tài khoản

Ban đầu tôi đã sao chép chúng dưới dạng "root" và chúng không thể truy cập được vào Jenkins vì vậy tôi vẫn gặp lỗi (gây nhầm lẫn, các lỗi yêu cầu tôi nhập cụm mật khẩu khi không có). Vì vậy, tôi đã làm chown, chmodchgrp để đặt những tính năng này khả dụng thành Jenkins.

Tôi đã thử nghiệm điều này bằng cách thực hiện một bản sao git khi đăng nhập với tư cách người dùng Jenkins.

Tôi biết đường dẫn này dành riêng cho Ubuntu, nhưng thiết lập tương tự đảm bảo các tệp chính khả dụng, đúng nơi và thử nghiệm trên dòng lệnh chỉ làm git clone git:myrepo, ít nhất có thể xác định nơi Windows khác nhau.

0

đặt thư mục .ssh của bạn dưới

C: \ Windows \ SysWOW64 \ config \ systemprofile

hoặc

C: \ Windows \ System32 \ config \ systemprofile

phụ thuộc vào bạn hệ thống là 32 hoặc 64.

Đây là thư mục "USER" cho "Hệ thống cục bộ".

Các vấn đề liên quan