2013-03-29 13 views
31

Tôi đang cố gắng thiết lập Jenkins trên máy tính Windows Server 2012 và tôi gặp rất nhiều khó khăn.Jenkins treo ở "Tìm nạp thay đổi ngược dòng từ nguồn gốc"

Những điều tôi đã thực hiện:

  • Tạo một mật khẩu ít id_rsa, và id_rsa.pub
  • Tạo một file known_hosts cho bitbucket.org sử dụng ssh.exe -T bitbucket.org và chấp nhận thêm máy chủ.
  • Thêm E: để hệ thống toàn CHỦ Biến
  • Tôi đã thêm các tập tin để C:/Windows/SysWOW64/config/systemprofile/.ssh cũng như E:/.ssh
  • tôi đã liên kết khóa công khai của tôi để Bitbucket như một chìa khóa triển khai.
  • Tôi đã triple-kiểm tra tất cả các URL của tôi, tên người dùng, vv
  • Tôi thậm chí bằng tay kéo từ kho lưu trữ để thiết lập một cơ sở ban đầu trong C:/Program Files (x86)/Jenkins/jobs/MyProject/workspace/

Tuy nhiên nó vẫn bị treo ở

Building in workspace C:\Program Files (x86)\Jenkins\jobs\MyProject\workspace 
Checkout:workspace/C:\Program Files (x86)\Jenkins\jobs\MyProject\workspace - [email protected] 
Using strategy: Default 
Fetching changes from 1 remote Git repository 
Fetching upstream changes from origin 

Tôi đã cho nó khoảng 20 phút, vì vậy nó không phải là tốc độ/kích thước của vấn đề repo. Nếu tôi hủy, đây là những gì được trả lại:

ERROR: Problem fetching from origin/origin - could be unavailable. Continuing anyway 
hudson.plugins.git.GitException: Error performing command: C:\Program Files  (x86)\Git\bin\git.exe fetch -t origin +refs/heads/*:refs/remotes/origin/* 
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:780) 
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:739) 
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.fetch(CliGitAPIImpl.java:160) 
at hudson.plugins.git.GitAPI.fetch(GitAPI.java:230) 
at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:793) 
at hudson.plugins.git.GitSCM.access$000(GitSCM.java:57) 
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:976) 
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:942) 
at hudson.FilePath.act(FilePath.java:865) 
at hudson.FilePath.act(FilePath.java:838) 
at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.java:942) 
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1101) 
at hudson.model.AbstractProject.checkout(AbstractProject.java:1364) 
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:670) 
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88) 
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:575) 
at hudson.model.Run.execute(Run.java:1575) 
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) 
at hudson.model.ResourceController.execute(ResourceController.java:88) 
at hudson.model.Executor.run(Executor.java:237) 
Caused by: java.lang.InterruptedException 
at java.lang.ProcessImpl.waitFor(Native Method) 
at hudson.Proc$LocalProc.join(Proc.java:319) 
at hudson.Launcher$ProcStarter.join(Launcher.java:360) 
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:769) 
... 19 more 
ERROR: Could not fetch from any repository 
FATAL: Could not fetch from any repository 
hudson.plugins.git.GitException: Could not fetch from any repository 
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:981) 
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:942) 
at hudson.FilePath.act(FilePath.java:865) 
at hudson.FilePath.act(FilePath.java:838) 
at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.java:942) 
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1101) 
at hudson.model.AbstractProject.checkout(AbstractProject.java:1364) 
at  hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:670) 
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88) 
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:575) 
at hudson.model.Run.execute(Run.java:1575) 
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) 
at hudson.model.ResourceController.execute(ResourceController.java:88) 
at hudson.model.Executor.run(Executor.java:237) 

Tôi đang ở cuối trí thông minh ở đây, vì vậy tôi đánh giá cao tất cả sự trợ giúp tôi có thể nhận được. Dưới đây là một số lựa chọn bài viết mà tôi đã thử không có cải tiến.

Authenticate Jenkins CI for Github private repository

Permission denied (publickey) when setting up Jenkins

Hudson Git Plugin not working on windows

http://computercamp.cdwilson.us/jenkins-git-clone-via-ssh-on-windows-7-x64

+0

Đây có phải là sự cố PATH không? (http://blog.cgdecker.com/2011/02/git-clone-error-on-jenkinshudson-on.html) – VonC

+0

Kiểm tra lại HOME từ trong một phiên bản đang chạy của Jenkins (như trong http: //blog.hlyh .dk/2011/07/debugging-hudson-git-plugin-hanging.html) – VonC

+0

Tôi cũng gặp sự cố này. Điều bực bội là đôi khi nó hoạt động và đôi khi không. Vì vậy, tất cả mọi thứ phải được cấu hình đúng, nhưng nó chỉ là ngẫu nhiên thất bại. –

Trả lời

31

Đây là cách tôi cố định một vấn đề tương tự:

MSysGit cài đặt hai git.exe. Một dưới C:\Program Files (x86)\Git\bin và hình thứ hai dưới C:\Program Files (x86)\Git\cmd. Người đầu tiên không thể được sử dụng với Jenkins. Nó sẽ treo sau khi hoàn thành công việc của nó. Cái thứ hai hoạt động hoàn hảo.

Cập nhật cài đặt Jenkins Git của bạn để trỏ đến đúng cmd\git.exe và tận hưởng!

+1

Đã hoạt động! cảm ơn!! – 3lRicko

+1

Anh hùng, cảm ơn !!! –

+0

Cảm ơn! Làm việc như người ở. – GDefender

2

Chỉ cần trải nghiệm sự cố tại 'Tìm nạp thay đổi ngược dòng từ nguồn gốc'.

Chạy Jenkins như một dịch vụ trên máy chạy Windows có vẻ như (từ những gì tôi đã gặp phải) gặp sự cố khi sử dụng SSL.

Giải pháp Giải pháp]

  1. Thay đổi dịch vụ Jenkins của bạn để chạy theo một tài khoản cục bộ.
  2. Đảm bảo tài khoản quản trị viên cục bộ của bạn được định cấu hình để thực hiện tương tác Git với SSH.
  3. Khởi động lại Jenkins (details).
  4. Nếu Jenkins không bắt đầu, nó có vấn đề cố gắng để kéo từ Git. Thủ công giết git và ssh quy trình, giết java.exe của bạn từ Jenkins và tự khởi động dịch vụ Jenkins.

Chi tiết về Tại sao tôi Chọn giải pháp này]

Tôi đã theo các bước khác trước với việc thiết lập các máy chủ ủy quyền để chấp nhận các máy chủ và đăng ký phím Jenkins trên máy chủ cho phép kết nối. Tôi đã đảm bảo rằng tôi có thể thực hiện thành công các hành động Git trong tài khoản Hệ thống cục bộ của tôi (dịch vụ Jenkins được chạy dưới). Tuy nhiên, tìm nạp sẽ đóng băng. Để kiểm tra xem Git và SSL của tôi đã được cấu hình đúng chưa, tôi thậm chí đã đi đến kho lưu trữ Git được cấu hình ban đầu trong thư mục công việc Jenkins của tôi và thực hiện yêu cầu kéo thành công under the local system account. Nó đã làm việc; do đó các phím đã được thiết lập chính xác.

Tôi quên nơi tôi đọc, nhưng tôi đã nghe thấy các vấn đề phát sinh khi giao dịch với Git/SSH theo hệ thống cục bộ. Với kiến ​​thức này, tôi đã chơi với môi trường Git và thay đổi biến môi trường GIT_SSH để sử dụng plink (với sự kết hợp của Putty để nhớ khóa máy chủ, puttygen để chuyển đổi khóa OpenSSL thành khóa Putty và pageant để nhớ khóa của tôi) . Một khi tôi nhận được nó làm việc với plink, tôi đã không tìm thấy nó là một giải pháp sử dụng được. Tôi đặt hàng để sử dụng một cách chính xác, tôi cũng phải chạy cuộc thi dưới tài khoản hệ thống cục bộ của tôi để dịch vụ Jenkins chính xác thương lượng các cuộc gọi SSH. Sau khi suy nghĩ làm thế nào tôi sẽ thiết lập chính xác trạng thái ban đầu của tôi khi khởi động lại, tôi không muốn đặt tất cả nỗ lực này vào việc kết nối SSH hoạt động.

Thay vào đó, tôi quyết định việc chạy Jenkins theo tài khoản quản trị cục bộ của mình cũng được cấu hình để xử lý với máy chủ Git dễ dàng hơn. Không cần phải xử lý các khóa SSH được cấu hình cho tài khoản hệ thống cục bộ và các hành động git của tôi hoạt động tốt.


Lưu ý, câu trả lời của David Gageot có thể áp dụng cho một số. Tôi không phải thay đổi bất kỳ cài đặt Git nào của mình khi cài đặt Git, tôi chọn tùy chọn Run Git from the Windows Command Prompt để ánh xạ đường dẫn đến thư mục C:\Program Files (x86)\Git\bin\cmd\.

2

Một liên kết mà tôi thấy rất hữu ích khi cấu hình Jenkins trên cửa sổ, đặc biệt là khi sử dụng trình cài đặt MSI là thế này: http://opensourcetester.co.uk/2013/06/28/jenkins-windows-ssh/

Và một điều nữa mà tôi không tìm thấy rõ ràng là: bạn phải sử dụng url SSH khi kết nối với Github thay vì mặc định https. Hy vọng rằng sẽ tiết kiệm thời gian cho ai đó.

2

Tôi đã gặp vấn đề tương tự trên máy tính xách tay của mình và tôi có thể tìm ra giải pháp, tuy nhiên điều này thực sự chỉ áp dụng nếu bạn đang chạy chiến tranh Jenkins trong vùng chứa web Tomcat được thiết lập làm dịch vụ Windows.

Tôi chỉ cần đặt dịch vụ Tomcat để đăng nhập với tư cách người dùng cửa sổ thay vì Hệ thống cục bộ.

8

Đây là cách tôi giải quyết nó:

Tôi chạy psexec công cụ Sysinternals để đẻ trứng một CMD được chạy dưới tài khoản LocalSystem (cùng tài khoản như dịch vụ Jenkins đang chạy)

PSEXEC -i -s -d CMD 

Trong này nhắc lệnh cmd Tôi đã thực hiện lệnh git tương tự từ thư mục không gian làm việc như các quá trình GIT.exe treo. Ví dụ.

d: \ Programs \ Jenkins \ jobs \ jobname \ workspace> D: \ Programs \ Git \ bin \ git.exe tìm nạp -t ssh + git: //[email protected]: 9360/data/gitpub/myRepository.git + refs/heads/: refs/remotes/origin/

Et voila: Tôi được nhắc nhập "có" để thêm khóa SSH vào danh sách máy chủ đã biết.

1

Đối với tôi, đó là quyền trên thư mục $ HOME/.ssh và nội dung của nó. Sau khi cài đặt nó hiển thị cho nhóm người dùng cụ thể, Jenkins có thể tìm nạp các thay đổi sau khi khởi động lại.

0

Version 2.6.1 of the Git client for Windows khắc phục vấn đề này trong Jenkins. Bây giờ "Tìm nạp thay đổi ngược dòng từ nguồn gốc" không có sự chậm trễ.

Tôi đang sử dụng cmd git trong Jenkins từ:

C: \ Program Files \ Git \ cmd \ git.exe

0

Tôi đã dành vài giờ cố gắng để con số này ra và tôi phát hiện ra rằng việc thêm mật khẩu để URL repo cố định vấn đề:

https://USERNAME:[email protected]/REPO.git 

Xin lưu ý : giữa tên người dùng và mật khẩu