Baru -baru ini, para pemimpin telah meminta proyek -proyek lokal di Shanghai untuk menggunakan Jenkins untuk mencapai penyebaran otomatis sehingga proyek dapat diserahkan kepada siswa operasi dan pemeliharaan untuk mengurangi beban kerja pengembangan. Catat proses mendaki lubang ini.
1. Pendahuluan
Jenkins adalah alat integrasi kontinu yang dikembangkan berdasarkan Java untuk memantau pekerjaan berulang yang berkelanjutan, dan fungsinya meliputi:
1. Proyek Rilis/Pengujian Versi Perangkat Lunak Berkelanjutan.
2. Pantau pekerjaan yang dijalankan dengan panggilan eksternal.
Saya mengunduh di atas dari ensiklopedia. Sejujurnya, saya tidak memahaminya. Apa ini? Bahkan, berdasarkan pemahaman dan aplikasi saya saat ini, hal yang paling umum adalah penyebaran. Fungsi lain harus dipelajari (_) master saat ini bekerja di perusahaan milik negara yang tidak dikenal di Shanghai. Proses rilis proyek saat ini adalah:
1. Server lokal atau kemasan menggunakan Maven untuk membuat paket perang
2. Sambungkan ke Server Proyek dari jarak jauh atau SSH
3. Hentikan Tomcat, hapus paket dan cache lama, dan masukkan paket yang baru dicetak
4. Restart Tomcat. Langkah -langkah yang tampaknya sederhana untuk diselesaikan, tetapi sebenarnya menghabiskan banyak waktu pengembangan.
Kemudian gunakan Jenkins:
1. Klik untuk membangun sekarang dan menyelesaikannya. Apa? Cukup klik tombol dan sudah selesai. Ya, itu tombol. Bahkan, setelah Anda mengklik tombol, Jenkins telah membantu Anda menjalankan latar belakang proses di atas. Kali ini, saya akan memperkenalkan cara membuatnya berjalan di latar belakang.
2. Instalasi dan Konstruksi
Pendahuluan ini didasarkan pada Windows, yang dapat diinstal pada komputer pengembangan atau server Windows Server
1. Unduh Jenkins
Jenkins menyediakan beberapa metode instalasi
Instalasi 1.1jenkins.msi sama seperti ketika kami biasanya menginstal perangkat lunak, titik. Alamat unduhan: https://jenkins.io/download/
1.2Jenkins. Paket WAR Karena itu adalah paket perang, tidak perlu dikatakan bahwa semua orang tahu bagaimana memulainya, lemparkan saja ke Tomcat. Alamat unduhan: http://updates.jenkins-ci.org/download/war/
2. Mulai Jenkins
Saya pribadi merekomendasikan metode instalasi 1.1. Saya sering menghadapi masalah meluap memori saat menggunakan 1.2. Tentu saja, overflow memori dapat disesuaikan, tetapi ada beban kerja tambahan.
Menggunakan metode instalasi 1.1, setelah instalasi selesai, kita akan melihat layanan Jenkins di layanan Windows. Seperti yang ditunjukkan pada gambar di bawah ini, mulailah dan tutup dan restart layanan secara langsung.
Jika Anda menggunakan 1.2 untuk mengunduh paket perang, sebenarnya ada dua cara untuk memulainya.
Tipe pertama ditempatkan di wadah Tomcat.
Tipe kedua adalah memasukkan CMD ke direktori instalasi, java -jar jenkins.war
3. Instal Jenkins
Metode instalasi 1.1 dan 1.2 adalah sama
Jenkins Default Port 8080, dapat dimodifikasi, metode Baidu.
Masukkan http: // localhost: 8080/. Jalur font merah memiliki kata sandi, isi kata sandi, lalu langkah selanjutnya.
Saat memilih plug-in, disarankan untuk memilih plug-in resmi yang disarankan untuk menghindari banyak masalah.
Menunggu instalasi ...
Setelah instalasi, Anda akan melihat gambar di bawah ini. Nama pengguna dan kata sandi digunakan untuk masuk. Nama lengkap digunakan untuk menampilkannya. Lanjutkan ke langkah berikutnya.
Karena saya ingin menggunakan proyek Maven, tidak ada Maven di plugin default Jenkins, jadi saya perlu menginstalnya terlebih dahulu.
Klik plugin di bawah ini untuk menginstalnya secara langsung, plugin Maven Integration
Instal Plugin Penyebaran Panas ke Plugin Kontainer
4. Konfigurasikan Jenkins
Kita perlu mencocokkan file pengaturan Maven, alamat JDK dan MAVEN. File pengaturan harus dicocokkan. Jangan menggunakannya sebagai default. Karena ini tidak cocok, Anda telah berjuang untuk waktu yang lama.
Akhirnya, cukup terapkan dan simpan. Ingatlah untuk tidak lupa untuk menyimpan aplikasi, jika tidak, itu akan sia -sia.
Selanjutnya, kami akan membuat proyek baru, pertama masukkan nama proyek, pilih proyek Maven, ok
Pilih manajemen kode sumber, karena kami adalah proyek perusahaan, bukan open source, gunakan svn, pilih subversi untuk mengonfigurasi svn
URL adalah alamat SVN Anda, dan kredensial adalah kata sandi akun
Lalu pergi ke langkah pra, hal ini adalah operasi apa yang dibutuhkan sebelum kemasan. Misalnya, proyek kami saat ini perlu menyalin file log4j.xml, dll. Anda dapat menulis skrip windows atau shell sesuai dengan lingkungan
Jika tidak ada operasi, tidak perlu mencocokkannya.
Posting skrip saya untuk referensi Anda. Saya akan menggunakan xxx untuk mengganti bagian yang relevan.
@echo offrem set variabel :: app.xxx app.xxx kode lokal dan direktori set app.xxx = "d: /svn/svn.173.xxx/app.xxx/" :: home.ommm Log4j.xml variabel mulai :: home_omm_log4j_goals_mmm PATH TO THE THE PATH THE THE PATH. Home_omm_log4j_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/home.ommm/src/main/resources" :: home_omm_log4j The lath of the log4j.xml lingkungan uji home.ommm Home_omm_log4j = "d: /svn/svn.173.xxx/app.xxx/config/home.ommm/sh_test/resources" :: home.ommm start starpath.xml variabel homexin. home.weixin's log4j.xml home_weixin_log4j_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/home.weixin/src/main/resources" :: home_weixin_log4j The Path the Path dari The Log4J.Resources ":: home_weixin_log4j The Path the Path the Log4j.Resources" :: home_weixin_log4j The Path the Log4J. 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" :: homexin_config.js home.mommm's home_weixin_jon.jigon.jkon.jscon.json.js Home_weixin_config.js = "d: /svn/svn.173.xxx/app.xxx/config/home.weixin/sh_test/webapp/module/js" :: homexin variabel end :: layanan variabel mulai :: service_log4j_goals_path the path4 TO. Service_log4j_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/service/src/main/resources" :: service_log4j The Log4j.xml Lingkungan uji Layanan disetel disetel Service_log4j = "d: /svn/svn.173.xxx/app.xxx/config/service/sh_test/resources" :: service_application_resources_all_goals_path The Application-Sources-all.xml ditetapkan Service_application_resources_all_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/service/src/main/resources/config/spring" :: service_application_resources_all aplikasi-sources-all.all.xmlication Service_application_resources_all = "d: /svn/svn.173.xxx/app.xxx/config/service/sh_test/resources/config/spring" :: layanan variabel end :: service.refresh variabel start :: service_refresh_log4j_pathe.refreshy variabel start :: service_refreshesh_log4j_pathe.refreshy variable start :: service_refreshesh_log4je.refreshy variable start :: service_refreshesh_log4je.refreshy variable start :: Service_RefResh_LOGRESHM. service.refresh service_refresh_log4j_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/service.refresh/src/main/resources" :: service_refresh_log4j Layanan layanan layanan layanan "servic_refresh_log4j layanan Service_refresh_log4j = "d: /svn/svn.173.xxx/app.xxx/config/service.refresh/sh_test/resources" :: service_refresh_application_resources_all_goals_path Path to store Application-Resources-all-all. 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_ALL application-resources-all.xml test environment path set Service_refresh_application_resources_all = "d: /svn/svn.173.xxx/app.xxx/config/service.refresh/sh_test/resources/config/spring" :: service.refresh variabel end :: Hakim Log4j.spring ":: service.refresh variabel end :: Hakim apakah log4j.spring": %Home_omm_log4j_goals_path %/log4j.xml (del %home_omm_log4j_goals_path %/log4j.xml) cd %home_omm_log4j_goals_path %copy %home_omm_log4j %/log4j.xml log4j.xml :::::: :: :: :: log4j.log4j %/log4j.xml log4j.xml :::: :: :: :: log4j.xml.xml ::xml ::xml ::xml :: log4j.xml ::xml :: log4j.xml ::xml ::xml .: %HOME_WEIXIN_LOG4J_GOALS_PATH%/log4j.xml (del %HOME_WEIXIN_LOG4J_GOALS_PATH%/log4j.xml)cd %HOME_WEIXIN_LOG4J_GOALS_PATH%/log4j.xml)cd %HOME_WEIXIN_LOG4J_GOALS_PATH%copy %Home_weixin_log4j %/log4j.xml log4j.xml :: menilai apakah file config.js home.weixin ada jika ada %home_weixin_config.js_goals_path %/config.js (del %home_weixin_config.js_goals_path %/del %home_weixin_config.js_goals_path %/del (del %)) %HOME_WEIXIN_CONFIG.JS_GOALS_PATH%copy %HOME_WEIXIN_CONFIG.JS%/config.js config.js::Judge whether the config.xml file of service exists if exist %SERVICE_LOG4J_GOALS_PATH%/log4j.xml (del %SERVICE_LOG4J_GOALS_PATH%/log4j.xml)cd %Service_log4j_goals_path %copy %service_log4j %/log4j.xml log4j.xml :: menilai apakah file aplikasi-sumber daya layanan-semua %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-ourources-all.xml :: ifess ifesse.seAlsOls.xml Application-resourcources-all.xml: ifessml.se-resources-all.xml Application-ourources-Olall. %SERVICE_REFRESH_LOG4J_GOALS_PATH%/log4j.xml (del %SERVICE_REFRESH_LOG4J_GOALS_PATH%/log4j.xml)cd %SERVICE_REFRESH_LOG4J_GOALS_PATH%copy %SERVICE_REFRESH_LOG4J%/log4j.xml log4j.xml::Judge whether the Aplikasi-Sumber-All.xml File layanan. %Service_refresh_application_resources_all_goals_path %/application-resources-all.xml) cd %service_refresh_application_resources_all_goals_path %copy %service_refresh_application_resources_all %/aplikasi-resources-all.
Build telah dikompilasi, menentukan lokasi POM dan perintah MVN. Ngomong -ngomong, Anda juga dapat mengonfigurasi ruang kerja di level lanjutan, yang tidak cocok dengan default di direktori instalasi Jenkins.
Setelah membangun, operasi adalah tempat untuk meletakkannya setelah paket selesai. Pilih gambar berikut
Setelah operasi konstruksi ini, kami menggunakan penyebaran panas Tomcat. Anda dapat merujuk pada artikel saya sebelumnya: Penempatan Panas Tomcat
Perang/Telinga: Alamat Paket Perang
Konteks: Apakah nama paket yang digunakan
Nama pengguna/kata sandi mengacu pada akun/kata sandi untuk penempatan panas tomcat
URL: Antarmuka Tomcat, seperti: http://172.16.101.71:8180/
5. Mulai membangun
Setelah banyak berbicara, akhirnya saatnya untuk datang. Pengoperasian tombol akhirnya tiba. Anda dapat melihat proyek kami saat Anda kembali ke beranda Jenkins.
Setelah membangun, klik Status Eksekusi Bangun di sudut kiri bawah untuk melihat bahwa proyek kami sedang dibangun. Klik pada nama proyek yang akan dimasukkan
Pilih Konsol untuk melihat pesan log atau kesalahan yang dicetak selama proses konstruksi.
3. Masalah yang ada
Masalah Peran Jenkins, karena dirilis, melibatkan lingkungan produksi. Semua pengguna tidak dapat memiliki izin untuk menggunakan lingkungan produksi. Jika ada yang secara tidak sengaja mengkliknya. Konsekuensinya ... tidak bisa mempercayainya.
Solusi: Pasang plug-in strategi otorisasi berbasis peran, lihat langkah-langkah yang tersisa: http://www.cnblogs.com/zz0412/p/jenkins_jj_14.html. Saya tidak detail.
Masalah penempatan tomcat panas, naik dan meluap setelah digunakan beberapa kali, berhenti menjalankan atau melaporkan kesalahan. Saya memeriksa masalah penyebaran panas itu sendiri secara online, dan saya mencari solusi ...
Solusi: Ada masalah dengan penyebaran panas Tomcat itu sendiri, dan lingkungan produksi umumnya tidak mengadopsi metode penyebaran panas. Saat ini, karena lingkungan pengujian saya menggunakan sistem Windows Server 2008, ia mengadopsi metode penyebaran panas. Masalahnya masih ada. Namun, saya telah membaca posting yang dapat diselesaikan dengan menggunakan perintah Windows Batch, yang merupakan perintah BAT, tetapi saya belum mempelajarinya secara mendalam. Dalam sistem Linux di lingkungan produksi, saat ini saya menggunakan publikasi melalui plug-in SSH. Langkah -langkah spesifik adalah menambahkan langkah -langkah di bawah ini ke konfigurasi.
1. Dalam Manajemen Sistem-》 Pengaturan Sistem, Temukan Publikasikan melalui SSH dan masukkan:
2. Konfigurasikan langkah posting
Di sini kita akan melanjutkan dengan proyek di atas. Konfigurasi ini hanya akan ditampilkan setelah plug-in di atas diinstal!
Transfer File SetSource: Menunjukkan paket perang lokal dan jalur untuk mengunggah, Anda dapat pergi ke ruang kerja untuk melihatnya.
Hapus awalan: berarti folder yang akan dihapus saat mengunggah, yaitu, hanya paket perang yang diunggah
Bor jarak jauh: berarti jalur selama eksekusi, yang setara dengan mengunggah paket perang di sini
Exec Commad: Perintah yang akan dieksekusi
Seperti yang ditunjukkan pada gambar, paket perang akan ditempatkan di folder home/admin, dan kemudian saya akan menjalankan perintah shell yang saya tulis. Ini terutama melibatkan menghentikan Tomcat, mendukung paket perang asli, menghapus paket perang asli di bawah WebApp, menyalin paket perang baru di bawah rumah/admin, memulai Tomcat, dan kemudian selesai. Ini menghindari masalah crash server yang disebabkan oleh overflow memori penyebaran panas.
Referensi skrip:
#!/bin/sh #tomcat_home = "/usr/java/tomcat/apache-tomcat-7.0.67/" id = `ps -ef | Grep Java | grep tomcat | awk '{cetak $ 2}' `echo $ id echo" bunuh tomcat "kill -9 $ id echo" file war penghapus "cd" $ tomcat_home "/webapps rm -rf javaweb-0.0.1-snapshot rm -rf javaw-rm.0.1psnoP.war" snapshot rm -rf javaw-0.1pappe.1-snapshot rm -rf javaw-echaP.0.1psnoP. /home/lin cp javaweb-0.0.1-snapshot.war "$ tomcat_home"/cd webapps "$ tomcat_home"/bin echo "start tomcat" ./startup.shMasalah Plugin Penyebaran, Plugin Plugin Penyebaran ke Container yang digunakan di atas digunakan untuk mengimplementasikan penyebaran panas, tetapi batas plugin Deploy bahwa satu proyek hanya dapat menggunakan satu paket perang. Proyek saya adalah bahwa dua perang terpisah dari ujung depan dan belakang proyek tidak dapat dibangun dua kali,  ̄へ ̄.
Solusi: Cobalah untuk tidak menggunakan penyebaran panas. Jika lingkungan pengujian digunakan sementara, saya saat ini sedang membangun dua proyek baru dan hanya menyusun satu paket perang sekaligus.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.