เริ่มต้น Jenkins part 5: ปลาหมึกกับพ่อบ้านเลี้ยงแมว
โค้ดอยู่กับ Github เมื่อไรก็ตามที่ change ปลาหมึกจะบอกกับพ่อบ้านว่าจัดการต่อได้ พ่อบ้านก็ทำตามคำสั่งที่เราแจ้งแก่เขาไว้ (CI) ได้ .war แล้วจึงโยนขึ้น Apache Tomcat (CD)
ความเดิมจากตอนที่แล้ว
Github
เชื่อว่าเพื่อนๆหลายคนรู้จักเป็นอย่างดี Github คือแหล่งเก็บ Git (.git) บนอินเตอร์เน็ตนั่นแหละครับ เรียกว่า repository
Github: Create Repository
ขั้นตอนต่อจากนี้เราต้องนำโปรเจกต์ที่สร้างไว้ก่อนหน้านี้ HelloJenkins มาไว้ที่นี่
สร้าง repository ใหม่ ผมตั้งชื่อว่า hello-jenkins ง่ายๆก่อนนะครับให้เป็น public repository ด้วย
เราจะได้ path ที่เก็บ .git นี้มา ผมได้หน้าตาแบบนี้
https://github.com/proSbeginner/hello-jenkins.git
กลับไปเปิด HelloJenkins ของเรา
เราต้องเพิ่ม .git ให้กับโปรเจกต์นี้ก่อน อันดับแรกดูก่อนว่าเครื่องคอมฯของเรามี Git ติดตั้งไว้หรือยัง ถ้ายังก็ติดตั้ง
Google ไปว่า
git download
สำหรับคนที่มีอยู่แล้ว
git --version
git version 2.23.0
ที่โปรเจกต์ พิมพ์
git init
จากนั้นสร้างไฟล์ชื่อ .gitignore
touch .gitignore
ไฟล์นี้ใช้เพื่อบอกกับ Git ว่าไม่ต้องสนใจ folder หรือไฟล์ไหนบ้าง
อ่านเรื่อง Git เพิ่มเติม (ของผมเอง สมัยเด็กน้อย)
เนื้อหาของ .gitignore ให้ค้น Google ถามชาวบ้านไป
maven project .gitignore
ผมได้ประมาณนี้
จากนั้น commit ไฟล์ที่เหลือ
จำคำสั่งไม่ได้ ขอกลับไปดูที่ Github หน่อย
เพื่อบอกว่า .git บน repository อยู่ที่ไหน
git remote add origin https://github.com/proSbeginner/hello-jenkins.git
เพื่อ push โค้ดของเราขึ้นไป
git push -u origin master
ตามแผนการ (อันชั่วร้าย) ทุกประการในขณะนี้มีโค้ดแล้วก็ push ไปไว้บน Github
Jenkins: Maven Plugin
ที่ Jenkins บน Amazon EC2 เนื่องจากเรามีโปรเจกต์ Maven แล้ว ก็ต้องเพิ่ม Maven Plugin เข้าไปด้วย
เมนู Manage Jenkins เลือก Manage Plugin เลือกแท็บ Available แล้ว Filter หา maven
เลือก Maven Integration
กดปุ่ม Install without restart คอยจนกว่าจะเสร็จ
Jenkins: Create Maven Project
ถัดมาคือการสร้างโปรเจกต์ใหม่บน Jenkins โดยเลือกประเภทเป็น Maven
วาง public git repository url ที่ได้สร้างไว้ลงไป
บอกให้ mvn ทำคำสั่ง package
บันทึกแล้วกดปุ่ม Build Now
หากไม่มีอะไรผิดพลาดก็จะได้ของ
กระบวนการนี้อยู่ส่วนไหนของภาพ? อยู่ตรงนี้ครับ
เอาล่ะ ใกล้ความจริงแล้ว ต่อไปเราควรเตรียม server อีกตัวเพื่อทำงานของ Apache Tomcat เพื่อที่จะได้นำ .war นี้ไป deploy เหมือนกับที่เราได้ทำบนเครื่อง local ที่ผ่านมา ต่างกันแค่มันจะเป็นไปโดยอัตโนมัติ
และควรทราบว่าแต่ละ instance ที่เราใช้บริการของ Amazon EC2 นี้ก็แยกจากกัน นั่นหมายความว่ามัน (น่าจะ) ใช้ทรัพยากรแยกจากกันด้วย เราจึงจะสร้าง instance ตัวใหม่ที่ทำงานของ Apache Tomcat อย่างเดียวเลย
Apache Tomcat: New Instance
ที่หน้า AWS Management Console (ถ้ายังจำได้) เลือก EC2
เลือก Instances แล้วกดปุ่ม Launch Instance
ลองมาเล่นตัวนี้บ้าง Amazon Linux AMI 2018.X.X เห็นว่ามีเครื่องมือติดตั้งไว้ให้หลายตัว
เราก็ขอเลือกแบบฟรีเช่นเดิมนะครับ
กดปุ่ม next ทางขวาล่างไปเรื่อยๆจนกว่าจะถึงขึ้นตอนที่ 5
กดปุ่ม Add Tag
ตรง Key ใส่ Name ตรง Value ผมใส่ apache-tomcat
กด next
ขอให้เลือก security group เดิมกับตัวก่อน
กดปุ่ม Review and Launch
เลือก key pair ที่มีอยู่แล้ว (จำไม่ได้ให้ย้อนไปอ่าน part แรก)
ทุกอย่างเรียบร้อยก็ Launch Instances ได้
ระหว่างนี้คอยไปก่อน จนกว่า Instance State จะเปลี่ยนเป็น running
Apache Tomcat: Setup
เปิด Terminal แล้ว remote ไปยัง Public IP ของ apache-tomcat instance ข้างต้น (จำไม่ได้ให้ย้อนไปอ่าน part แรก)
ผมบันทึกไว้ที่ Download ก็จัด
sudo ssh -i ~/Downloads/ec2-red-hat-t2micro-devops.pem ec2-user@X.X.X.X
Amazon Linux AMI 2018.X.X บอกว่าได้ลงจาวาให้แล้ว เราก็ตรวจดูหน่อย
java -versoin
java version “1.7.0_231”
OpenJDK Runtime Environment (amzn-2.6.19.1.80.amzn1-x86_64 u231-b01)
OpenJDK 64-Bit Server VM (build 24.231-b01, mixed mode)
น่าจะใช้ได้แหละ
ถัดไปก็หาแมวให้พ่อบ้านของเรา
Google ไปว่า
download apache tomcat tar.gz
ที่ local เราใช้เวอร์ชัน 7 ใช่ไหม งั้นเราลองหาเวอร์ชัน 8 มาใช้กับ server ใหม่นี่ดีกว่า
คัดลอกลิงก์มา (ทำเหมืนตอนติดตั้ง Maven)
เปลี่ยนตนเป็ root แล้วเข้าไปที่ opt folder
sudo su -cd /opt
จากนั้นดึง
wget https://www-eu.apache.org/dist/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49.tar.gz
แล้วแกะ
tar -zxvf apache-tomcat-8.5.49.tar.gz
เข้าไป
cd apache-tomcat-8.5.49/bin
มองหาไฟล์ startup.sh แล้วรัน
./startup.sh
ผลลัพธ์
/opt/apache-tomcat-8.5.49/bin/bootstrap.jar:/opt/apache-tomcat-8.5.49/bin/tomcat-juli.jar
Tomcat started.
คัดลอก Public IP ของ server instance ไปวางที่ address bar ของ Browser อย่าลืมระบุ port 8080 แล้ว enter
เท่านี้พ่อบ้านก็มีแมวเลี้ยงแล้ว หึหึหึ
ก็ขอจบ part นี้ไว้เท่านี้ครับ ถัดไปเรามา config เจ้าแมวให้รู้จักปลา เอ้ย! ไฟล์ .war กัน