Có cách nào để giữ các tệp cấu hình Hudson / Jenkins trong kiểm soát nguồn không?


140

Tôi chưa quen với Hudson / Jenkins và đã tự hỏi liệu có cách nào để kiểm tra các tệp cấu hình của Hudson để kiểm soát nguồn không.

Lý tưởng nhất là tôi muốn có thể nhấp vào một số nút trong giao diện người dùng có nội dung 'lưu cấu hình' và kiểm tra các tệp cấu hình Hudson để kiểm soát nguồn.


Hoặc bạn có thể lưu trữ những thông tin đó trong một repo Git theo yêu cầu: xem câu trả lời của tôi dưới đây
VonC


Kiểm tra: thư mục HUDSON_HOME để biết cấu trúc của các tệp Jenkins.
kenorb

Câu trả lời:


62

Câu trả lời hữu ích nhất

Có một plugin gọi là plugin cấu hình SCM Sync .


Câu trả lời gốc

Hãy xem câu trả lời của tôi cho một câu hỏi tương tự. Ý tưởng cơ bản là sử dụng plugin-systemm-scm-plugin để phát hiện các thay đổi đối với các tệp xml. Phần thứ hai của bạn sẽ cam kết thay đổi SVN.

EDIT: Nếu bạn tìm cách xác định người dùng để thay đổi, hãy cho chúng tôi biết.

EDIT 2011-01-10 Trong khi đó có một plugin mới: plugin cấu hình SCM Sync . Hiện tại nó chỉ hoạt động với lật đổ và git, nhưng hỗ trợ cho nhiều kho lưu trữ hơn được lên kế hoạch. Tôi đang sử dụng nó kể từ phiên bản 0.0.3 và cho đến nay nó vẫn hoạt động tốt.


2
Tôi xin khác, plugin có một số điểm yếu lớn nếu bạn sử dụng git và hoạt động trong môi trường phức tạp: 'Nếu bạn sử dụng Git thì bạn nên sử dụng khóa SSH với tên mặc định. Đó là "id_rsa". SCM Sync không có tùy chọn chỉ định đường dẫn khóa ssh. SCM Sync sử dụng .ssh / id_rsa từ thư mục chính của chủ sở hữu quy trình jenkins. ' từ [ wiki.jenkins-ci.org/display/JENKINS/ từ
Ben Hutchison

2
Plugin Cấu hình đồng bộ hóa SCM không tương thích với plugin Subversion> = 2.0 (per problems.jenkins-ci.org/browse/JENKINS-21640 ).
Nick Jones

1
Tôi sẽ không khuyên bạn nên sử dụng plugin đặc biệt này, bài đăng cài đặt jenkins đã không xuất hiện. Dường như có rất nhiều lỗi trong plugin này và nó không được nâng cấp / sửa lỗi quá thường xuyên. Tránh "plugin cấu hình SCM Sync"
vikramvi

1
@vikramvi, phương án bạn đề xuất là gì?
Igor Rodriguez

1
@IgorRodriguez Vì công việc của jenkins không trải qua những thay đổi thường xuyên so với mã dự án; Tôi đang thực hiện các thay đổi bằng tay cho github.
vikramvi

38

Lưu ý rằng Vogella có gần đây (tháng 1 năm 2014, so với câu hỏi của OP tháng 1 năm 2010) và khác nhau về vấn đề này.
Hãy xem xét rằng plugin cấu hình SCM Sync có thể tạo ra rất nhiều cam kết.
Vì vậy, thay vì dựa vào plugin và quy trình tự động, anh ta quản lý tính năng tương tự theo cách thủ công:

Lưu trữ thông tin công việc của Jenkins trong Git

Tôi thấy số lượng cam kết hơi quá, vì vậy tôi quyết định kiểm soát các cam kết bằng tay và chỉ lưu thông tin Công việc chứ không phải cấu hình Jenkins.
Đối với việc chuyển đổi này vào thư mục công việc Jenkins của bạn (Ubuntu /var/lib/jenkins/jobs:) và thực hiện git initlệnh ăn trộm.

Tôi đã tạo .gitignoretệp sau để chỉ lưu trữ thông tin công việc Git:

builds/
workspace/
lastStable
lastSuccessful
nextBuildNumber
modules/
*.log

Bây giờ bạn có thể thêm và cam kết thay đổi theo ý của bạn.
Và nếu bạn thêm một điều khiển từ xa khác vào kho Git của mình, bạn có thể đẩy cấu hình của mình sang một máy chủ khác.

Alberto thực sự khuyên bạn nên thêm vào (trong $JENKINS_HOME):

  • cấu hình riêng của jenkins ( config.xml),
  • các plugin jenkins cấu hình ( hudson*.xml) và
  • cấu hình người dùng ( users/*/config.xml)

Sẽ không lưu trữ các cấu hình người dùng để lộ các mã thông báo API rõ ràng trong chúng config.xml?
Boon

@Boon Tôi thực sự không biết, vì gần đây tôi không phải sử dụng mã thông báo API. Đó có thể là một câu hỏi hay cho chính bạn để hỏi.
VonC

2
Sau một số nghiên cứu, hóa ra các mã thông báo API được mã hóa trong XML, vì vậy điều này sẽ không gây ra rủi ro bảo mật.
Boon

19

Để tự quản lý cấu hình của bạn với Git, tệp .gitignore sau đây có thể hữu ích.

# Miscellaneous Hudson litter
*.log
*.tmp
*.old
*.bak
*.jar
*.json

# Generated Hudson state
/.owner
/secret.key
/queue.xml
/fingerprints/
/shelvedProjects/
/updates/

# Tools that Hudson manages
/tools/

# Extracted plugins
/plugins/*/

# Job state
builds/
workspace/
lastStable
lastSuccessful
nextBuildNumber

Xem GitHub Gist nàybài đăng trên blog này để biết thêm chi tiết.


14

Có một trình cắm Cấu hình đồng bộ SCM mới thực hiện chính xác những gì bạn đang tìm kiếm.

Plugin SCM Sync Configuration Hudson nhắm đến 2 tính năng chính:

  • Giữ đồng bộ hóa các tệp hudson cấu hình của bạn (và các nguồn tài nguyên khác) với kho lưu trữ SCM
  • Theo dõi các thay đổi (và tác giả) được thực hiện trên mỗi tệp có thông điệp cam kết

Tôi chưa thực sự thử điều này, nhưng nó có vẻ đầy hứa hẹn.


3
Tôi quan tâm đến cấu hình hoạt động của trình cắm Cấu hình đồng bộ SCM với Git, tôi đã thử một số cấu hình và đơn giản là tôi không thể làm cho nó hoạt động được (và thông báo lỗi trong nhật ký là không hữu ích nhất).
Sebastiano Pilla

8

Bạn có thể tìm thấy các tệp cấu hình trong thư mục nhà Jenkins (ví dụ /var/lib/jenkins).

Để giữ chúng trong VCS, trước tiên hãy đăng nhập với tên Jenkins ( sudo su - jenkins) và tạo thông tin đăng nhập git của nó:

git config --global user.name "Jenkins"
git config --global user.email "jenkins@example.com"

Sau đó khởi tạo, thêm và cam kết các tệp cơ bản như:

git init
git add config.xml jobs/ .gitconfig
git commit -m'Adds Jenkins config files' -a

cũng xem xét việc tạo .gitignorevới các tệp sau để bỏ qua (tùy chỉnh khi cần):

# Git untracked files to ignore.

# Cache.
.cache/

# Fingerprint records.
fingerprints/

# Working directories.
workspace/

# Secret files.
secrets/
secret.*
*.enc
*.key
users/
id_rsa

# Plugins.
plugins/

# State files.
*.state

# Job state files.
builds/
lastStable
lastSuccessful
nextBuildNumber

# Updates.
updates/

# Hidden files.
.*
# Except git config files.
!.git*
!.ssh/

# User content.
userContent/

# Log files.
logs/
*.log

# Miscellaneous litter
*.tmp
*.old
*.bak
*.jar
*.json
*.lastExecVersion

Sau đó thêm nó : git add .gitignore.

Khi hoàn tất, bạn có thể thêm các tệp cấu hình công việc, vd

shopt -s globstar
git add **/config.xml
git commit -m'Added job config files' -a

Cuối cùng thêm và cam kết bất kỳ tệp nào khác nếu cần, sau đó đẩy nó vào kho lưu trữ từ xa nơi bạn muốn giữ các tệp cấu hình.


Khi các tệp Jenkins được cập nhật, bạn cần tải lại chúng ( Tải lại cấu hình từ đĩa ) hoặc chạy reload-configurationtừ Jenkins CLI.


Tại sao các cấu hình trên toàn trang web bị loại trừ? Tôi thấy rằng các câu trả lời khác bao gồm chúng.
Vincent Beltman

@kenorb Tôi sẽ loại trừ nó một lần nữa. Một dòng bình luận ở trên *.xmlkhông thay đổi quy tắc và git bỏ qua tất cả các tệp xml bao gồm config.xmltừ jobsthư mục, sau đó git statusâm thầm bỏ qua bất kỳ dự án mới nào .
Mikolasan

5

Cách tôi thích là loại trừ mọi thứ trong thư mục nhà Jenkins ngoại trừ các tệp cấu hình bạn thực sự muốn có trong VCS của mình. Đây là .gitignoretập tin tôi sử dụng:

*
!.gitignore
!/jobs/*/*.xml
!/*.xml
!/users/*/config.xml
!*/

Điều này bỏ qua mọi thứ ( *) ngoại trừ ( !) .gitignore, công việc / dự án, plugin và các tệp cấu hình người dùng và quan trọng khác.

Nó cũng đáng xem xét để bao gồm các pluginsthư mục. Các plugin được cập nhật gây phiền nhiễu nên được đưa vào ...

Về cơ bản giải pháp này giúp cập nhật Jenkins / Hudson trong tương lai dễ dàng hơn vì các tệp mới không tự động trong phạm vi. Bạn chỉ cần có được trên screeen những gì bạn thực sự muốn.


5

Chính xác hơn .gitignore, lấy cảm hứng từ câu trả lời từ nepa :

*
!.gitignore
!/jobs/
!/jobs/*/
/jobs/*/*
!/jobs/*/config.xml
!/users/
!/users/*/
/users/*/*
!/users/*/config.xml
!/*.xml

Nó bỏ qua mọi thứ trừ .xmlcác tập tin cấu hình và .gitignorechính nó. (chênh lệch đến NEPA 's .gitignorelà nó không 'unignore' tất cả các thư mục cấp cao nhất ( !*/) như logs/, cache/, vv)


2

Trả lời từ Mark ( https://stackoverflow.com/a/4066654/142207 ) nên hoạt động cho SVN và Git (mặc dù cấu hình Git không hoạt động với tôi).

Nhưng nếu bạn cần nó để làm việc với Mercurial repo, hãy tạo một công việc với tập lệnh sau:

hg remove -A || true
hg add ../../config.xml
hg add ../../*/config.xml
if [ ! -z "`hg status -admrn`" ]; then
    hg commit -m "Scheduled commit" -u fill_in_the@blank.com
    hg push
fi

2

Tôi đã viết một plugin cho phép bạn kiểm tra hướng dẫn Jenkins của mình vào kiểm soát nguồn. Chỉ cần thêm một .jenkins.ymltập tin với nội dung:

script:
    - make
    - make test

và Jenkins sẽ làm điều đó:

nhập mô tả hình ảnh ở đây


0

Tôi đã kiểm tra toàn bộ hudson, bạn có thể sử dụng điểm này làm điểm bắt đầu https://github.com/morkeleb/continupt-delivery-with-hudson

Có những lợi ích để giữ toàn bộ hudson trong git. Tất cả các thay đổi cấu hình được ghi lại và bạn có thể kiểm tra thử nghiệm khá dễ dàng trên một máy và sau đó cập nhật (các) máy khác bằng cách sử dụng git pull.

Chúng tôi đã sử dụng điều này như một bản tóm tắt cho thiết lập phân phối liên tục hudson của chúng tôi tại nơi làm việc.

Trân trọng Morten

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.