การปรับใช้อย่างต่อเนื่องเป็นแนวทางพิเศษในการพัฒนาซอฟต์แวร์ที่ใช้ในการปรับใช้ฟังก์ชันต่างๆ ในซอฟต์แวร์ได้อย่างรวดเร็ว ปลอดภัย และมีประสิทธิภาพ
แนวคิดหลักคือการสร้างกระบวนการอัตโนมัติที่เชื่อถือได้ซึ่งช่วยให้นักพัฒนาสามารถส่งมอบผลิตภัณฑ์สำเร็จรูปให้กับผู้ใช้ได้อย่างรวดเร็ว ในขณะเดียวกันก็มีการเปลี่ยนแปลงการผลิตอย่างต่อเนื่องซึ่งเรียกว่าไปป์ไลน์การจัดส่งแบบต่อเนื่อง (CD Pipeline)
Skillbox แนะนำ: หลักสูตรภาคปฏิบัติ
"นักพัฒนามือถือ PRO" .เราเตือนคุณ: สำหรับผู้อ่าน "Habr" ทุกคน - ส่วนลด 10 rubles เมื่อลงทะเบียนในหลักสูตร Skillbox ใด ๆ โดยใช้รหัสส่งเสริมการขาย "Habr"
เพื่อควบคุมโฟลว์ คุณสามารถใช้เครื่องมือที่หลากหลาย รวมถึงทั้งแบบชำระเงินและฟรีทั้งหมด บทความนี้จะอธิบายโซลูชันยอดนิยมสามประการในหมู่นักพัฒนาซึ่งจะเป็นประโยชน์กับโปรแกรมเมอร์ทุกคน
เจนกิ้นส์
เซิร์ฟเวอร์อัตโนมัติแบบโอเพ่นซอร์สที่สมบูรณ์ในตัวเอง การทำงานอัตโนมัติทุกประเภทที่เกี่ยวข้องกับการสร้าง การทดสอบ การจัดส่ง หรือการปรับใช้ซอฟต์แวร์เป็นสิ่งที่คุ้มค่า
ข้อกำหนดขั้นต่ำของพีซี:
- RAM 256 MB พื้นที่ไฟล์ 1 GB
เหมาะสมที่สุด:
- RAM 1 GB, ฮาร์ดไดรฟ์ 50 GB.
ในการทำงานคุณจะต้องมีซอฟต์แวร์เพิ่มเติม - Java Runtime Environment (JRE) เวอร์ชัน 8
สถาปัตยกรรม (การคำนวณแบบกระจาย) มีลักษณะดังนี้:
Jenkins Server คือการติดตั้งที่รับผิดชอบในการโฮสต์ GUI รวมถึงการจัดระเบียบและดำเนินการบิลด์ทั้งหมด
Jenkins Node/Slave/Build Server - อุปกรณ์ที่สามารถกำหนดค่าให้ทำงาน build ในนามของ Master (โหนดหลัก)
การติดตั้งสำหรับ Linux
ก่อนอื่นคุณต้องเพิ่มพื้นที่เก็บข้อมูล Jenkins เข้ากับระบบ:
ซีดี /tmp && wget -q -O —
อัปเดตที่เก็บแพ็กเกจ:
sudo apt update
ติดตั้งเจนกินส์:
sudo apt ติดตั้งเจนกินส์
หลังจากนี้ Jenkins จะพร้อมใช้งานในระบบผ่านพอร์ตเริ่มต้น 8080
หากต้องการตรวจสอบฟังก์ชันการทำงาน คุณต้องเปิดที่อยู่ในเบราว์เซอร์
ตอนนี้ทุกอย่างพร้อมแล้ว คุณสามารถเริ่มสร้างโฟลว์ CI/CD ได้ อินเทอร์เฟซแบบกราฟิกของโต๊ะทำงานมีลักษณะดังนี้:
จุดแข็งของเจนกินส์:
- ความสามารถในการปรับขนาดโดยสถาปัตยกรรม Master/Slave
- ความพร้อมใช้งานของ REST XML/JSON API;
- ความสามารถในการเชื่อมต่อส่วนขยายจำนวนมากด้วยปลั๊กอิน
- ชุมชนที่กระตือรือร้นและพัฒนาอย่างต่อเนื่อง
จุดด้อย:
- ไม่มีบล็อกการวิเคราะห์
- ส่วนต่อประสานที่ใช้งานง่ายไม่มากนัก
TeamCity
การพัฒนาเชิงพาณิชย์จาก JetBrains เซิร์ฟเวอร์นั้นดีด้วยการตั้งค่าที่เรียบง่ายและอินเทอร์เฟซที่ยอดเยี่ยม การกำหนดค่าเริ่มต้นมีฟังก์ชันจำนวนมาก และจำนวนปลั๊กอินที่มีอยู่ก็เพิ่มขึ้นอย่างต่อเนื่อง
ต้องใช้ Java Runtime Environment (JRE) เวอร์ชัน 8
ข้อกำหนดฮาร์ดแวร์เซิร์ฟเวอร์ไม่สำคัญ:
- แรม - 3,2GB;
- โปรเซสเซอร์ - ดูอัลคอร์ 3,2 GHz;
- ช่องทางการสื่อสารที่มีความจุ 1 Gb/s
เซิร์ฟเวอร์ช่วยให้คุณได้รับประสิทธิภาพสูง:
- 60 โปรเจ็กต์พร้อมการกำหนดค่าบิลด์ 300 รายการ
- การจัดสรร 2 MB สำหรับบันทึกการสร้าง
- 50 ตัวแทนการสร้าง;
- ความสามารถในการทำงานกับผู้ใช้ 50 คนในเวอร์ชันเว็บและผู้ใช้ 30 คนใน IDE
- การเชื่อมต่อ VCS ภายนอก 100 รายการ โดยทั่วไปคือ Perforce และ Subversion เวลาการเปลี่ยนแปลงเฉลี่ยคือ 120 วินาที
- การแก้ไขมากกว่า 150 รายการต่อวัน
- การทำงานกับฐานข้อมูลบนเซิร์ฟเวอร์เดียว
- การตั้งค่ากระบวนการเซิร์ฟเวอร์ JVM: -Xmx1100m -XX:MaxPermSize=120m
ข้อกำหนดของตัวแทนจะขึ้นอยู่กับแอสเซมบลีที่รันอยู่ ภารกิจหลักของเซิร์ฟเวอร์คือการตรวจสอบเอเจนต์ที่เชื่อมต่อทั้งหมดและกระจายแอสเซมบลีที่อยู่ในคิวไปยังเอเจนต์เหล่านี้ตามความต้องการความเข้ากันได้ โดยการรายงานผลลัพธ์ เอเจนต์มาในแพลตฟอร์มและระบบปฏิบัติการที่หลากหลาย รวมถึงสภาพแวดล้อมที่กำหนดค่าไว้ล่วงหน้า
ข้อมูลทั้งหมดเกี่ยวกับผลลัพธ์ของบิลด์จะถูกจัดเก็บไว้ในฐานข้อมูล โดยหลักๆ แล้วนี่คือประวัติและข้อมูลอื่นที่คล้ายคลึงกัน การเปลี่ยนแปลง VCS เอเจนต์ คิวบิลด์ บัญชีผู้ใช้ และการอนุญาต ฐานข้อมูลไม่ได้รวมเฉพาะบันทึกการสร้างและส่วนต่างๆ เท่านั้น
การติดตั้งสำหรับ Linux
หากต้องการติดตั้ง TeamCity ด้วยคอนเทนเนอร์เซิร์ฟเล็ต Tomcat ด้วยตนเอง คุณควรใช้ไฟล์เก็บถาวร TeamCity: TeamCity .tar.gz ดาวน์โหลด
tar -xfz TeamCity.tar.gz
/bin/runAll. ช [เริ่ม|หยุด]
เมื่อคุณเริ่มต้นครั้งแรก คุณจะต้องเลือกประเภทของฐานข้อมูลที่จะจัดเก็บข้อมูลแอสเซมบลี
การกำหนดค่าเริ่มต้นทำงานอยู่
จุดแข็งของทีมซิตี้:
- ติดตั้งง่าย;
- อินเตอร์เฟซที่ใช้งานง่าย;
- ฟังก์ชั่นในตัวจำนวนมาก
- สนับสนุน;
- มี RESTful API;
- เอกสารที่ดี
- การรักษาความปลอดภัยที่ดี
จุดด้อย:
- บูรณาการอย่างจำกัด;
- นี่เป็นเครื่องมือที่ต้องชำระเงิน
- ชุมชนเล็กๆ (ซึ่งกำลังเติบโต)
โกซีดี
โปรเจ็กต์โอเพ่นซอร์สที่ต้องการ Java Runtime Environment (JRE) เวอร์ชัน 8 สำหรับการติดตั้งและการดำเนินการ
ความต้องการของระบบ:
- RAM - ขั้นต่ำ 1 GB ยิ่งมากยิ่งดี
- โปรเซสเซอร์ - ดูอัลคอร์พร้อมความถี่คอร์ 2 GHz;
- ฮาร์ดไดรฟ์ - พื้นที่ว่างอย่างน้อย 1 GB
ตัวแทน:
- RAM - อย่างน้อย 128 MB ยิ่งมากยิ่งดี
- โปรเซสเซอร์ - อย่างน้อย 2 GHz
เซิร์ฟเวอร์รับประกันการทำงานของตัวแทนและมอบอินเทอร์เฟซที่สะดวกสำหรับผู้ใช้:
ขั้นตอน/งาน/งาน:
การติดตั้งสำหรับ Linux
ก้อง "deb
โค้ง
เพิ่ม-apt-พื้นที่เก็บข้อมูล ppa:openjdk-r/ppa
ปรับปรุง apt-get
apt-get ติดตั้ง -y openjdk-8-jre
apt-get ติดตั้ง go-server
apt-get ติดตั้ง go-agent
/etc/init.d/go-server [เริ่ม|หยุด|สถานะ|รีสตาร์ท]
/etc/init.d/go-agent [เริ่ม|หยุด|สถานะ|รีสตาร์ท]
โดยค่าเริ่มต้น GoCd จะทำงานบน
จุดแข็งของ GoCd:
- โอเพ่นซอร์ส;
- การติดตั้งและการกำหนดค่าอย่างง่าย
- เอกสารที่ดี
- ส่วนต่อประสานผู้ใช้ที่ยอดเยี่ยม:
- ความสามารถในการแสดงเส้นทางการปรับใช้ GoCD ทีละขั้นตอนในมุมมองเดียว:
- การแสดงโครงสร้างท่อที่ดีเยี่ยม:
- GoCD ปรับเวิร์กโฟลว์ซีดีให้เหมาะสมในสภาพแวดล้อมคลาวด์ยอดนิยม รวมถึง Docker, AWS;
- เครื่องมือนี้ทำให้สามารถแก้ไขปัญหาในไปป์ไลน์ได้ ซึ่งมีการติดตามทุกการเปลี่ยนแปลงตั้งแต่การคอมมิตไปจนถึงการปรับใช้แบบเรียลไทม์
จุดด้อย:
- จำเป็นต้องมีตัวแทนอย่างน้อยหนึ่งคน
- ไม่มีคอนโซลที่จะแสดงงานที่เสร็จสมบูรณ์ทั้งหมด
- เพื่อดำเนินการแต่ละคำสั่ง คุณต้องสร้างหนึ่งงานสำหรับการกำหนดค่าไปป์ไลน์
- หากต้องการติดตั้งปลั๊กอิน คุณต้องย้ายไฟล์ .jar ไปไว้ /plugins/external และรีสตาร์ทเซิร์ฟเวอร์
- ชุมชนที่ค่อนข้างเล็ก
สรุป
นี่เป็นเพียงสามเครื่องมือเท่านั้น จริงๆ แล้วยังมีเครื่องมืออื่นๆ อีกมากมาย เป็นการยากที่จะเลือก ดังนั้นคุณต้องใส่ใจกับแง่มุมเพิ่มเติมอย่างแน่นอน
โค้ดโอเพ่นซอร์สของเครื่องมือทำให้สามารถเข้าใจว่ามันคืออะไร และยังเพิ่มคุณสมบัติใหม่ๆ ได้เร็วขึ้นอีกด้วย แต่หากบางอย่างไม่ได้ผล คุณจะต้องพึ่งพาตัวเองและความช่วยเหลือจากชุมชนเท่านั้น เครื่องมือแบบชำระเงินให้การสนับสนุนที่บางครั้งอาจมีความสำคัญ
หากการรักษาความปลอดภัยเป็นสิ่งสำคัญที่สุดของคุณ ก็คุ้มค่าที่จะใช้เครื่องมือในเครื่อง ถ้าไม่เช่นนั้น การเลือกโซลูชัน SaaS ก็เป็นตัวเลือกที่ดี
และสุดท้าย เพื่อให้มั่นใจว่ากระบวนการปรับใช้อย่างต่อเนื่องมีประสิทธิผลอย่างแท้จริง คุณจะต้องกำหนดเกณฑ์ที่ข้อมูลเฉพาะเจาะจงจะช่วยให้คุณสามารถจำกัดช่วงของเครื่องมือที่มีอยู่ให้แคบลงได้
Skillbox แนะนำ:
- หลักสูตรภาคปฏิบัติสองปี
"ฉันเป็นนักพัฒนาเว็บ PRO" .- คอร์สออนไลน์
"นักพัฒนา C#" .- หลักสูตรปีปฏิบัติ
"นักพัฒนา PHP จาก 0 ถึง PRO" .
ที่มา: will.com