في الآونة الأخيرة ، طلب القادة من المشاريع المحلية في شنغهاي استخدام جنكينز لتحقيق النشر الآلي بحيث يمكن تسليم المشاريع إلى طلاب التشغيل والصيانة لتقليل عبء العمل في التطوير. سجل عملية تسلق هذه الحفرة.
1. مقدمة
Jenkins هي أداة تكامل مستمرة تم تطويرها على أساس Java لمراقبة العمل المتكرر المستمر ، وتشمل وظائفها:
1. مشاريع إصدار/اختبار إصدار البرنامج المستمر.
2. مراقبة العمل الذي تم تنفيذه بواسطة المكالمات الخارجية.
لقد قمت بتنزيل ما سبق من الموسوعة. لأكون صادقًا ، لم أفهم ذلك. ما هذا؟ في الواقع ، بناءً على فهمي وتطبيقي الحالي ، فإن الشيء الأكثر شيوعًا هو النشر. يجب دراسة الوظائف الأخرى (_) ، ويعمل السيد حاليًا في مؤسسة غير معروفة مملوكة للدولة في شنغهاي. عملية إصدار المشروع الحالية هي:
1. يستخدم الخادم المحلي أو المعبأ Maven لعمل حزمة حرب
2. الاتصال بخادم المشروع عن بعد أو SSH
3. أوقف Tomcat ، وحذف الحزمة القديمة وذاكرة التخزين المؤقت ، ووضع الحزمة المطبوعة حديثًا في
4. إعادة تشغيل Tomcat. الخطوات البسيطة على ما يبدو لإكمالها ، لكنها في الواقع تستغرق الكثير من وقت التطوير.
ثم استخدم جنكينز:
1. انقر للبناء الآن وأكمل. ماذا؟ فقط انقر فوق زر ويتم ذلك. نعم ، إنه زر. في الواقع ، بعد النقر فوق الزر ، ساعدك Jenkins على تشغيل خلفية العملية أعلاه. هذه المرة ، سأقدم كيفية جعلها تعمل في الخلفية.
2. التثبيت والبناء
تعتمد هذه المقدمة على Windows ، والتي يمكن تثبيتها على جهاز كمبيوتر تطوير أو خادم Windows Server
1. تحميل جينكينز
يوفر Jenkins طرق تثبيت متعددة
1.1 jenkins.msi تثبيت مثل عندما نقوم عادة بتثبيت البرامج والنقاط. عنوان التنزيل: https://jenkins.io/download/
1.2Jenkins.War Package نظرًا لأنها حزمة حرب ، فمن دون أن يقول أن الجميع يعرف كيفية بدءها ، فقط رميها في Tomcat. تنزيل عنوان: http://updates.jenkins-ci.org/download/war/
2. ابدأ جنكينز
أنا شخصياً أوصي طريقة التثبيت 1.1. غالبًا ما أواجه مشاكل في التدفق في الذاكرة عند استخدام 1.2. بالطبع ، يمكن ضبط تدفق الذاكرة ، ولكن هناك عبء عمل إضافي.
باستخدام طريقة التثبيت 1.1 ، بعد اكتمال التثبيت ، سنرى خدمة Jenkins في خدمة Windows. كما هو موضح في الشكل أدناه ، ما عليك سوى بدء الخدمة وإغلاقها وإعادة تشغيل الخدمة مباشرة.
إذا كنت تستخدم 1.2 لتنزيل حزمة الحرب ، فهناك بالفعل طريقتان لبدءها.
يتم وضع النوع الأول في حاوية Tomcat.
النوع الثاني هو إدخال CMD في دليل التثبيت ، Java -Jar Jenkins.War
3. تثبيت جنكينز
طريقة التثبيت 1.1 و 1.2 هي نفسها
يمكن تعديل المنفذ الافتراضي Jenkins 8080 ، طريقة Baidu.
أدخل http: // localhost: 8080/. يحتوي مسار الخط الأحمر على كلمة مرور ، وملء كلمة المرور ، ثم الخطوة التالية.
عند اختيار المكون الإضافي ، يوصى باختيار المكون الإضافي الموصى به الرسمي لتجنب الكثير من المتاعب.
في انتظار التثبيت ...
بعد التثبيت ، سترى الصورة أدناه. يتم استخدام اسم المستخدم وكلمة المرور لتسجيل الدخول. يتم استخدام الاسم الكامل لعرضه. تابع إلى الخطوة التالية.
لأنني أرغب في نشر مشروع Maven ، لا يوجد Maven في البرنامج المساعد الافتراضي لجينكينز ، لذلك أحتاج إلى تثبيته أولاً.
انقر فوق المكون الإضافي أدناه لتثبيته مباشرة ، مكونات تكامل Maven
قم بتثبيت البرنامج المساعد الساخن للنشر إلى المكون الإضافي للحاويات
4. تكوين جنكينز
نحتاج إلى مطابقة ملف إعداد Maven وعنوان JDK و Maven. يجب مطابقة ملف الإعداد. لا تستخدمه على أنه افتراضي. لأن هذا غير متطابق ، كنت تكافح لفترة طويلة.
أخيرًا ، فقط قم بتطبيق وحفظ. تذكر ألا تنسى حفظ التطبيق ، وإلا فإنه سيكون عبثا.
بعد ذلك ، سنقوم بإنشاء مشروع جديد ، أولاً أدخل اسم المشروع ، حدد مشروع Maven ، حسنًا
حدد إدارة التعليمات البرمجية المصدر ، لأننا مشروع مؤسسة ، وليس مفتوح المصدر ، استخدم SVN ، واختر Subversion لتكوين SVN
عنوان URL هو عنوان SVN الخاص بك ، وبيانات الاعتماد هي كلمة مرور الحساب
ثم انتقل إلى خطوات ما قبل ، هذا الشيء هو ما هو مطلوب من العمليات قبل التعبئة. على سبيل المثال ، يحتاج مشروعنا الحالي إلى نسخ ملف log4j.xml ، وما إلى ذلك. يمكنك كتابة Windows أو Shell Scripts وفقًا للبيئة
إذا لم تكن هناك عملية ، فليس هناك حاجة لمطابقتها.
انشر البرنامج النصي الخاص بي للرجوع إليه. سأستخدم xxx لاستبدال الأجزاء ذات الصلة.
echo offrem set متغير :: app.xxx app.xxx code محلي ومجموعة الدليل set app.xxx = "d: /svn/svn.173.xxx/app.xxx/" :: home.ommm's log4j.xml fariable start :: hom home_omm_log4j_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/home.ommm/src/main/resources home_omm_log4j = "d: /svn/svn.173.xxx/app.xxx/config/home.ommm/sh_test/resources" :: home.ommm's log4j.xml end end: log4j.xml home_weixin_log4j_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/home.weixin/src/main/resources" :: home_weixin_log4j مسار log4j.xml test eversion of home.weixin " home_weixin_log4j = "d: /svn/svn.173.xxx/app.xxx/config/home.weixin/sh_test/resources" :: home_weixin_config.js_goals_path config.js path home_weixin_config.js_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/home.weixin/src/main/webapp/module/JS home_weixin_config.js = "d: /svn/svn.173.xxx/app.xxx/config/home.weixin/sh_test/webapp/module/js" :: home.weixin end :: service variable start :: service_log4jals_path service_log4j_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/service/src/main/resources": service_log4j = "d: /svn/svn.173.xxx/app.xxx/config/service/sh_test/resources service_application_resources_all_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/service/src/main/resources/config/spring" :: service_application_resources-alres-resources-all.xml test path path path service_application_resources_all = "d: /svn/svn.173.xxx/app.xxx/config/service/sh_test/resources/config/spring" :: service end end :: service.refresh ariable start :: service_log4j_goals_path service_refresh_log4j_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/service.refresh/src/main/resources service_refresh_log4j = "d: /svn/svn.173.xxx/app.xxx/config/service.refresh/sh_test/resourcs service_refresh_application_resources_all_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/service.refresh/src/main/resources/config/spring" :: Service_Refresh_application_resources- arreces-all service_refresh_application_resources_all = "d: /svn/svn.173.xxx/app.xxx/config/service.refresh/sh_test/resources/config/spring" :: service.refresh end: ٪ home_omm_log4j_goals_path ٪/log4j.xml (del ٪ home_omm_log4j_goals_path ٪/log4j.xml) cd ٪ home_omm_log4j_goals_path ٪ نسخ ٪ home_omm_log4j ٪/log4j.xml log4j.xml: ٪ home_weixin_log4j_goals_path ٪/log4j.xml (del ٪ home_weixin_log4j_goals_path ٪/log4j.xml) cd ٪ home_weixin_log4j_goals_path ٪/log4j.xml ٪ home_weixin_log4j ٪/log4j.xml log4j.xml: ٪ home_weixin_config.js_goals_path ٪ نسخ ٪ home_weixin_config.js ٪/config.js التكوين. ٪ service_log4j_goals_path ٪ copy ٪ service_log4j ٪/log4j.xml log4j.xml :: الحكم على ما إذا كان ملف تطبيق الخدمة-all.xml موجود إذا كان موجودًا ٪ service_application_resources_all_goals_path ٪/application-resources-all.xml (del.xml ٪ service_application_resources_all_goals_path ٪/application-resources-all.xml) cd ٪ service_application_resources_all_goals_path ٪ copy ٪ service_application_resources_all ٪/application-resources-all.xml application-all.xml: ٪ service_refresh_log4j_goals_path ٪/log4j.xml (del ٪ service_refresh_log4j_goals_path ٪/log4j.xml) cd service.refresh موجود إذا كان موجودًا ٪ service_refresh_application_resources_all_goals_path ٪/applick-resources-all.xml (del ٪ service_refresh_application_resources_all_goals_path ٪/application-resources-all.xml) cd ٪ service_refresh_application_dreces_aled_goats-rons. ٪ service_refresh_application_resources_all_goals_path ٪ نسخ ٪ service_refresh_application_resources_all ٪/application-resources-all.xml application-resources-all.xmlexit
تم تجميع Build ، وتحديد موقع POM وأمر MVN. بالمناسبة ، يمكنك أيضًا تكوين مساحة العمل في المستوى المتقدم ، والذي لا يتطابق مع الافتراضي في دليل تثبيت Jenkins.
بعد البناء ، تكون العملية هي المكان الذي يتم وضعه فيه بعد اكتمال الحزمة. حدد الصورة التالية
بعد عملية البناء هذه ، نستخدم النشر الساخن لـ Tomcat. يمكنك الرجوع إلى مقالتي السابقة: النشر الساخن لـ Tomcat
الحرب/الأذن: عنوان حزمة الحرب
السياق: هو اسم الحزمة المنتشرة
يشير اسم المستخدم/كلمة المرور إلى الحساب/كلمة المرور للنشر الساخن tomcat
عنوان URL: واجهة Tomcat ، مثل: http://172.16.101.71:8180/
5. ابدأ في البناء
بعد التحدث كثيرًا ، حان الوقت أخيرًا. لقد وصل تشغيل زر أحد. يمكنك رؤية مشروعنا عندما تعود إلى الصفحة الرئيسية لجينكينز.
بعد البناء ، انقر على حالة تنفيذ الإنشاء في الزاوية السفلية اليسرى لترى أن مشروعنا قيد الإنشاء. انقر على اسم المشروع للدخول
حدد وحدة التحكم للاطلاع على السجل أو رسالة الخطأ المطبوعة أثناء عملية البناء.
3. المشاكل الحالية
قضية دور جنكينز ، منذ إصدارها ، تتضمن بيئة الإنتاج. لا يمكن لجميع المستخدمين الحصول على إذن لنشر بيئة الإنتاج. إذا كان أي شخص ينقر بطريق الخطأ. العواقب ... لا تصدق ذلك.
الحل: قم بتثبيت المكون الإضافي لإرشادات التخلص من الدور ، راجع الخطوات المتبقية: http://www.cnblogs.com/zz0412/p/jenkins_jj_14.html. أنا لست مفصلاً.
مشكلة النشر الساخن Tomcat ، وارتفاع الذاكرة وتغلب عليها بعد النشر عدة مرات ، توقف عن تشغيل أو الإبلاغ عن خطأ. لقد راجعت مشكلة النشر الساخن نفسه عبر الإنترنت ، وأنا أبحث عن حل ...
الحل: هناك مشاكل في النشر الساخن Tomcat نفسه ، ولا تعتمد بيئة الإنتاج عمومًا طريقة النشر الساخنة. حاليًا ، نظرًا لأن بيئة الاختبار تستخدم نظام Windows Server 2008 ، فإنها تعتمد طريقة النشر الساخن. المشكلة لا تزال موجودة. ومع ذلك ، فقد قرأت منشورًا أنه يمكن حله باستخدام أمر Windows Batch ، وهو أمر BAT ، لكنني لم أدرسه بعمق. في نظام Linux في بيئة الإنتاج ، أستخدم حاليًا النشر عبر المكون الإضافي SSH. الخطوات المحددة هي إضافة الخطوات أدناه إلى التكوين.
1. في إدارة النظام-إعدادات النظام ، ابحث عن النشر فوق SSH وأدخل:
2. تكوين خطوات النشر
هنا سوف نستمر في المشروع أعلاه. سيتم عرض هذا التكوين فقط بعد تثبيت المكون الإضافي أعلاه!
نقل ملفات SetSource: يشير إلى حزمة الحرب المحلية ومسار التحميل ، يمكنك الانتقال إلى مساحة العمل لعرضها.
إزالة البادئة: تعني أن يتم إزالة المجلد عند التحميل ، أي فقط يتم تحميل حزمة الحرب
الحفر عن بعد: يعني المسار أثناء التنفيذ ، وهو ما يعادل تحميل حزمة الحرب هنا
Commad Exec: يتم تنفيذ الأمر
كما هو موضح في الشكل ، سيتم وضع حزمة الحرب في مجلد المنزل/المسؤول ، وبعد ذلك سأقوم بتنفيذ أمر shell الذي كتبته. يتضمن ذلك أساسًا إيقاف Tomcat ، ودعم حزمة الحرب الأصلية ، وحذف حزمة الحرب الأصلية تحت WebApp ، ونسخ حزمة الحرب الجديدة تحت المنزل/المشرف ، وبدء Tomcat ، ثم يتم ذلك. هذا يتجنب مشكلة تعطل الخادم الناجم عن تدفق ذاكرة النشر الساخن.
مرجع السيناريو:
#!/bin/sh #defined tomcat_home = "/usr/java/tomcat/apache-tomcat-7.0.67/" id = `ps -ef | جريب جافا | Grep Tomcat | awk '{print $ 2}' `echo $ id echo" kill tomcat "kill -9 $ id echo file" cd "cd" $ tomcat_home "/webapps rm -rf javaweb-0.0.1-snapshot rm -rf javaweb-0.0.1-snapshot.war cp javaweb-0.0.1-snapshot.war "$ tomcat_home"/webapps cd "$ tomcat_home"/bin echo "start tomcat ./startup.shتم استخدام مشكلة البرنامج الإضافي لـ Deploy ، وهو المكون الإضافي الناشر إلى الحاوية المستخدمة أعلاه لتنفيذ النشر الساخن ، ولكن حدود البرنامج المساعد الذي لا يمكن لمشروع واحد فقط نشر حزمة حرب واحدة. مشروعي هو أنه لا يمكن بناء حربين مفصولين عن الأطراف الأمامية والخلفية للمشروع مرتين ،  ̄へ ̄.
الحل: حاول عدم استخدام النشر الساخن. إذا تم استخدام بيئة الاختبار مؤقتًا ، فأنا أقوم حاليًا ببناء مشروعين جديدين وتجميع حزمة حرب واحدة فقط في وقت واحد.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.