هل هناك طريقة للحفاظ على ملفات تكوين Hudson / Jenkins في عنصر تحكم المصدر؟

StackOverflow https://stackoverflow.com/questions/2087142

سؤال

أنا جديد على Hudson / Jenkins وكنت أتساءل عما إذا كانت هناك طريقة للتحقق من ملفات تكوين Hudson لمصدر التحكم.

من الناحية المثالية ، أريد أن أكون قادرًا على النقر فوق زر في واجهة المستخدم التي تقول "حفظ التكوين" وتحقيق ملفات تكوين Hudson إلى عنصر تحكم المصدر.

هل كانت مفيدة؟

المحلول

الجواب الأكثر فائدة

هناك مكون إضافي يسمى البرنامج المساعد تكوين SCM Sync.


الإجابة الأصلية

القي نظرة على إجابتي لسؤال مماثل. الفكرة الأساسية هي استخدام نظام الملفات-SCM-Plugin للكشف عن التغييرات على ملفات XML. الجزء الثاني سيكون ارتكاب التغييرات في SVN.

تعديل: إذا وجدت طريقة لتحديد المستخدم للتغيير ، فأخبرنا بذلك.

تحرير 2011-01-10 وفي الوقت نفسه ، يوجد مكون إضافي جديد: البرنامج المساعد تكوين SCM Sync. حاليًا يعمل فقط مع Subversion و Git ، ولكن من المخطط دعم لمزيد من المستودعات. أنا أستخدمه منذ الإصدار 0.0.3 وعمل بشكل جيد حتى الآن.

نصائح أخرى

لاحظ أن Vogella لديها حديث (يناير 2014 ، مقارنة بسؤال OP يناير 2010) ويختلف عن هذا.
النظر في أن البرنامج المساعد تكوين SCM Sync يمكن أن تولد كثيرا من يرتكب.
لذا ، بدلاً من الاعتماد على البرنامج المساعد وعملية آلية ، يدير نفس الميزة يدويًا:

تخزين معلومات الوظيفة من جنكينز في جيت

لقد وجدت مقدار الالتزامات الساحقة بعض الشيء ، لذلك قررت التحكم في الالتزامات يدويًا وحفظ معلومات الوظيفة فقط وليس تكوين Jenkins.
لهذا التحول إلى دليل Jenkins Jobs الخاص بك (Ubuntu: /var/lib/jenkins/jobs) وأداء ""git init" أمر.

لقد قمت بإنشاء ما يلي .gitignore ملف لتخزين معلومات الوظائف git فقط:

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

الآن يمكنك إضافة وارتكاب تغييرات في إرادتك.
وإذا قمت بإضافة جهاز تحكم عن بعد آخر إلى مستودع GIT الخاص بك ، فيمكنك الضغط على تكوينك إلى خادم آخر.

ألبرتو أوصي بالفعل بإضافة كذلك (في $JENKINS_HOME):

  • تكوين جنكينز (config.xml),
  • تكوين الإضافات Jenkins (hudson*.xml) و
  • يتكوين المستخدمين (users/*/config.xml)

لإدارة التكوين يدويًا باستخدام GIT ، قد يكون ملف .gitignore التالي مفيدًا.

# 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

يرى هذا github gist و منشور المدونة هذا لمزيد من التفاصيل.

هناك جديد المكون الإضافي تكوين SCM Sync وهو ما تفعله بالضبط ما تبحث عنه.

يهدف المكوّن الإضافي لـ SCM Sync إلى 2 ميزات رئيسية:

  • حافظ على مزامنة ملفات config.xml (وغيرها من ressources) ملفات Hudson مع مستودع SCM
  • تتبع التغييرات (والمؤلف) التي تم إجراؤها على كل ملف مع رسائل الالتزام

لم أجرب هذا بالفعل بعد ، لكنه يبدو واعداً.

يمكنك العثور على ملفات التكوين في مجلد جينكينز الرئيسية (على سبيل المثال /var/lib/jenkins).

للحفاظ عليها في VCs ، قم بتسجيل الدخول أولاً كجنينز (sudo su - jenkins) وإنشاء بيانات اعتماد GIT الخاصة بها:

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

ثم تهيئة وإضافة وارتكاب الملفات الأساسية مثل:

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

النظر أيضا في خلق .gitignore مع الملفات التالية لتجاهلها (التخصيص حسب الحاجة):

# 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

ثم أضفه: git add .gitignore.

عند الانتهاء ، يمكنك إضافة ملفات تكوين الوظائف ، على سبيل المثال

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

أخيرًا ، أضف وارتكاب أي ملفات أخرى إذا لزم الأمر ، ثم ادفعها إلى المستودع البعيد حيث تريد الاحتفاظ بملفات التكوين.


عندما يتم تحديث ملفات Jenkins ، تحتاج إلى إعادة تحميلها (تكوين إعادة تحميل من القرص) أو تشغيل reload-configuration من جنكينز كلي.

الطريقة التي أفضلها هي استبعاد كل شيء في مجلد Jenkins Home إلا ملفات التكوين التي تريدها حقًا في VCS. ها هو .gitignore الملف الذي أستخدمه:

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

هذا يتجاهل كل شيء (*) إلا (!) .gitignore نفسها ، الوظائف/المشاريع ، المكون الإضافي وغيرها من ملفات تكوين المستخدم.

يجدر أيضًا النظر في تضمين plugins مجلد. يجب تضمين الإضافات المحدثة بشكل مزعج ...

في الأساس ، يجعل هذا الحل أسهل على تحديثات Jenkins/Hudson المستقبلية لأن الملفات الجديدة ليست في نطاق تلقائي. يمكنك فقط الحصول على لقطة ما تريده حقًا.

أكثر دقة .gitignore, مستوحى من الرد من NEPA:

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

يتجاهل كل شيء باستثناء .xml ملفات التكوين و .gitignore بحد ذاتها. (الفرق NEPA.gitignore هل أنها لا "غير موقعة" جميع الدلائل ذات المستوى الأعلى (!*/) مثل logs/, cache/, ، إلخ.)

الجواب من مارك (https://stackoverflow.com/a/4066654/142207) يجب أن تعمل مع SVN و GIT (على الرغم من أن تكوين GIT لم ينجح بالنسبة لي).

ولكن إذا كنت بحاجة إلى العمل مع Mercurial Repo ، فقم بإنشاء وظيفة مع البرنامج النصي التالي:

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

لقد قمت كتب البرنامج المساعد يتيح لك ذلك التحقق من تعليمات Jenkins الخاصة بك في التحكم في المصدر. فقط أضف أ .jenkins.yml ملف مع المحتويات:

script:
    - make
    - make test

وسيقوم جنكينز بذلك:

enter image description here

لقد راجعت هدسون تمامًا ، يمكنك استخدام هذا كنقطة انطلاق https://github.com/morkeleb/continuous-delivery-with-hudson

هناك فوائد للحفاظ على هدسون بأكمله في غيت. يتم تسجيل جميع تغييرات التكوين ويمكنك اختبار testup بسهولة تامة على جهاز واحد ثم تحديث الجهاز (الجهاز) الآخر باستخدام GIT سحب.

استخدمنا هذا كخليفي من أجل إعداد تسليم Hudson المستمر في العمل.

تحياتي مورتن

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top