2012-01-04 34 views
114

Tôi hiện đang sử dụng Jenkins trên PC phát triển của mình. Tôi đã cài đặt nó trên máy tính phát triển của mình vì tôi có kiến ​​thức hạn chế về công cụ này; vì vậy tôi đã thử nghiệm trên nó trong PC phát triển của mình. Bây giờ, tôi cảm thấy thoải mái với Jenkins là "đối tác" lâu dài của tôi trong quá trình xây dựng và muốn "di chuyển" Jenkins này đến một máy chủ chuyên dụng.Làm thế nào để di chuyển Jenkins từ PC này sang PC khác?

Trước đó, tôi đã thực hiện vài bản dựng và có các tạo phẩm được lưu trữ từ mỗi bản dựng. Đặc biệt, số xây dựng là rất quan trọng đối với tôi để kiểm soát phiên bản.

Làm cách nào để xuất tất cả thông tin Jenkins từ máy tính hiện tại của tôi sang máy chủ mới?

+6

Tôi chỉ làm điều này. Tôi đã làm theo các bước từ câu trả lời của Cédric Julien, nhưng tôi thấy rằng trên Windows tôi phải chạy một bản cài đặt Repair trước khi Jenkins có thể khởi chạy thành công sau khi di chuyển. Sau khi sửa chữa, mọi thứ đều ổn. – Smurph269

Trả lời

127

Tiếp theo Jenkins wiki, bạn sẽ phải:

  • cài đặt một Jenkins tươi trong máy chủ mới
  • hãy chắc chắn cũ và Jenkins mới được dừng lại
  • lưu trữ tất cả các nội dung của JENKINS_HOME của ví dụ jenkins cũ
  • giải nén tệp lưu trữ vào thư mục JENKINS_HOME mới
  • khởi chạy mới Jenkins
  • .210
  • đừng quên thay đổi tài liệu/liên kết đến các trường hợp mới của bạn của Jenkins :)
  • đừng quên thay đổi chủ sở hữu của các tập tin Jenkins mới: chown -R jenkins:jenkins $JENKINS_HOME

EDIT: JENKINS_HOME là theo mặc định trên cài đặt Linux nằm ở ~/.jenkins, nhưng để tìm chính xác vị trí của nó, hãy truy cập trang http://your_jenkins_url/configure và kiểm tra giá trị của thông số đầu tiên: Home directory, đây là JENKINS_HOME.

+0

Khi tôi khởi chạy jenkins mới của tôi, các nút của tôi đang hiển thị, điều đó là chính xác. Nhưng khi tôi nhấp vào một số nút các URL có chỉ đến jenkins cũ như sau: Chạy từ dòng lệnh nô lệ: javaws http: // old-jenkins-server: 8080/computer/slaveMachine1/slave-agent.jnlp Hoặc nếu nô lệ là không đầu: java -jar slave.jar -jnlpUrl http: // old-jenkins-server: 8080/computer/slaveMachine1/slave-agent.jnlp Bây giờ tôi nên làm cho các URL này cho mỗi nút để trỏ tới new-jenkins-server? – merlachandra

+11

Có giải pháp cho vấn đề của tôi được đề cập trong bình luận trước của tôi: Goto Quản lý Jenkins> cấu hình hệ thống. Ở đây trong phần 'Vị trí Jenkins', trong trường 'URL Jenkins', hãy thay đổi URL để trỏ nó tới máy chủ jenkins mới. – merlachandra

+2

đảm bảo sao chép các thư mục ẩn! – mohi

31

Trong trường hợp JENKINS_HOME thư mục của bạn quá lớn để sao chép, và tất cả những gì bạn cần là để cùng Công Việc thiết lập, Jenkins Plugins và Jenkins cấu hình (và không cần vật Job cũ và báo cáo), sau đó bạn có thể sử dụng ThinBackup Plugin :

  1. Install ThinBackup trên cả hai nguồn và mục tiêu máy chủ Jenkins
  2. Cấu hình sao lưu thư mục trên cả hai (trong Quản lý Jenkins -> ThinBackup -> Settings)

  3. Mở sourse Jenkins đi đến ThinBackup -> Backup Now

  4. Sao chép từ thư mục sao lưu Jenkins Nguồn để Jenkins Target Sao lưu thư mục
  5. On Target Jenkins đi đến ThinBackup -> Restore, và sau đó khởi động lại dịch vụ Jenkins.
  6. Nếu thiếu một số Plugins hoặc Jobs, sao chép nội dung sao lưu trực tiếp vào mục tiêu JENKINS_HOME.

  7. Nếu bạn đã xác thực người dùng trên nguồn Jenkins, và bây giờ bị khóa trên Jenkins đích, sau đó chỉnh sửa tệp config.xml của Jenkins, đặt <useSecurity> thành false và khởi động lại Jenkins.

+1

Tại sao thư mục JENKINS_HOME lại quá lớn để sao chép? Chúng ta đang nói về kích cỡ nào? – wotanii

+5

jenkins_home của tôi là 100Gb hoặc hơn, không muốn sao chép nó vào máy chủ mới, vì nó chủ yếu là vứt bỏ các thứ – user230910

8

Điều này giúp tôi chuyển từ Ubuntu 12.04 (Jenkins ver. 1.628) sang Ubuntu 16.04 (Jenkins ver. 1.651.2). Tôi trước tiên installed Jenkins from the repositories.

  1. Stop both Jenkins servers
  2. Sao chép JENKINS_HOME (ví dụ:/var/lib/Jenkins) từ máy chủ cũ sang cái mới. Từ một giao diện điều khiển trong máy chủ mới:

    rsync -av [email protected]:/var/lib/jenkins/ /var/lib/jenkins/

  3. Start your new Jenkins server

Bạn có thể không cần điều này, nhưng tôi đã phải

  • Manage JenkinsReload Configuration from Disk.
  • Ngắt kết nối và kết nối lại tất cả các nô lệ.
  • Kiểm tra xem trong các Configure System > Jenkins Location, các Jenkins URL được gán chính xác cho máy chủ Jenkins mới.
+0

Jenkins mới có cùng phiên bản với phiên bản cũ không? –

+0

@JakubCzaplicki - Cả Jenkins đều là 1,6, nhưng không chính xác cùng phiên bản. Đã cập nhật câu trả lời. Sau đó tôi cập nhật Ubuntu 16.04 lên Jenkins 2.6 thay thế tệp jenkins.war và nó hoạt động tốt. http://stackoverflow.com/questions/11062335/update-jenkins-from-a-war-file – Katu

1

Jenkins Máy chủ Tự động hóa:

Bước 1:

Thiết lập một kho lưu trữ để lưu trữ các Jenkins Trang chủ [Jobs, Configs, Plugins vv] trong Git-phòng thí nghiệm địa phương hoặc trên kho lưu trữ tin GitHub và giữ cho nó được cập nhật thường xuyên bằng cách đẩy bất kỳ thay đổi mới nào vào Công việc hoặc Plugins của Jenkins, v.v.

Bước 2:

Cấu hình một con rối host-nhóm/vai trò của Jenkins có thể được sử dụng để quay lên máy chủ Jenkins mới. Đừng tất cả các cấu hình cơ bản trong một công thức múa rối và hãy chắc chắn rằng nó sẽ cài đặt phiên bản mới nhất của Jenkins và thiết lập một thư mục riêng biệt/gắn cho JENKINS_HOME

Bước 3:

spin lên một máy mới sử dụng Jenkins-con rối cấu hình ở trên. Khi mọi thứ được cài đặt, hãy Grab/Clone Cấu hình Jenkins từ Git Repository đến Jenkins Home direcotry và Khởi động lại Jenkins.

Bước 4:

Chuyển đến URL Jenkins, Quản lý Jenkins -> Quản lý plugin và cập nhật tất cả các plugin yêu cầu cập nhật.

Xong

Bạn có thể sử dụng Docker Swarm hoặc Kubernetes để tự động mở rộng nút Slave.

1

Đôi khi chúng tôi có thể không có quyền truy cập vào máy Jenkins để sao chép thư mục trực tiếp vào một cá thể jenkins khác. Vì vậy, tôi đã viết một menu sử dụng utilty trong đó sử dụng các cuộc gọi API REST Jenkins để cài đặt các plugin và Jobs từ một cá thể jenkins này sang thể hiện khác.

Đối với Plugin Migration:

  1. GET yêu cầu: {SOURCE_JENKINS_SERVER}/pluginManager/api/json?depth=1 sẽ giúp bạn có được danh sách các plugin được cài đặt với phiên bản của họ.
  2. bạn có thể gửi yêu cầu POST với các thông số sau để cài đặt các plugin này.

    FINAL_URL = {DESTINATION_JENKINS_SERVER}/pluginManager/installNecessaryPlugins

    data = <jenkins><install plugin="{PLUGIN_NAME}@latest"/></jenkins> (ở đâu, mới nhất sẽ lấy phiên bản mới nhất của Plugin)

    auth = (destination_jenkins_username, destination_jenkins_password)

    header = {crumb_field:crumb_value,"Content-Type":"application/xml”} (nơi crumb_field = Jenkins-Crumb và nhận được giá trị crumb bằng cách sử dụng cuộc gọi API {DESTINATION_JENKINS_SERVER}/crumbIssuer/api/json

Đối VIỆC Migration:

  1. Bạn có thể lấy danh sách các công việc cài đặt trên {} SOURCE_JENKINS_URL sử dụng REST gọi {SOURCE_JENKINS_URL}/view/All/api/json
  2. Sau đó, bạn có thể nhận được mỗi file config.xml việc làm từ các công việc trên {} SOURCE_JENKINS_URL sử dụng URL việc {SOURCE_JENKINS_URL}/job/{JOB_NAME}
  3. Sử dụng tập tin config.xml này đăng nội dung của file xml trên {} DESTINATION_JENKINS_URL và điều đó sẽ tạo ra công việc trên {} DESTINATION_JENKINS_URL

Tôi đã tạo ra một tiện ích điều khiển menu trong python, nó yêu cầu người dùng lựa chọn để bắt đầu plugin hoặc di chuyển jenkins và sử dụng các cuộc gọi API REST Jenkins để làm điều đó.

Bạn có thể tham khảo các JenkinsMigration.docx từ url này

+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo . Câu trả lời [Chỉ liên kết] (https://meta.stackexchange.com/tags/link-only-answers/info) có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. – mmichael

+1

câu trả lời đã chỉnh sửa với chi tiết – psalvi21

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