Hudson / Jenkins yapılandırma dosyalarını kaynak kontrolünde tutmanın bir yolu var mı?


140

Hudson / Jenkins için yeniyim ve Hudson'ın yapılandırma dosyalarını kaynak kontrolü için kontrol etmenin bir yolu olup olmadığını merak ediyordum.

İdeal olarak, kullanıcı arayüzünde 'yapılandırmayı kaydet' yazan ve Hudson yapılandırma dosyalarını kaynak kontrolüne teslim eden bir düğmeye tıklamak istiyorum.


Veya bu bilgileri istek üzerine bir Git deposunda saklayabilirsiniz: aşağıdaki cevabımı görün
VonC


Kontrol edin: HUDSON_HOME dizini Jenkins dosyalarının yapısı için.
kenorb

Yanıtlar:


62

En faydalı cevap

SCM Sync yapılandırma eklentisi adı verilen bir eklenti var .


Orijinal Yanıt

Benzer bir soruya verdiğim cevaba bir bakın . Temel fikir xml dosyalarındaki değişiklikleri tespit etmek için filesystem-scm-plugin kullanmaktır. İkinci bölümünüz SVN'deki değişiklikleri yapmak olacaktır.

EDIT: Bir değişiklik için kullanıcıyı belirlemek için bir yol bulursanız, bize bildirin.

EDIT 2011-01-10 Bu arada yeni bir eklenti var: SCM Sync yapılandırma eklentisi . Şu anda sadece alt sürüm ve git ile çalışıyor, ancak daha fazla depo desteği planlanıyor. 0.0.3 sürümünden beri kullanıyorum ve şimdiye kadar iyi çalıştı.


2
Farklı olmaya yalvarıyorum: git'i kullanır ve karmaşık bir ortamda çalıştırırsanız eklentinin bazı büyük zayıflıkları vardır: 'Git'i kullanırsanız, varsayılan adla SSH anahtarını kullanmalısınız. "İd_rsa". SCM Sync'in ssh anahtar yolunu belirtme seçeneği yoktur. SCM Sync, jenkins işlem sahibinin ana dizininden .ssh / id_rsa kullanır. ' [dan wiki.jenkins-ci.org/display/JENKINS/...
Ben Hutchison

2
SCM Sync Yapılandırma eklentisi Subversion eklentisi> = 2.0 ile uyumlu değildir (her sayı için . Jenkins-ci.org/browse/JENKINS-21640 ).
Nick Jones

1
Bu eklentiyi kullanmanızı tavsiye etmeyeceğim, kurulum sonrası jenkinler gelmedi. Bu eklentide çok fazla hata var gibi görünüyor ve çok sık yükseltme / düzeltmeler almıyor. "SCM Sync yapılandırma eklentisi" kullanmaktan kaçının
Vikramvi

1
@vikramvi, önerdiğiniz alternatif nedir?
Igor Rodriguez

1
@IgorRodriguez Cenkins işi, proje koduna kıyasla sık değişikliklere uğramadığından; Github'a elle değişiklikler yapıyorum.
Vikramvi

38

Vogella'nın son zamanlarda (OP'nin Ocak 2010 sorusuyla karşılaştırıldığında Ocak 2014) ve bunun farklı bir şekilde ele alındığını unutmayın.
Düşünün SCM Sync yapılandırma eklentisi üretebilir bir sürü kaydedilmesini.
Bu nedenle, bir eklentiye ve otomatik bir sürece güvenmek yerine, aynı özelliği manuel olarak yönetir:

Jenkins'in Job bilgilerinin Git'te saklanması

Taahhüt miktarını biraz ezici buldum, bu yüzden taahhütleri manuel olarak kontrol etmeye ve Jenkins yapılandırmasını değil sadece İş bilgilerini kaydetmeye karar verdim.
Bunun için Jenkins işleri dizinine (Ubuntu:) geçin /var/lib/jenkins/jobsve “ git init” komutunu uygulayın.

.gitignoreYalnızca Git işleri bilgilerini depolamak için aşağıdaki dosyayı oluşturdum :

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

Artık değişiklikleri kendi isteğinize göre ekleyebilir ve uygulayabilirsiniz.
Git deponuza başka bir uzaktan kumanda eklerseniz, yapılandırmanızı başka bir sunucuya aktarabilirsiniz.

Alberto aslında eklemeyi de önerir (in $JENKINS_HOME):

  • jenkins kendi yapılandırma ( config.xml),
  • jenkins eklentileri configs ( hudson*.xml) ve
  • kullanıcılar config ( users/*/config.xml)

Kullanıcı yapılandırmalarını depolamak, düz metin API belirteçlerini kendi dosyalarında göstermez config.xmlmi?
Boon

@Boon Yakın zamanda API jetonu kullanmak zorunda olmadığım için aslında bilmiyorum. Sormanız kendi başına iyi bir soru olabilir.
VonC

2
Bazı araştırmalardan sonra, API belirteçlerinin XML'de şifrelenmiş olduğu ortaya çıkar, bu nedenle bu bir güvenlik riski oluşturmaz.
Boon

19

Git ile yapılandırmanızı manuel olarak yönetmek için aşağıdaki .gitignore dosyası yardımcı olabilir.

# 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

Daha fazla ayrıntı için bu GitHub Gist ve bu blog gönderisine bakın.


14

Tam olarak aradığınızı yapan yeni bir SCM Sync Yapılandırma eklentisi var .

SCM Sync Yapılandırması Hudson eklentisi 2 ana özelliği hedeflemektedir:

  • Config.xml (ve diğer kaynaklar) hudson dosyalarınızı bir SCM havuzuyla senkronize edin
  • Her dosyada taahhüt mesajları ile yapılan değişiklikleri (ve yazarı) izleyin

Bunu henüz denemedim, ama umut verici görünüyor.


3
Git ile SCM Sync Yapılandırma eklentisinin çalışan bir yapılandırmasıyla ilgilenirim, birkaç yapılandırma denedim ve sadece çalıştıramadım (ve günlüklerdeki hata mesajları en iyi ihtimalle yararsızdı).
Sebastiano Pilla

8

Yapılandırma dosyalarını Jenkins ana klasöründe bulabilirsiniz (örn. /var/lib/jenkins).

Bunları VCS'de tutmak için önce Jenkins ( sudo su - jenkins) olarak giriş yapın ve git kimlik bilgilerini oluşturun:

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

Ardından aşağıdaki gibi temel dosyaları başlatın, ekleyin ve uygulayın:

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

ayrıca .gitignoreyoksaymak için aşağıdaki dosyalarla oluşturmayı düşünün (gerekirse özelleştirin):

# 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

Sonra ekleyin: git add .gitignore.

İşiniz bittiğinde, örneğin, iş yapılandırma dosyaları ekleyebilirsiniz.

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

Son olarak, gerekirse diğer dosyaları ekleyin ve uygulayın, ardından yapılandırma dosyalarını saklamak istediğiniz uzak depoya itin.


Jenkins dosyaları güncellendiğinde, dosyaları yeniden yüklemeniz ( Yapılandırmayı Diskten Yeniden Yükle ) veya reload-configurationJenkins CLI'den çalıştırmanız gerekir .


Site genelindeki yapılandırmalar neden hariç tutuluyor? Görüyorum ki diğer cevaplar da bunları içeriyor.
Vincent Beltman

@ kenorb Tekrar hariç tutacağım. Bir yorum satırı yukarıdaki *.xmlkuralı değişmez ve git görmezden tüm dahil xml dosyalarını config.xmlgelen jobs, dizindeki git statusbunun üzerine sessizce göz ardı eder yeni bir proje.
Mikolasan

5

Tercih ettiğim yol, VCS'nizde olmasını istediğiniz yapılandırma dosyaları dışında Jenkins giriş klasöründeki her şeyi hariç tutmaktır. İşte .gitignorekullandığım dosya:

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

Bu yoksaydıklarınız herşey ( *(hariç) !) .gitignorekendisi işler / projeler eklenti ve diğer önemli ve kullanıcı yapılandırma dosyaları.

pluginsKlasörü de eklemeyi düşünmeye değer . Can sıkıcı güncellenen eklentiler dahil edilmelidir ...

Temelde bu çözüm gelecekteki Jenkins / Hudson güncellemelerini kolaylaştırır çünkü yeni dosyalar otomatik olarak kapsamda değildir. Sen sadece ne istiyorsan screeen olsun.


5

Nepal'den.gitignore gelen cevaptan esinlenerek daha doğru :

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

.xmlYapılandırma dosyaları ve .gitignorekendisi hariç her şeyi yok sayar . (farkı nepa 's .gitignoreo 'gözardı edilen' tüm üst düzey dizinleri (değil yapmasıdır !*/) gibi logs/, cache/vs.)


2

Mark'ın cevabı ( https://stackoverflow.com/a/4066654/142207 ) SVN ve Git için çalışmalıdır (Git yapılandırması benim için işe yaramasa da).

Ancak Mercurial repo ile çalışması için aşağıdaki komut dosyasıyla bir iş oluşturun:

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

Ben ettik bir eklenti yazılı kaynak denetimi içine Jenkins talimatları kontrol etmenizi sağlar. Sadece .jenkins.ymliçindekileri içeren bir dosya ekleyin :

script:
    - make
    - make test

ve Jenkins bunu yapacak:

resim açıklamasını buraya girin


0

Hudson'ı tamamen kontrol ettim, bunu bir başlangıç ​​noktası olarak kullanabilirsiniz https://github.com/morkeleb/continuous-delivery-with-hudson

Tüm Hudson'ı git'te tutmanın faydaları vardır. Tüm yapılandırma değişiklikleri günlüğe kaydedilir ve testi bir makinede kolayca test edebilir ve ardından git pull kullanarak diğer makineleri güncelleyebilirsiniz.

İşyerinde hudson sürekli teslimat kurulumumuz için bir ocak plakası olarak kullandık.

Saygılarımızla Morten

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.